tags:

views:

142

answers:

2

I'm wondering what the best way to create text boxes in my loop here so that the IDs are unique instead of just "TextBox" for all of them. I need to add up the Price based on the Price per unit and the Quantity. My items are loaded from a database so there could be any number of them, so I need to generate the fields on the fly. I was thinking maybe an array of fields could be used like in a form application, or is this not the right way to go?

I tried googling an answer, but maybe I'm just not wording my question well. It seems like this should be solved rather easily, but I just can't find the answer.

Here is my code:

<table class="proposal" width="800">
        <tr>
            <th>Item</th>
            <th>Price per Unit</th>
            <th>Quantity</th>
            <th>Price</th>
        </tr>

        <% int x = 0; %>
        <% do
            {
        %>
        <tr>
            <td valign="top">
                <%= this.name[x] %><br />
                <%= this.desc[x] %></td>
            <td valign="top" align="right"><%= "$" + this.price[x] %></td>
            <td valign="top" align="center"><asp:TextBox ID="TextBox" runat="server" Width="75px"></asp:TextBox></td>
            <td valign="top" align="right"></td>
        </tr>

        <% x++;
           } while (x != this.y); 
        %>

    </table>
+1  A: 

You'll want to use the Repeater control as in this demonstration.

Josh Kodroff
+2  A: 

You can't do a dynamic id for an asp.net TextBox. Could you use plain html <input type="text"> text boxes instead? Then you could assign whatever id you want.

Another approach would be to use a repeater control to generate your table. Each TextBox will then automatically get a unique id. If you need to get the ids in code, then in the repeater's ItemDataBound method, use FindControl to get a handle to the TextBox and read the ids/

Ray