在隐藏字段中使用Repeater Item索引

时间:2011-05-11 12:02:58

标签: .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>

3 个答案:

答案 0 :(得分:5)

我看不出itemtemplate必然出现任何问题,如果您将整个转发器代码作为直接复制/粘贴提供,以防出现任何其他错误,则可能会有所帮助。

您可以采取的另一种方法是添加转发器数据项绑定事件,然后捕获事件中的隐藏字段。一旦你有隐藏的输入,你可以简单地设置它的值。

转发码:

<asp:Repeater ID='myRepeater' runat="server" OnItemDataBound='myRepeater_OnItemDataBound'>
      <ItemTemplate>
        <asp:HiddenField ID='myHidden' runat="server" />
      </ItemTemplate>
</asp:Repeater>

事件背后的代码:

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();
        }
    }

答案 1 :(得分:3)

必须是这样的:

Value="<%# DataBinder.Eval(Container, "ItemIndex") %>"

答案 2 :(得分:1)

尝试以下:

<asp:Repeater ID="myRepeater" runat="server">
<HeaderTemplate>
    <table>
</HeaderTemplate>
<ItemTemplate>
    <tr>
        <td><%# Container.ItemIndex %></td>
        <!-- or maybe -->
        <td><%# Container.ItemIndex + 1 %></td>
        <td><%# DataBinder.Eval(Container, "DataItem.Name") %></td>
    </tr>
</ItemTemplate>
<FooterTemplate>
    </table>
</FooterTemplate>
</asp:Repeater>