2012-08-15 44 views
2

我使用我的自定義DataTable作爲DataSource以我的ListView。現在,我面臨的問題是Paging不起作用。帶分頁的自定義數據表

我想要做的是,當我點擊頁面12等等,我應該能夠一次只取10行。

我的意思是,當頁面加載時,我只想抓取前10行,點擊2我想抓取下10行。但是回到頁面1不應該再次執行SQL語句,只是從某處獲取數據(ViewState/Cache)。

什麼是正確的方法?我應該如何繼續?

注:我不想使用SQL DataSource

回答

0

你需要的是一個PagingDataSource ...

protected void Page_Load(object sender, EventArgs e) 
{ 
    BindData((hdnPage.Value != "" ? Convert.ToInt32(hdnPage.Value) : 0)); 
} 

private void BindData(int? pageNo) 
{ 
    PagedDataSource ds = new PagedDataSource(); 
    ds.DataSource = [YOUR DATA SOURCE]; 
    ds.AllowPaging = true; 
    ds.PageSize = 10; 
    ds.CurrentPageIndex = pageNo ?? 0; 

    pnlPaging.Controls.Clear(); 
    for (int i = 0; i < ds.PageCount; i++) 
    { 
     if (ds.PageCount < 2) 
     { 
      break; 
     } 

     if (pageNo == i || (pageNo == null && i == 0)) 
     { 
      pnlPaging.Controls.Add(new LiteralControl("<span style=\"display:inline-block;margin:0 2px 2px 0;\">" + (i + 1).ToString() + "</span>")); 
      continue; 
     } 

     SuprLinkButton lb = new SuprLinkButton() 
     { 
      CommandName = "pageThis", 
      CommandArgument = i.ToString(), 
      ID = "lbPage" + i.ToString(), 
      Text = (i + 1).ToString() 
     }; 
     lb.Attributes.Add("style", "display:inline-block;margin:0 2px 2px 0;"); 
     lb.Command += new CommandEventHandler(lb_Command); 
     pnlPaging.Controls.Add(lb); 
    } 

    [LISTVIEW].DataSource = ds; 
    [LISTVIEW].DataBind(); 
} 

我有一個小組來保存所有網頁鏈接和hiddenfield保存當前頁面索引。然後是分頁命令...

protected void lb_Command(object sender, CommandEventArgs e) 
{ 
    hdnPage.Value = e.CommandArgument.ToString(); 
    BindData(Convert.ToInt32(e.CommandArgument)); 
} 
+1

感謝您的答覆..可以給我完整的例子..所以我更容易理解,因爲我是ASP.NET新手..如果你有這個項目......你可以把它放在什麼地方? – user1593175 2012-08-15 17:54:24

+0

不幸的是我不能承載這個項目,但我確實更新了我的答案。您有初始綁定發生的頁面加載(調用BindData)和分頁命令。您只需在前端添加一個面板和隱藏字段(pnlPaging,hdnPage),然後用您的數據表替換[您的數據源]並用列表視圖的ID替換[LISTVIEW]。 – CoderMarkus 2012-08-15 18:02:53

+1

好的,謝謝,還有一件事...在DataTable中我應該從表中取出所有的行嗎?即'SELECT * FROM TABLT-NAME' – user1593175 2012-08-15 18:05:10