Problema de chamada de pessoas com vista

eu tenho um asp.net página web com a GridView

<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>

e o meu código atrás é

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();
}

o meu problema é que a vista da grelha foi diplada, mas a indexação da página não funcionou... Alguém tem alguma sugestão?

Author: Quintin Robinson, 2011-07-23

1 answers

Coloque o código de carga da sua página em !IsPostBack()

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

Motivo: Sempre que você clicar no Número da Página e deseja exibir outra página, a Página será postback e o seu page load event acionado antes de grid_view_PageIndexChanging e vai religar o gridview e seu evento será perdido e não irá lançar o evento PageIndexChanging.

Em segundo lugar, mude isto e veja os comentários

protected void grid_view_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
  gridfil(); // First bind the gridview 
  grid_view.PageIndex = e.NewPageIndex; // then change the page Index
}
 0
Author: Muhammad Akhtar, 2011-07-23 05:29:40