2012-07-25 14 views
5

Ho un controllo GridView, tuttavia, quando faccio clic sul numero di pagina, ricevo un errore "Pagina non trovata". Cosa mi manca qui?gridview paging non funziona

Il mio codice è:

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

risposta

3

è necessario utilizzare EnableViewstate = true e associare una volta e utilizzare IsPostback. (PageIndex)

1. EnableViewState=true for your control 

2. In the page load 

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

And set PageIndex 
+0

La soluzione non risolve il problema. – DotNetRookie

+0

Sono sicuro che per risolvere il tuo problema, posso dettagliare la mia soluzione di più se vuoi –

+1

segui questo esempio http://www.ezineasp.net/post/ASP-Net-2-0-Gridview-Paging-using-C -sharp.aspx –

2

Dovete chiamare BindGridview() in PageIndexChanging gestore di eventi.

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

Chiamare BindGridView() non funziona. Quando inserisco un breakpoint su "gvEmployeeResults_PageIndexChanging" e faccio clic sul numero di pagina, il punto di interruzione non viene attivato – DotNetRookie

Problemi correlati