【问题标题】:use Repeater Item index in Hidden Field在隐藏字段中使用中继器项索引
【发布时间】:2011-08-23 06:17:27
【问题描述】:

如何在 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>

【问题讨论】:

    标签: .net asp.net repeater hiddenfield


    【解决方案1】:

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

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

    中继码:

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

    【讨论】:

      【解决方案2】:

      必须是这样的:

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

      【讨论】:

      • 谢谢。它对我有用。我们如何检测第一个和最后一个项目
      【解决方案3】:

      尝试以下:

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

      【讨论】:

      • Container.ItemIndex 比 IMO 接受的答案简单一点。
      猜你喜欢
      • 1970-01-01
      • 2016-12-25
      • 2012-08-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多