2011-06-30 147 views
1

我有一個GridView,asp.net的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,但這不能正常工作。

回答

2

添加NewPageIndex代碼PageIndexChanging事件:

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

的Page_Load火災每次加載頁面時,包括回傳,這樣你的SELECT語句越來越復位時間。嘗試設置視圖狀態值以保持您的選擇語句。

1

下面可以幫助你

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

} 
+0

沒有也不會。當我點擊「下一頁」時,它會給我一個空的列表。 – sbs

+0

什麼是你的代碼裏面PageIndexChanging – Saurabh

+0

什麼都沒有..我應該在PageIndexChanging中添加什麼? – sbs

1

你需要把你的代碼在Page_Load事件!IsPostBack()下。像...

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

原因:每當你點擊下一步按鈕,你的頁面加載事件的GridView的PageIndexChanging事件處理程序之前調用。

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