I know that we can bind the data to each control within ItemTemplate as follow:
<ItemTemplate>
<asp:TextBox runat="server"
Text='<%# Eval("LabelText") %>' />
</ItemTemplate>
However, I found no way to concatenate a string prefix with the data value to form a unique string identifier. The following code shows my idea, but it doesn't work.
<ItemTemplate>
<asp:TextBox runat="server"
ID='TextBox_<%# Eval("LabelID") %>'
ValidationGroup = 'VVG_<%# Eval("LabelGroup") %>'
Text='<%# Eval("LabelText") %>' />
</ItemTemplate>
Try this
ID = '<%# "Text_" + Eval("LabelID") %>'
ValidationGroup = '<%# "VVG_" + Eval("LabelGroup") %>'
EDIT:
ID cannot be assigned in this fashion for server side controls. You can assign ID for simple form controls such as <input type="text"... />
. Also take a look at Control.ClientIDMode (ASP.NET 4).
Try this:
<asp:TextBox runat="server"
ID='<%# String.Format("TextBox_{0}",Eval("LabelID")) %>'
ValidationGroup = '<%# String.Format("WG_{0}",Eval("LabelGroup")) %>'
Text='<%# Eval("LabelText") %>' />
来源:https://stackoverflow.com/questions/6012655/how-to-use-data-bound-value-to-form-unique-identifier-for-item-control