2012-03-23 6 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(); error: Невозможно вычислить Count для источника данных, который не реализует ICollection. –

+0

Можете ли вы указать ошибку ?? –

+0

error: Невозможно вычислить Count для источника данных, который не реализует ICollection –

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; 

Вдобавок сохраните текущий индекс страницы в представлении или сеансе.

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

приятный ответ .. вы действительно заслуживаете того, чтобы проголосовать за это .. измените свой запрос на ошибку 'error: не удается вычислить Count для источника данных, который не реализует ICollection.', что у вас есть ответ , это не касается заданного пейджинга. Используйте 'data.ToList()' вместо ручной выборки одного элемента. –