GridView 的分页问题

问题描述 投票:0回答:1

我有一个带有

GridView

的 asp.net 网页
<asp:GridView ID="grid_view" runat="server" AllowPaging="True" 
    AutoGenerateColumns="False" BackColor="White" BorderColor="#999999" 
    BorderStyle="Solid" BorderWidth="1px" CellPadding="3" ForeColor="Black" 
    GridLines="Vertical">
    <FooterStyle BackColor="#CCCCCC" />
    <Columns>
        <asp:BoundField DataField="adc" HeaderText="Posa No." />
        <asp:BoundField DataField="cde" HeaderText="Unit" />
        <asp:BoundField DataField="efg" HeaderText="User" />
        <asp:BoundField DataField="hj" HeaderText="Posa Date" />
    </Columns>
    <PagerStyle BackColor="#999999" ForeColor="Black" HorizontalAlign="Center" />
    <SelectedRowStyle BackColor="#000099" Font-Bold="True" ForeColor="White" />
    <HeaderStyle BackColor="Black" Font-Bold="True" ForeColor="White" /> 
    <AlternatingRowStyle BackColor="#CCCCCC" />
</asp:GridView>

我的代码是

protected void Page_Load(object sender, EventArgs e)
{
  con = new SqlConnection(ConfigurationManager.AppSettings["Connection"]);
  gridfil();
}


public void gridfil()
{
  con.Open();
  cmd = new SqlCommand("select a,b,c from xyz where approved='sss'", con);
  SqlDataAdapter da = new SqlDataAdapter(cmd);
  SqlCommandBuilder cb = new SqlCommandBuilder(da);
  DataSet ds = new DataSet();
  da.Fill(ds);
  grid_view.DataSource = ds;
  grid_view.DataBind();
  //rd.Close();
  da.Dispose();
  cmd.Dispose();
  con.Close();
}

protected void grid_view_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
  grid_view.PageIndex = e.NewPageIndex;
  gridfil();
}

我的问题是网格视图已显示,但页面索引不起作用...... 有人有什么建议吗?

c# asp.net gridview pagination
1个回答
0
投票

将页面加载代码放在

!IsPostBack()

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        con = new SqlConnection(ConfigurationManager.AppSettings["Connection"]);
        gridfil();
    }
}

原因: 每当您单击页码并想要查看另一个页面时,页面将被回发,并且您的

page load event
grid_view_PageIndexChanging
之前触发,它将重新绑定 gridview,您的事件将丢失,并且不会触发 PageIndexChanging活动。

再改一下看看评论

protected void grid_view_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
  gridfil(); // First bind the gridview 
  grid_view.PageIndex = e.NewPageIndex; // then change the page Index
}
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.