2014-11-24 4 views
1

아주 간단한 질문이지만 많은 문제가 있습니다.asp : ListView DataPager page from codebehind (C#)

protected void restorePagerNumber() 
    { 
     if (Session["PageNumber"] != null) 
     { 
      System.Diagnostics.Debug.Write(Session["PageNumber"]); 
      DataPager pager = searchListView.FindControl("searchDataPager") as DataPager; 
      pager.SetPageProperties((int)Session["PageNumber"] * pager.PageSize, pager.MaximumRows, false); 
     } 
    } 

내가 현재 가지고있는 것, 데이터 바인딩 전에 사용하려고했는데 아무 것도 작동하지 않는 것 같습니다. 새 개체를 만든 후 실제로 pager 값을 변경할 수 있습니까? 논리적이지는 않지만 작동하지 않는데 datapager에 액세스 할 수 없습니다. listView에있는 dataPager에 액세스하고 페이지 번호를 설정하는 다른 방법이 있습니까?

건배

답변

0

나는 당신 (http://www.4guysfromrolla.com/articles/021308-1.aspx)와 유사한 시나리오를 발견하고 나는 샘플 응용 프로그램 실행시 호출 SetPageProperties()를 작동하는지 확인했습니다.

당신의 SetPageProperties의 마지막 "데이터 바인딩"인수가 False에서 True로에 전화를 변경해야합니다 :

다음
pager.SetPageProperties((int)Session["PageNumber"] * pager.PageSize, pager.MaximumRows, true); 

하는 PageLoad

protected void Page_Load(object sender, System.EventArgs e) 
{ 
    if (!Page.IsPostBack) { 
     restorePagerNumber(); 
    } 
} 

희망에 당신이 restorePagerNumber를 호출하고 있는지 확인하는 도움이됩니다.

+0

나는 pageLoad에서 그 메서드를 호출했지만 didnt 작업 중 하나 그리고 만약 내가 databind 전체 listview 미친 (빈 페이지의 무리를 점점 점점). 솔직히 전체 데이터 바인딩 절차는 어리 석다. 페이지를 변경하고 싶다면, 모든 페이지가 변경 될 때 데이터베이스에 낭비되는 호출을 databind해야한다. 이미 저장된 데이터를보다 효율적으로 순환 할 수 있다고 생각합니다. –