2012-07-25 15 views
5

Tengo un control gridview, sin embargo, cuando hago clic en el número de página, aparece el mensaje "Página no encontrada". ¿Que me estoy perdiendo aqui?la paginación de vista de cuadrícula no funciona

Mi código es:

<asp:GridView ID="gvEmployeeResults" Width="900px" CellSpacing="1" 
    CellPadding="2" 
    AutoGenerateColumns="false" OnRowDataBound="gvEmployeeResults_OnRowDataBound" 
    runat="server" AllowPaging="true" > 
    <Columns> 
     <asp:TemplateField HeaderText="Last Name, First Name" ItemStyle-Wrap="true" HeaderStyle-HorizontalAlign="Left" ItemStyle-HorizontalAlign="left"> 
      <ItemTemplate> 
        <asp:LinkButton id="lbtnEmployeeName" OnCommand="EditEmployee_Command" CommandArgument='<%#Eval("EmployeeNum")%>' CommandName="EmployeeName" Visible="true" runat="server" ToolTip="Click to edit Employee."><%# DataBinder.Eval(Container.DataItem, "empLastName") + ", " + DataBinder.Eval(Container.DataItem, "empFirstName")%></asp:LinkButton> 
      </ItemTemplate> 
     </asp:TemplateField> 
     <asp:BoundField DataField="empAddrLine1" ControlStyle-Width="225px" HeaderStyle-HorizontalAlign="Left" ItemStyle-HorizontalAlign="left" HeaderText="Address" /> 
     <asp:BoundField DataField="empCity" ControlStyle-Width="120px" HeaderStyle-HorizontalAlign="Left" ItemStyle-HorizontalAlign="left" HeaderText="City" /> 
     <asp:BoundField DataField="empState" ControlStyle-Width="50px" HeaderStyle-HorizontalAlign="Left" ItemStyle-HorizontalAlign="left" HeaderText="State" /> 
     <asp:BoundField DataField="empPostalCode" ControlStyle-Width="100px" HeaderStyle-HorizontalAlign="Left" ItemStyle-HorizontalAlign="left" HeaderText="Zip" /> 
     <asp:BoundField DataField="empDOB" ControlStyle-Width="100px" HeaderStyle-HorizontalAlign="Left" ItemStyle-HorizontalAlign="left" HeaderText="Date Of Birth" /> 
    </Columns> 
</asp:GridView> 


     protected void BindGridview() 
     { 
      corpEmployee.Employee emp = new corpEmployee.Employee(); 

      emp.empLastName = tboxLastName.Text.Trim(); 
      emp.empFirstName = tboxFirstName.Text.Trim(); 
      emp.empDOB = tboxDateOfBirth.Text.Trim(); 

      gvEmployeeResults.DataSource = corpEmployeeMgr.GetEmployees(emp); 
      gvEmployeeResults.DataBind(); 
     } 

     protected void gvEmployeeResults_OnRowDataBound(object sender, GridViewRowEventArgs e) 
     { 
      if (e.Row.RowType == DataControlRowType.DataRow) 
      { 
       if (e.Row.Cells[0].Text.Contains("nbsp;")) 
       { 
        e.Row.Cells[0].Text = e.Row.Cells[0].Text.Replace("&lt;", "<").Replace("&gt;", ">").Replace("&amp;", "&"); 
       } 
      } 
      else 
      { 
       return; 
      } 
     } 

     protected void gvEmployeeResults_PageIndexChanging(object sender, GridViewPageEventArgs e) 
     { 
      gvEmployeeResults.PageIndex = e.NewPageIndex; 
      gvEmployeeResults.DataBind(); 
     } 

Respuesta

3

debes usar EnableViewstate = true y vincular una vez y usar IsPostback. (PageIndex)

1. EnableViewState=true for your control 

2. In the page load 

If(! IspostBack) 
{ 
    Bind().... 
} 

And set PageIndex 
+0

Su solución no resuelve el problema. – DotNetRookie

+0

Estoy seguro de que resolverá su problema, puedo detallar mi solución más si desea –

+1

siga este ejemplo http://www.ezineasp.net/post/ASP-Net-2-0-Gridview-Paging-using-C -sharp.aspx –

2

Tienes que llamar BindGridview() en PageIndexChanging controlador de eventos.

protected void gvEmployeeResults_PageIndexChanging(object sender, GridViewPageEventArgs e) 
{ 
    gvEmployeeResults.PageIndex = e.NewPageIndex; 
    BindGridview(); 
} 
+1

Llamar a BindGridView() no funciona. Cuando pongo un punto de interrupción en "gvEmployeeResults_PageIndexChanging" y hago clic en el número de página, el punto de interrupción no se desencadena – DotNetRookie

Cuestiones relacionadas