reading textbox values from repeater

hi,
I want to read back values in a textbox form a repeater. Initally the textboxes gat their values from a database...

I want to read all the values and then when one update button (outside the repeater) is pressed so it can recalcuate and add records back to the database. (I think i can acheive this part via sql) as long as i had the new qty in the textbox and an id number for the row to update... any ideas... my repeater looks like this...i guess the id can be retreived by tying each textbox to a unique ID <id=databinder.eval()..

<ItemTemplate>
      <table width="700">                                                                                                <tr>
                  <td width="175" class="lblBlue"><%# trimName(databinder.eval(Container.dataitem, "ProductName"))%></td>
                  <td width="75" class="lblBlue"><%# databinder.eval(Container.dataitem, "strength") %></td>
                  <td width="75" class="lblBlue"><%# databinder.eval(Container.dataitem, "pacSize") %></td>
                  <td width="75" class="lblBlue"><%# databinder.eval(Container.dataitem, "StorageForm") %></td>
                  <td width="50" class="lblBlue" align="center">
                  <asp:TextBox Runat=server Width=15 Text='<%# databinder.eval(Container.dataitem, "qty") %>' MaxLength=1>
                  </asp:TextBox></td>
                  <td width="75" class="lblBlue"><%#(databinder.eval(Container.dataitem, "Newprice"))%>
                  <td width="50" class="lblBlue"><%# databinder.eval(Container.dataitem, "subtotal") %><br>
                  </td>
                  <td width="50" class="sideMenu1Txt">
                  <asp:linkbutton Runat="server" CommandName="delitem" CommandArgument='<%# databinder.eval(Container.dataitem, "Productid") '>remove</asp:linkbutton></td>
            </tr>
      </table>
</ItemTemplate>
rsbadhanAsked:
Who is Participating?
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

AerosSagaCommented:
Dim _myUC_SrchTxt As TextBox = Page.FindControl("UCtlsearch1_srchTxt")
srchTxt = _myUC_SrchTxt.Text
0
tusharashahCommented:
You can use following code for looping in Repeater in adding value 1 by 1:

Dim sum As Double
For Each ri As RepeaterItem In Repeater1.Items

        Dim _tb as TextBox = CType(ri.FindControl("TextBox1"), Repeater)

        sum = sum + CType( _tb.Text, Double )

Next


-tushar
0
mmarinovCommented:
Hi rsbadhan,

for ( int index=0; index < repeaterId.Items.Count; index++ )
{  
    TextBox tb = (TextBox)repeaterId.Items[index].FindControl("TextBoxID");
}

but you have to declare ID property of the TextBox control
<asp:TextBox Runat=server Width=15 Text='<%# databinder.eval(Container.dataitem, "qty") %>' MaxLength=1 ID="yourID">
               </asp:TextBox>

B..M
0
Cloud Class® Course: MCSA MCSE Windows Server 2012

This course teaches how to install and configure Windows Server 2012 R2.  It is the first step on your path to becoming a Microsoft Certified Solutions Expert (MCSE).

rsbadhanAuthor Commented:
UCtlsearch1_srchTxt .... this will be my productID? i.e id of the textbox
0
rsbadhanAuthor Commented:
tushar
getting a symtax error ...ri is not declared...
RS
0
tusharashahCommented:
Correction:

Dim sum As Double
For Each ri As RepeaterItem In Repeater1.Items
        Dim _tb as TextBox = CType(ri.FindControl("TextBox1"), TextBox) ' Corrected this line
        sum = sum + CType( _tb.Text, Double )
Next

double sum;
foreach (RepeaterItem ri in Repeater1.Items) {
 TextBox _tb = ((Repeater)ri.FindControl("TextBox1"));
 sum = sum + ((double)_tb.Text);
}
0
tusharashahCommented:
Again in C#

double sum;
foreach (RepeaterItem ri in Repeater1.Items) {
 TextBox _tb = ((TextBox)ri.FindControl("TextBox1"));
 sum = sum + ((double)_tb.Text);
}

-tushar
0
rsbadhanAuthor Commented:
VB code behind is fine... where do i declare ri ?
think i just need to declare it and it will be exaclty waht i need...
RS
0
tusharashahCommented:
When you use For Each ri As ReapeterItem then ri is declared in the For loop itself...

but since you are getting such error.. you can try declareing it before for each loop...
--------------------------------------------------------------------------------
Dim sum As Double
Dim ri As RepeaterItem
For Each ri In Repeater1.Items
        Dim _tb as TextBox = CType( ri.FindControl("TextBox1"), TextBox) ' Corrected this line
        sum = sum + CType( _tb.Text, Double )
Next
--------------------------------------------------------------------------------

-tushar
0
tusharashahCommented:
Or try like following

--------------------------------------------------------------------------------
Dim sum As Double
Dim i As Integer = 0
While i < Repeater1.Items.Count
 Dim _tb As TextBox = CType(Repeater1.Items(index).FindControl("TextBox1"), TextBox)
 sum = sum + CType(_tb.Text, Double)
 i += 1
End While
--------------------------------------------------------------------------------

-tushar
0

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
rsbadhanAuthor Commented:
ok problem i am having is...

1. i have declared the <asp:textbox id=textbox1 .... ( *********is that correct?)
2. Does it need autopostback=true for the value change to be recognised? (customers can change theis value, which is why it has to recalculate)
3. i need basically an array of all the values in the repeater.. old and new..(ALL the ones in the textboxes in the repeater)

it reads old values but not the changed ones

Thanks for you sticking with this.

RS
0
rsbadhanAuthor Commented:
thi sis what i have so far

<asp:TextBox ID=textbox1 Runat=server Width=15 Text='<%# databinder.eval(Container.dataitem, "qty") %>' MaxLength=1>
                                                                                                                        
</asp:TextBox></td>
   

Sub readTxtBox()
        Dim x As Integer
        Dim ri As RepeaterItem
        x = Repeater1.Items.Count
        Dim qtys(x) As String
        For Each ri In Repeater1.Items
            Dim _tb As TextBox = CType(ri.FindControl("TextBox1"), TextBox)
            qtys(x) = _tb.Text
            x = +1
        Next
    End Sub

but it only reads the value that is first in the textbox..ie the one from the database...not the one the user is entering

0
rsbadhanAuthor Commented:
ok, thanks for your help.. the issue is postback, i have to load the repeater only once if not postback then it works fine
0
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
ASP.NET

From novice to tech pro — start learning today.

Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.