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

发布于 2024-11-06 20:03:05 字数 848 浏览 1 评论 0原文

如何在asp.net中设置具有隐藏字段的重复器列中的项目索引。
我编写了以下代码,但它没有显示隐藏字段中的索引值。

<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>

How to set Item index in a Repeater Column with Hidden Fields in asp.net.
I wrote the following code but it does not show the index value in hidden field.

<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>

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

留蓝 2024-11-13 20:03:05

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

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

中继器代码:

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

I can't see anything necessarily wrong with the itemtemplate, it would probably help if you provide the entire repeater code as a direct copy / paste in case there area any other errors.

Another approach you can take is to add a repeater data item bound event and then capture the hiddenfield in the event. Once you have the hidden input you can simply set it's value.

Repeater code:

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

And the code behind event:

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();
        }
    }
坠似风落 2024-11-13 20:03:05

它必须是这样的:

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

it has to be like this:

Value="<%# DataBinder.Eval(Container, "ItemIndex") %>"
メ斷腸人バ 2024-11-13 20:03:05

尝试以下操作:

<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>

try following:

<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>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文