2013-10-24 89 views
1

我有下面的代码,我有一些条件,因为我必须隐藏显示给最终用户的行。 “ShowRow”是一个基于这些条件在GetUnitOfMeasure函数中设置的布尔值(不在这里复制)。Asp.net/c# - >当gridview行被过滤(或隐藏)时,Gridview寻呼机没有得到更新

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

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

请建议。我也使用“onDataBound”对gridview(这里没有复制),但我只是在这里隐藏一些列。

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; 
    } 
} 
+0

任何人都可以建议我做错了吗? – Anirudh

回答

0

林不知道它是否会工作,但也许如果你尝试设置e.Row.Enabled = showRow以及设置其知名度