C# asp.net gridview动态绑定

C# asp.net gridview动态绑定,c#,asp.net,gridview,paging,page-index-changed,C#,Asp.net,Gridview,Paging,Page Index Changed,我有一个网格视图 <asp:GridView ID="managerList" runat="server" DataSourceID="SqlDataSource2"> 当我加载页面时,它工作正常,分页也工作正常 然后我想通过单击搜索按钮获得列表的子集: protected void btnSearch_Click(object sender, EventArgs e) { SqlDataSource2.SelectCommand = "select * from man

我有一个网格视图

<asp:GridView ID="managerList" runat="server" DataSourceID="SqlDataSource2">
当我加载页面时,它工作正常,分页也工作正常

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

protected void btnSearch_Click(object sender, EventArgs e)
{
    SqlDataSource2.SelectCommand = "select * from manager where age > 30";
    managerList.DataBind();
}
很好,给我列表的子集

然而,当我点击“下一页”时,它会给我整个列表,第2页。我知道这是因为它发送回发,并绑定原始的select命令。但是,当我点击“下一页”时,我如何才能给出列表的子集呢

谢谢大家!

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

protected void Page_Load(object sender, EventArgs e)
{
  if(!IsPostBack)
  {
    SqlDataSource2.SelectCommand = "select * from manager";
    managerList.AllowPaging = true;
  }
}
当我点击“下一页”时,它会给我一个空列表


它可能试图添加IsPostBack,但这不起作用。

每次加载页面(包括回发)时都会触发Page\u Load,因此select语句将被重置。尝试设置viewstate值以保留select语句。

每次加载页面(包括回发)时都会触发页面加载,因此select语句将被重置。尝试设置viewstate值以保留select语句。

下面的内容可能会对您有所帮助

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

}
下面可能会帮助你

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

}

你需要把你的代码放在
下面!页面加载事件中的IsPostBack()
。像

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

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

您需要将代码置于
下!页面加载事件中的IsPostBack()
。像

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

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

在PageIndexChange事件中添加新的PageIndex代码:

managerList.PageIndex = e.NewPageIndex;
bindgrid();

在PageIndexChange事件中添加NewPageIndex代码:

managerList.PageIndex = e.NewPageIndex;
bindgrid();

将最近的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();
}

将最近的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();
}

不会的。当我单击“下一页”时,它会给我一个空列表。受保护的void managerList_PageIndexChanging(对象发送者,GridViewPageEventArgs e){managerList.PageIndex=e.NewPageIndex;bindgrid();}不会。当我单击“下一页”时,它会给我一个空列表。受保护的void managerList_PageIndexChanging(对象发送者,GridViewPageEventArgs e){managerList.PageIndex=e.NewPageIndex;bindgrid();}