我有一个ViewStock面板,我在其中从数据库查看gridview中的股票,并通过代码对其进行DataBind()处理。允许分页并在html的gridview标记中创建事件“ OnPageIndexChanging”,并实现上面定义的代码并在事件中分页,如下所示:
HTML:
<asp:Panel ID="Panel_StockView" runat="server">
<asp:GridView ID="GridView_Stock" AllowPaging="true" OnPageIndexChanging="GridView_PageIndexChanging" runat="server"></asp:GridView>
</asp:Panel>
C#代码:
protected void LinkButton_Panel_ViewStock_Click(object sender, EventArgs e)
{
using(SqlConnection con = new SqlConnection(cs))
{
//Sql command here
/sql adapter and filled datatable
sdaStockView.Fill(dtStockView);
GridView_Stock.DataSource = dtStockView;
GridView_Stock.DataBind();
}
}
现在实现了分页
protected void GridView_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
GridView_Stock.DataBind();
GridView_Stock.PageIndex = e.NewPageIndex;
}
它确实起作用,但部分起作用。它执行分页并正确处理数据。但是,问题是,当我单击页面“ 2”时,面板空白,就像我上传的图片一样。参见此图片,然后单击链接按钮,该按钮再次将我重定向到面板并打开页面的“ 2”带有有效数据的gridview。
如何解决这个问题?
提取将GridView绑定到数据的逻辑到新方法中。您可以调用它BindData()
,例如:
private void BindData()
{
using (SqlConnection con = new SqlConnection(cs))
{
sdastockview.fill(dtstockview);
gridview_stock.datasource = dtstockview;
gridview_stock.databind();
}
}
在内部调用此方法LinkButton_Panel_ViewStock_Click
以填充GridView
:
protected void LinkButton_Panel_ViewStock_Click(object sender, EventArgs e)
{
this.BindData();
}
最后,再次调用它以重新填充GridView
分页期间:
protected void GridView_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
GridView_Stock.PageIndex = e.NewPageIndex;
this.BindData();
}
只需进行这三个小更改,它就会起作用。我已经尝试过这一点,并且效果很好。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句