0

我使用 gridview 来显示搜索结果。单击搜索按钮后,gridview 将显示第 1 页,但是当我单击第 2 页链接时,gridview 消失了,当我再次单击搜索按钮并显示第 2 页的内容时它又回来了。

这是我的代码

 <asp:GridView ID="searchresult" runat="server" AutoGenerateColumns="true" AllowPaging="true" OnRowDataBound="searchresult_RowDataBound" OnPageIndexChanging="searchresult_PageIndexChanging" 
             HeaderStyle-BackColor="#f9e4d0"
             HeaderStyle-Height="20px"
             Font-Size="11px"
             AlternatingRowStyle-BackColor="#cfdfef"
             Width="800px" style="text-align:left">
   </asp:GridView>

和后面的代码

protected void search_Click(object sender, EventArgs e)
 {
      List<someclass> totalResult = new List<someclass>();
      ..... //some code to generate the datasource

      searchresult.DataSource = totalResult;
      searchresult.AllowPaging = true;
      searchresult.DataBind();
 }

protected void searchresult_RowDataBound(object sender, GridViewRowEventArgs e)
{
}

protected void searchresult_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
      searchresult.PageIndex = e.NewPageIndex;
      DataBind();
}

我不知道为什么在我再次单击搜索按钮之前不会显示第 2 页。当我单击第 2 页链接时,该页面进行了回发,但未触发 RowDataBound 事件

4

2 回答 2

0

你必须给你的网格一个数据源。看来您只是在 上执行此操作search_Click,因此您的网格那时只会有数据。尝试类似:

protected void search_Click(object sender, EventArgs e)
{
    PopGrid();
}

protected void searchresult_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
    searchresult.PageIndex = e.NewPageIndex;
    PopGrid();
}

protected void PopGrid()
{
    List<someclass> totalResult = new List<someclass>();
    ..... //some code to generate the datasource

    searchresult.DataSource = totalResult;
    searchresult.AllowPaging = true;
    searchresult.DataBind();
}
于 2013-09-26T19:13:00.340 回答
0

searchresult_PageIndexChanging 事件处理程序将使该功能起作用。但是,我建议您在具有垂直滚动条的面板内使用 gridview 控件。我的用户喜欢它,并且在不定义任何页面索引更改的情况下在 gridview 上下移动要快得多。

我希望它对你有用。

于 2014-03-17T19:37:02.893 回答