Din*_*rma 2 .net asp.net repeater hiddenfield
如何在asp.net中的隐藏字段的Repeater列中设置Item索引.
我编写了以下代码,但它没有在隐藏字段中显示索引值.
<ItemTemplate>
<tr>
<td>
<asp:HiddenField ID="HiddenField1" runat="server" Value='<%# Container.ItemIndex+1 %>' />
<%--<asp:HiddenField ID="hfIndex" runat="server" Value='<%#Container.ItemIndex+1 %>' />--%>
</td>
<td>
<asp:Label ID="lblExpenseGLCode" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "ACM_ACCOUNT_CODE")%>'></asp:Label>
</td>
<td>
<asp:Label ID="lblAccountGLDescription" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "ACM_ACCOUNT_DESC")%>'></asp:Label>
</td>
</tr>
</ItemTemplate>
Run Code Online (Sandbox Code Playgroud)
我看不出itemtemplate必然出现任何问题,如果您将整个转发器代码作为直接复制/粘贴提供,以防有任何其他错误,则可能会有所帮助.
您可以采取的另一种方法是添加转发器数据项绑定事件,然后捕获事件中的隐藏字段.一旦你有隐藏的输入,你可以简单地设置它的值.
中继器代码:
<asp:Repeater ID='myRepeater' runat="server" OnItemDataBound='myRepeater_OnItemDataBound'>
<ItemTemplate>
<asp:HiddenField ID='myHidden' runat="server" />
</ItemTemplate>
</asp:Repeater>
Run Code Online (Sandbox Code Playgroud)
事件背后的代码:
protected void myRepeater_OnItemDataBound(object sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
var myHidden = (HiddenField)e.Item.FindControl("myHidden");
myHidden.Value = e.Item.ItemIndex.ToString();
}
}
Run Code Online (Sandbox Code Playgroud)