2013-05-30 4 views
0

테이블을 만드는 리피터로 페이징을 구현하려고합니다. 내가 가지고있는 문제는 tr 안에 버튼을 추가하는 것입니다.하지만 클릭 할 때 클릭 핸들러 안에 중단 점을 넣으면 아무 일도 일어나지 않습니다. 마크 업에 리피터의 버튼리피터 페이징, 동적 버튼

private void CreatePaging(PlaceHolder literal) 
    { 
     int numPage = (totalItems/ITEMS_PER_PAGE); 
     if (totalItems % ITEMS_PER_PAGE > 0) numPage++; 



     literal.Controls.Add(CreateButton("<<", "b")); 
     for (int i = 0; i < numPage; i++) { 



      if (currentPageIndex == i) 
      { 
       Label lbl = new Label(); 
       literal.Controls.Add(lbl); 
       lbl.Text = " " + (i + 1).ToString() + " ";  
      } 
      else { 
       literal.Controls.Add(CreateButton((i+1).ToString(), (i+1).ToString())); 
      } 

     } 
     literal.Controls.Add(CreateButton("&gt;&gt;", "f")); 
    } 



    LinkButton CreateButton(string title, string index) { 
     LinkButton lnk = new LinkButton(); 
     lnk.ID = index.ToString(); 
     lnk.Text = title; 
     lnk.CommandArgument = index.ToString(); 
     lnk.Click += new EventHandler(PageBtnClicked); 
     return lnk; 
    } 

답변

1

페이지 수명주기 동안 CreatePaging() 메서드가 호출되는지 확인하십시오. Page_Init 또는 Page_Load 중에 호출해야합니다.

이후 호출되면 ASP.NET에서 콜백을 처리 할 때 컨트롤이 만들어지지 않고 단추 클릭 이벤트를 전달할 처리기를 알 수 없습니다.

0

만들기

, 당신은 OnItemCommand = "rptMystuff_ItemCommand"

그리고 당신의 다음 페이지 버튼 /의 LinkButton 명령 이름 = "NextPage"

에 추가 할 수 그럼 코드 뒤에

protected void rptMyStuff_ItemCommand(object sender, RepeaterCommandEventArgs e) 
    { 
     if (e.CommandName == "NextPage") 
     { 
       //Code to switch pages 
     } 
     if (e.CommandName == "PreviousPage") 
     { 
       //More code 
     } 
    } 

편집 :

아, 현재 웹 페이지의 HiddenField보다 어떤 페이지를 기억하고 있는지 기억할 수 있습니다. 뭔가 같은

 public int PageNum 
     { 
      get { return string.IsNullOrEmpty(hfPageNum.Value) ? 0 : int.Parse(hfPageNum.Value); } 
      set { hfPageNum.Value = value.ToString(CultureInfo.InvariantCulture); } 
     } 
+0

마지막 비트를 보내 주셔서 감사합니다. –

+0

@ Dr.DenisMcCracleJizz 네, 속성으로 감싸 진 숨겨진 필드를 사용하는 것이 편리합니다. 각 포스트는 당신이 뭘 넣었는지 기억하고, 당신은 세션 메모리를 사용할 필요가 없습니다. –

관련 문제