2012-03-23 11 views

답변

6

사용 PagedDataSource 클래스 .......

//creating the PagedDataSource instance.... 
pg = new PagedDataSource(); 
pg.DataSource = myTable; 
pg.AllowPaging = true; 
pg.PageSize = 10; 

//Binding pg to datalist 
dl.DataSource = pg;//dl is datalist 
dl.DataBind(); 
+0

시도해 보았지만 오류가 발생했습니다. PagedDataSource pg = new PagedData 출처(); pg.DataSource = objclsfileupload.selectPendingContent (Session [ "UserId"]. ToString()); pg.AllowPaging = true; pg.PageSize = 1; DataList1.DataSource = pg; DataList1.DataBind(); 오류 : ICollection을 구현하지 않는 데이터 소스의 Count를 계산할 수 없습니다. –

+0

오류를 지정할 수 있습니까 ?? –

+0

오류 : ICollection을 구현하지 않는 데이터 소스에 대해 Count를 계산할 수 없습니다. –

1

Adding Paging Support to the Repeater or DataList with the PagedDataSource Class

만들기 페이지 수준을 참조하십시오 페이지 데이터 소스의 객체.

PagedDataSource objPds; 

// Populate the repeater control with the DataSet at page init or pageload 
objPds = new PagedDataSource(); 
objPds.DataSource = ds.Tables[0].DefaultView; 

// Indicate that the data should be paged 
objPds.AllowPaging = true; 

// Set the number of items you wish to display per page 
objPds.PageSize = 3; 

이 상태에서 현재 페이지 인덱스를 viewstate 또는 세션에 저장합니다.

public int CurrentPage 
{ 
    get 
    { 
     // look for current page in ViewState 
     object o = this.ViewState["_CurrentPage"]; 
     if (o == null) 
     return 0; // default page index of 0 
     else 
     return (int) o; 
    } 

    set 
    { 
     this.ViewState["_CurrentPage"] = value; 
    } 
} 

페이지의 증가 사이를 이동하거나 사용자 지정하여 원하는대로 페이지 번호를 감소하려면

private void cmdPrev_Click(object sender, System.EventArgs e) 
{ 
    // Set viewstate variable to the previous page 
    CurrentPage -= 1; 

    // Reload control 
    ItemsGet(); 
} 

private void cmdNext_Click(object sender, System.EventArgs e) 
{ 
    // Set viewstate variable to the next page 
    CurrentPage += 1; 

    // Reload control 
    ItemsGet(); 
} 

확인이 하나 .. Efficient Data Paging with the ASP.NET 2.0 DataList Control and ObjectDataSource

2

내가 대답 얻었다을

DataTable dt = new DataTable(); 
      var data = objclsfileupload.selectPendingContent(Session["UserId"].ToString());// Iqueryable data 
      var data2 = data.GetEnumerator(); 
      dt.Columns.Add("agegroup"); 
      dt.Columns.Add("contenttype"); 


      while (data2.MoveNext()) 
      { 
       var record = (filuploadclass)data2.Current; 
       dt.Rows.Add(record.agegroup, record.ContenetType); 

      } 

      pg.DataSource =dt.DefaultView ; 

      pg.AllowPaging = true; 
      pg.PageSize = 1; 
      DataList1.DataSource = pg; 
      DataList1.DataBind(); 
+1

좋은 답변 .. 정말로이 투표에 대한 투표권이 있습니다 .. 오류 : '오류 : ICollection을 구현하지 않은 데이터 소스에 대해 Count를 계산할 수 없습니다.'라는 질문에 대한 대답을 변경하십시오. . 그것은 세트 페이징에 관한 것이 아닙니다. 단일 항목을 수동으로 가져 오기보다는'data.ToList()'를 사용하십시오. –

관련 문제