我在c#中的数据集中缓存了一个select *查询。
在我的页面上,我有3个下拉列表。 根据选择的下拉列表,我过滤数据表并将其绑定到gridview。 每当下拉列表中的数据发生变化时,我都会相应地显示数据。
我的问题是,我已经为此gridview添加了分页,因为每个查询的结果超过500个。 当我尝试分页时,gridview消失。下拉列表中的值不会改变。
我该怎么办?
网页代码更改gridview的索引是:
protected void gridView_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
GridView1.PageIndex = e.NewPageIndex;
GridView1.DataBind();
}
提前感谢您的帮助。
答案 0 :(得分:1)
您需要在函数
中再次绑定网格protected void gridView_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
GridView1.PageIndex = e.NewPageIndex;
//provide data source here
GridView1.DataBind();
}
答案 1 :(得分:1)
以下步骤可以帮助您...
PageIndexChanging
事件处理程序OnInit
事件中调用它,而不是Page_Load
以下是示例代码:
private void AddGridDynamically()
{
try
{
HtmlTableRow tr = new HtmlTableRow();
HtmlTableCell td = new HtmlTableCell();
GridView gv = new GridView();
gv.AllowPaging = true;
gv.PageSize = 20;
gv.PagerSettings.Visible = true;
gv.PagerSettings.Mode = PagerButtons.NumericFirstLast;
gv.PageIndexChanging += new GridViewPageEventHandler(gv_PageIndexChanging);
FillGrid(gv);
td.Controls.Add(gv);
tr.Cells.Add(td);
tbl1.Rows.Add(tr);
gv.EmptyDataText="No Data Found";
gv.DataBind();
}
catch (Exception ex)
{
throw ex;
}
}
private void FillGrid(GridView gv)
{
try
{
DataTable dt = new DataTable();
dt.Columns.Add("Name");
dt.Columns.Add("Id");
DataRow dr;
for (int i = 0; i < 100; i++)
{
dr = dt.NewRow();
dr[0] = "AnyThing" + i;
dr[1] = i;
dt.Rows.Add(dr);
}
gv.DataSource = dt;
}
catch (Exception ex)
{
}
}
protected override void OnInit(EventArgs e)
{
AddGridDynamically();
}