1

我有一个 GridView,

<asp:GridView ID="managerList" runat="server" DataSourceID="SqlDataSource2">

在后面的代码中,

protected void Page_Load(object sender, EventArgs e)
{
    SqlDataSource2.SelectCommand = "select * from manager";
    managerList.AllowPaging = true;
}

当我加载页面时,它工作正常,分页也工作正常。

然后我想通过单击搜索按钮来获取列表的子集:

protected void btnSearch_Click(object sender, EventArgs e)
{
    SqlDataSource2.SelectCommand = "select * from manager where age > 30";
    managerList.DataBind();
}

它工作正常,给我列表的子集。

但是,当我单击“下一页”时,它会给我整个列表,第 2 页。我知道这是因为它发送回发,并且绑定了原始选择命令。但是,当我单击“下一页”时,我该怎么做才能给我列表的子集?

谢谢!

更新: 如果我将代码更改为:

protected void Page_Load(object sender, EventArgs e)
{
  if(!IsPostBack)
  {
    SqlDataSource2.SelectCommand = "select * from manager";
    managerList.AllowPaging = true;
  }
}

当我单击“下一页”时,它给了我一个空列表。

可能很想添加 IsPostBack,但这不起作用。

4

5 回答 5

2

在 PageIndexChanging 事件中添加 NewPageIndex 代码:

managerList.PageIndex = e.NewPageIndex;
bindgrid();
于 2011-06-30T16:32:01.920 回答
1

下面可能对你有帮助

protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
    {
    SqlDataSource2.SelectCommand = "select * from manager";
    managerList.AllowPaging = true;
    }

}
于 2011-06-30T15:45:22.937 回答
1

您需要将代码放在!IsPostBack()page_load 事件中。喜欢...

protected void Page_Load(object sender, EventArgs e)
{
  if(!IsPostBack)
  {
    SqlDataSource2.SelectCommand = "select * from manager";
    managerList.AllowPaging = true;
  }
}

原因:每当您点击下一步按钮时,您的页面加载事件都会在PageIndexChangingGridview 的事件处理程序之前调用。

于 2011-06-30T15:45:50.833 回答
0

将最新的 SQL 查询存储在全局静态字符串中,然后使用以下代码。

static String previousSQL_Query;

protected void Page_Load(object sender, EventArgs e)
{
  if(IsPostBack)
  {
    SqlDataSource2.SelectCommand = previousSQL_Query;
  }
  else
  {
       SqlDataSource2.SelectCommand = "select * from manager";
       managerList.AllowPaging = true;
  }
}

protected void btnSearch_Click(object sender, EventArgs e)
{
    SqlDataSource2.SelectCommand = "select * from manager where age > 30";
    previousSQL_Query = SqlDataSource2.SelectCommand;
    managerList.DataBind();
}
于 2014-06-06T15:36:00.337 回答
0

Page_Load 每次加载页面时都会触发,包括回发,因此您的选择语句正在重置。尝试设置视图状态值以保留您的选择语句。

于 2011-06-30T15:44:02.340 回答