Solved

reading textbox values from repeater

Posted on 2004-10-21
499 Views
Last Modified: 2008-02-01
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>
0
Question by:rsbadhan
    13 Comments
     
    LVL 17

    Expert Comment

    by:AerosSaga
    Dim _myUC_SrchTxt As TextBox = Page.FindControl("UCtlsearch1_srchTxt")
    srchTxt = _myUC_SrchTxt.Text
    0
     
    LVL 18

    Expert Comment

    by:tusharashah
    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
     
    LVL 28

    Expert Comment

    by:mmarinov
    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
     

    Author Comment

    by:rsbadhan
    UCtlsearch1_srchTxt .... this will be my productID? i.e id of the textbox
    0
     

    Author Comment

    by:rsbadhan
    tushar
    getting a symtax error ...ri is not declared...
    RS
    0
     
    LVL 18

    Expert Comment

    by:tusharashah
    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
     
    LVL 18

    Expert Comment

    by:tusharashah
    Again in C#

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

    -tushar
    0
     

    Author Comment

    by:rsbadhan
    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
     
    LVL 18

    Expert Comment

    by:tusharashah
    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
     
    LVL 18

    Accepted Solution

    by:
    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
     

    Author Comment

    by:rsbadhan
    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
     

    Author Comment

    by:rsbadhan
    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
     

    Author Comment

    by:rsbadhan
    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

    Write Comment

    Please enter a first name

    Please enter a last name

    We will never share this with anyone.

    Featured Post

    How your wiki can always stay up-to-date

    Quip doubles as a “living” wiki and a project management tool that evolves with your organization. As you finish projects in Quip, the work remains, easily accessible to all team members, new and old.
    - Increase transparency
    - Onboard new hires faster
    - Access from mobile/offline

    A quick way to get a menu to work on our website, is using the Menu control and assign it to a web.sitemap using SiteMapDataSource. Example of web.sitemap file: (CODE) Sample code to add to the page menu: (CODE) Running the application, we wi…
    User art_snob (http://www.experts-exchange.com/M_6114203.html) encountered strange behavior of Android Web browser on his Mobile Web site. It took a while to find the true cause. It happens so, that the Android Web browser (at least up to OS ver. 2.…
    This video discusses moving either the default database or any database to a new volume.
    In this seventh video of the Xpdf series, we discuss and demonstrate the PDFfonts utility, which lists all the fonts used in a PDF file. It does this via a command line interface, making it suitable for use in programs, scripts, batch files — any pl…

    884 members asked questions and received personalized solutions in the past 7 days.

    Join the community of 500,000 technology professionals and ask your questions.

    Join & Ask a Question

    Need Help in Real-Time?

    Connect with top rated Experts

    16 Experts available now in Live!

    Get 1:1 Help Now