Ma page affiche donc trois zones de texte, chacune avec l'ID de myTextBox trois fois.
Vous êtes sûr de ça ? On dirait que vous parlez de la sortie rendue. Regardez la source et vous trouverez :
<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" />
Dans le code qui suit, vous pouvez accéder à cet identifiant généré via la fonction ClientID
propriété. Vous pouvez également accéder à des commandes individuelles en recherchant dans le dossier de votre répéteur Items
propriété :
TextBox textBox2 = myRepeater.Items[1].FindControl("myTextBox");
Edita: Vous puede définir explicitement le ClientID
pour un contrôle. Vous devez définir son ClientIDMode
a Static
et changer l'ID quand il est lié aux données :
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);
}
Donne ce 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" />