我有下面的代码,其中有一些条件,因此我必须隐藏该行以不显示给最终用户。“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;
}
}