所以我的页面显示了三个文本框,每个文本框的 ID 都是 myTextBox 的 3 次。
你确定吗?听起来您在谈论渲染的输出。查看源码,你会发现:
<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" />
从后面的代码中,您可以通过ClientID
属性访问这个生成的 id。您还可以通过搜索转发器的Items
属性来访问各个控件:
TextBox textBox2 = myRepeater.Items[1].FindControl("myTextBox");
编辑:您可以显式设置ClientID
控件。您必须在数据绑定时将其设置ClientIDMode
为Static
并更改 ID:
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);
}
给出这个 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" />