2011-02-23 10 views
2

그리드의 페이징을 시도 중입니다.Asp.net 그리드 뷰 페이징

<PagerStyle HorizontalAlign="Right" CssClass="paging"/> 
      <PagerTemplate> 
      <table width="100%"> 
       <tr> 
        <td style="text-align:left; width:50%"> 

         <asp:LinkButton ID="lnkPrv" Visible="false" CommandName="Page" CommandArgument="Prev" runat="server">Previous</asp:LinkButton> 
        </td> 
        <td style="text-align:right; width:50%;padding-left:50%;">       
         <asp:LinkButton ID="lnkNext" CommandName="Page" CommandArgument="Next" runat="server">Next</asp:LinkButton> 
        </td> 
       </tr> 
      </table> 
     </PagerTemplate> 

코드 뒤에

protected void gvProduct_PageIndexChanging(object sender, GridViewPageEventArgs e) 
    { 
     Literal1.Visible = gvProduct.PageIndex == 0; 

     LinkButton lnkPrv = (LinkButton)gvProduct.BottomPagerRow.FindControl("lnkPrv"); 
     LinkButton lnkNext = (LinkButton)gvProduct.BottomPagerRow.FindControl("lnkNext"); 

     lnkPrv.Visible = e.NewPageIndex > 0; 
     lnkNext.Visible = e.NewPageIndex < gvProduct.PageCount - 1; 
     gvProduct.PageIndex = e.NewPageIndex; 
     FillGrid(); 
    } 

아래 오류를 제공하지 않는 코드입니다. 보이는 속성을 true/false로 설정하는 것을 볼 수 있습니다. 그러나 페이지의 실제 컨트롤은 동일하게 유지됩니다 (항상 모든 페이지에서 볼 수 있음). '

무엇이 잘못 되었나요?

+0

FillGrid 메서드에 대한 코드를 게시 할 수 있습니까? – PhilPursglove

+0

답변이 도움이 되었습니까? 그렇다면이 질문에 답변 할 수 있습니까? – Brady

답변

2

FillGrid() 메소드가 gvProduct (즉, gvProduct.DataBind())를 다시 바인딩하면 lnkPrv 및 lnkNext Visible 값은 데이터 바인딩시 마크 업에서 기본값을 사용합니다. gvProduct의 RowDataBound 이벤트에 대한 이벤트 핸들러에서 이러한 컨트롤의 가시성을 설정해야합니다.

protected void gvProduct_PageIndexChanging(object sender, GridViewPageEventArgs e) 
{ 
      Literal1.Visible = gvProduct.PageIndex == 0; 
      gvProduct.PageIndex = e.NewPageIndex; 
      FillGrid(); 
} 

protected void gvProduct_RowDataBound(object sender, GridViewRowEventArgs e) 
{ 
    if (e.Row.RowType == DataControlRowType.Pager) { 
     LinkButton lnkPrv = (LinkButton)e.Row.FindControl("lnkPrv"); 
     LinkButton lnkNext = (LinkButton)e.Row.FindControl("lnkNext"); 
     lnkPrv.Visible = gvProduct.PageIndex > 0; 
     lnkNext.Visible = gvProduct.PageIndex < gvProduct.PageCount - 1; 
    } 
}