【问题标题】:Asp.net/c# -> Gridview Pager doesn't get updated when gridview rows are filtered (or hidden)Asp.net/c# -> Gridview 分页器在过滤(或隐藏)gridview 行时不会更新
【发布时间】:2013-11-03 21:32:04
【问题描述】:

我有以下代码,其中有一些条件,因此我必须隐藏该行以不向最终用户显示。 “ShowRow”是一个布尔值,根据这些条件在 GetUnitOfMeasure 函数中设置(此处未复制)。

有一些真实的情况迫使我隐藏。我尝试在构建数据源时包含它们,但我必须在显示之前将其隐藏。

我面临的问题是分页没有根据最后显示的总行数刷新。例如,如果我在网格中有 TOTAL 200Rows 并且只需要显示 2 行并且如果在第 3 页中找到这 2 行,那么当页面加载时它仍然显示第 1 页 2 3 4 并且第 3 页具有有效2 行。

请提出建议。我还对 gridview 使用了“onDataBound”(此处未复制),但我只是在这里隐藏了一些列。

ASPX 页面

<asp:GridView ID="SearchResults" runat="Server" AutoGenerateColumns="false" EnableViewState="false"
AllowPaging="true" PageSize="50"  OnDataBound ="SearchResults_DataBound" OnRowDataBound="SearchResults_RowDataBound">
<RowStyle CssClass="EvenRow" />
<AlternatingRowStyle CssClass="OddRow" />
<Columns>
    <asp:TemplateField meta:resourceKey="UmSellField">
        <ItemStyle CssClass="alpha" />
        <HeaderStyle CssClass="alpha" />
        <ItemTemplate>
            <asp:Label ID="UmSellLabel" runat="server" EnableViewState="false" Text='<%# GetUnitOfMeasure(Container.DataItem,false) %>'></asp:Label>
        </ItemTemplate>
    </asp:TemplateField>
</Columns>
</asp:GridView>

代码隐藏

protected void SearchResults_RowDataBound(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType.Equals(DataControlRowType.DataRow))
    {
        e.Row.Visible = showRow;
        e.Row.Cells[0].Visible = showRow;
    }
}

【问题讨论】:

  • 谁能建议我在上面做错了什么?

标签: c# asp.net gridview paging rowdatabound


【解决方案1】:

我不确定它是否会起作用,但也许如果你尝试设置 e.Row.Enabled = showRow 以及设置它的可见性

【讨论】:

    猜你喜欢
    • 2011-08-16
    • 1970-01-01
    • 1970-01-01
    • 2017-01-29
    • 2010-09-17
    • 2020-05-19
    • 1970-01-01
    • 2018-01-16
    • 2014-03-01
    相关资源
    最近更新 更多