【发布时间】:2015-10-06 18:47:16
【问题描述】:
我想使用分页并缓存某些页面更改时的搜索结果。 我有一个交易页面,默认加载最新的 100 笔交易。 但是,用户可以单击“搜索”链接,该链接将显示搜索条件,页面将检索该特定数据集。
我在我的 GridView 中添加了分页,它会根据页面大小字段显示正确的页数。
我的挑战是在用户单击页码后检索 GridView 页面的数据集。该页面默认加载或通过用户搜索加载。显示网格。现在,比如说,用户想要转到第二页。我该如何处理?
这是我尝试过的:
页面加载函数调用下面的 Populate() 。 我添加了一个 DataSet 全局变量 pagingQuery 来保存我的搜索条件。在 populate() 中,我将 pagingQuery 设置为我从数据库中检索到的内容。然而,在页面加载后这个变量被设置为空!!为什么? 在 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{
}
}
对于搜索条件,采用了类似的方法,但无济于事。该值为 null 并且任何后续页面为空。
我可以通过使用局部变量 DataSet ds 再次调用 populate() 来让分页工作,但是我不能对搜索做同样的事情
因为为搜索条件保存一个全局值失败得很惨。我可以保存搜索文本并再次调用数据库,但似乎无法存储全局变量。
我的方法准确吗? 有没有办法在 pageIndexChanging() 调用之间保存数据集/字符串/变量?
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;
}
...
}
}
【问题讨论】:
标签: c# asp.net caching gridview pagination