簡體   English   中英

asp.net gridview 動態綁定

[英]asp.net gridview dynamically binding

我有一個 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,但這不起作用。

在 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;
  }
}

原因:每當您點擊 Next 按鈕時,您的頁面加載事件都會在 Gridview 的PageIndexChanging事件處理程序之前調用。

將最新的 SQL 查詢存儲在全局 static 字符串中,然后使用以下代碼。

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();
}

Page_Load 每次加載頁面時都會觸發,包括回發,因此您的 select 語句正在重置。 嘗試設置視圖狀態值以保留您的 select 語句。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM