Mr Lahey
Mr Lahey

Reputation: 676

Creating a textbox in ASP.Net with unique ID programatically

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>

Upvotes: 1

Views: 1276

Answers (2)

Ray
Ray

Reputation: 21905

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/

Upvotes: 2

Josh Kodroff
Josh Kodroff

Reputation: 28121

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

Upvotes: 1

Related Questions