Set ID of Items In a Repeater

早过忘川 提交于 2019-11-26 21:51:33

问题


In my aspx, I have a repeater which contains three textboxes:

<asp:Repeater ID="myRepeater" runat="server">
    <ItemTemplate>
        <asp:TextBox ID="myTextBox" runat="server"
    <ItemTemplate/>
</asp:Repeater>

In my codebehind, I have my repeater databound to an array int data = new int[3];

So my page displays three textboxes, each with the ID of myTextBox three times. Is there a way to set those IDs to be:

  • MyTextBox1
  • MyTextBox2
  • MyTextBox3

回答1:


So my page displays three textboxes, each with the ID of myTextBox three times.

Are you sure about that? It sounds like you are talking about the rendered output. View the source and you will find:

<input name="myRepeater$ctl00$myTextBox" type="text" id="myRepeater_myTextBox_0" />
<input name="myRepeater$ctl01$myTextBox" type="text" id="myRepeater_myTextBox_1" />
<input name="myRepeater$ctl02$myTextBox" type="text" id="myRepeater_myTextBox_2" />

From the code behind, you can access this generated id via the ClientID property. You can also access individual controls by searching through your repeater's Items property:

TextBox textBox2 = myRepeater.Items[1].FindControl("myTextBox");

Edit: You can explicitly set the ClientID for a control. You have to set its ClientIDMode to Static and change the ID when it is databound:

protected void Page_Load(object sender, EventArgs e)
{
    myRepeater.ItemDataBound += new RepeaterItemEventHandler(myRepeater_ItemDataBound);
    myRepeater.DataSource = new int[3];
    myRepeater.DataBind();
}

void myRepeater_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
    var textbox = e.Item.FindControl("myTextBox");
    textbox.ClientIDMode = ClientIDMode.Static;
    textbox.ID = "myTextBox" + (e.Item.ItemIndex + 1);
}

Gives this HTML:

<input name="myRepeater$ctl01$myTextBox1" type="text" id="myTextBox1" />
<input name="myRepeater$ctl02$myTextBox2" type="text" id="myTextBox2" />
<input name="myRepeater$ctl02$myTextBox3" type="text" id="myTextBox3" />


来源:https://stackoverflow.com/questions/14654174/set-id-of-items-in-a-repeater

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!