2012-07-25 5 views
5

그리드 뷰 컨트롤이 있습니다. 그러나 페이지 번호를 클릭하면 "페이지를 찾을 수 없습니다"오류가 발생합니다. 내가 여기서 무엇을 놓치고 있니?gridview 페이징이 작동하지 않습니다.

내 코드는 다음과 같습니다 당신은 PageIndexChanging 이벤트 처리기에서 BindGridview() 전화를해야

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

답변

3

EnableViewstate = true를 사용하고 한 번 바인드하고 IsPostback을 사용해야합니다. (PageIndex)

1. EnableViewState=true for your control 

2. In the page load 

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

And set PageIndex 
+0

솔루션으로 문제가 해결되지 않습니다. – DotNetRookie

+0

나는 당신의 문제를 해결하는 것을 확신한다, 당신이 원한다면 나는 나의 솔루션을 자세히 설명 할 수있다. –

+1

이 예를 따른다. http://www.ezineasp.net/post/ASP-Net-2-0-Gridview-Paging-using-C -sharp.aspx –

2

.

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

BindGridView() 호출이 작동하지 않습니다. "gvEmployeeResults_PageIndexChanging"에 중단 점을 지정하고 페이지 번호를 클릭하면 중단 점이 트리거되지 않습니다. – DotNetRookie

관련 문제