Я думаю, вам лучше использовать встроенную поддержку идентификаторов внутри повторителя. Если цель состоит в том, чтобы назначить ему идентификатор, чтобы облегчить поиск правильного элемента управления после привязки данных, вы можете попробовать что-то вроде этого:
<asp:Repeater ID="Repeater1" runat="server>
<ItemTemplate>
<asp:Label ID="QuestionID" Visible="False" Runat="server"><%#DataBinder.Eval(Container.DataItem, "FieldContent")%></asp:Label>
<asp:DropDownList ID="MyDropDownList" Runat="server"></asp:DropDownList>
</ItemTemplate>
</asp:Repeater>
Затем в своем коде вы можете перебирать элементы в повторителе, пока не найдете нужный ярлык:
foreach (RepeaterItem curItem in Repeater1.Items)
{
// Due to the way a Repeater works, these two controls are linked together. The questionID
// label that is found is in the same RepeaterItem as the DropDownList (and any other controls
// you might find using curRow.FindControl)
var questionID = curRow.FindControl("QuestionID") as Label;
var myDropDownList = curRow.FindControl("MyDropDownList") as DropDownList;
}
Repeater в основном состоит из набора RepeaterItems. RepeaterItems указываются с помощью тега ItemTemplate. Каждый RepeaterItem имеет свой собственный набор элементов управления, которые по самой природе Repeater связаны друг с другом.
Скажем, вы извлекаете данные Repeater из базы данных. Каждый элемент Repeater представляет данные из отдельной строки в результатах запроса. Поэтому, если вы назначите QuestionID метке, а QuestionName - DropDownList, идентификатор в метке будет совпадать с выпадающим именем.