asp.net网格视图动态绑定

本文关键字:动态绑定 视图 网格 net asp | 更新日期: 2023-09-27 18:00:42

我有一个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页。我知道这是因为它发送回发,并且绑定了原始的select命令。但是,当我点击"下一页"时,我该如何给我列表的子集呢?

谢谢!

更新:如果我把代码改成这个:

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

当我点击"下一页"时,它会给我一个空列表。

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

asp.net网格视图动态绑定

在PageIndexChanging事件中添加NewPageIndex代码:

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

下面可能会帮助您

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

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

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

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

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

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