我想使用分頁和緩存某些頁面更改時的搜索結果。 我有一個交易頁面默認加載最新的100筆交易。 但是,用戶可以單擊「搜索」鏈接,該鏈接將顯示搜索條件,頁面將檢索該特定數據集。ASP Gridview分頁和緩存
我爲我的GridView添加了分頁,並且它基於頁面大小字段顯示正確的頁數。
我的挑戰是在用戶點擊頁碼後檢索GridView頁面的數據集。該頁面默認或通過用戶搜索加載。網格顯示。現在,例如,用戶想要轉到第二頁。我如何處理?
這裏是我的嘗試:
頁面加載函數調用填充(),如下。 我添加了一個DataSet全局變量pagingQuery來保存我的搜索條件。在populate()中,我將pagingQuery設置爲從db中檢索的內容。然而這個變量在頁面加載後被設置爲null!爲什麼? 在PageIndexChanging()我根本
protected void GridView1_PageIndexChanging(object sender,GridViewPageEventArgs e)
{
GridView1.PageIndex = e.NewPageIndex;
//Populate();
GridView1.DataSource = pagingQuery;
GridView1.DataBind();
}
public void Populate()
{
try
{
Transaction tran = new Transaction();
//DataSet ds = tran.GetAllBankTransactions();
pagingQuery = tran.GetAllBankTransactions();
GridView1.DataSource = pagingQuery;
GridView1.DataBind();
}
catch{
}
}
對於搜索條件類似的方法之後,但無濟於事。該值爲空,並且後續頁面爲空。 我能夠通過調用populate()再次使用局部變量DataSet ds來獲得分頁工作,但是我不能對搜索 執行相同的操作,因爲爲搜索條件保存全局值失敗了。我可能會保存搜索文本並再次調用數據庫,但我無法存儲一個全局變量。
我的方法準確嗎? 有沒有辦法在pageIndexChanging()調用之間保存DataSet /字符串/變量?
protected void Search_button_click(object sender, EventArgs e)
{
try
{
....
else if (ddSearhField.SelectedValue == "Bank" && ddSearchFieldValue.SelectedValue != "All Banks")
{
pagingQuery = trans.GetAllBankTransactionsByBank(Convert.ToInt64(ddSearchFieldValue.SelectedValue), strFromDate, strToDate, showAllFields);
GridView1.DataSource = pagingQuery;
GridView1.DataBind();
lblHeading.Text = ddSearchFieldValue.SelectedItem.Text;
}
...
}
}