2009-12-24 162 views
0

我試圖創建一個客戶中繼器分頁和伴隨控制例如, Next Prev按鈕。自定義中繼器控制分頁和頁面導航控件

到目前爲止,我已經有了分頁數據的自定義轉發器,並且我可以讓它呈現導航按鈕,但我無法將事件分配給導航LinkBut​​tons。

這裏的自定義Repeater類:

using System.Web.UI.WebControls; 
using System.Web.UI; 
using System.Data; 
using System.Collections; 
using System; 

namespace ASPresentation.Controls 
{ 
[ToolboxData("<cc:PagedRepeater runat=server></cc:PagedRepeater>")] 
public class PagedRepeater : Repeater 
{ 
    public int PageSize { get; set; } 
    public int CurrentPageIndex { get; set; } 
    public PagedDataSource pagedData = new PagedDataSource(); 
    LinkButton NextBtn = new LinkButton(); 
    LinkButton PrevBtn = new LinkButton(); 

    public bool IsLastPage 
    { 
     get 
     { 
      return pagedData.IsLastPage; 
     } 
    } 
    public bool IsFirstPage 
    { 
     get 
     { 
      return pagedData.IsFirstPage; 
     } 
    } 

    public override object DataSource 
    { 
     get 
     { 
      return base.DataSource; 
     } 
     set 
     { 
      pagedData.DataSource = (IEnumerable)value; 
     } 
    } 

    protected void NextButtonClick(object sender, EventArgs e) 
    { 
     if (!IsLastPage) 
     { 
      CurrentPageIndex++; 
     } 
    } 

    protected void PrevButtonClick(object sender, EventArgs e) 
    { 
     if (!IsFirstPage) 
     { 
      CurrentPageIndex--; 
     } 
    } 

    protected override void OnInit(EventArgs e) 
    { 
     NextBtn.Text = "Next"; 
     PrevBtn.Text = "Prev"; 
     NextBtn.Click += new EventHandler(NextButtonClick); 
     PrevBtn.Click += new EventHandler(PrevButtonClick); 
     base.OnInit(e); 
    } 

    protected override void Render(HtmlTextWriter writer) 
    { 
     base.Controls.Add(PrevBtn); 
     base.Controls.Add(NextBtn); 
     base.Render(writer); 
    } 

    public override void DataBind() 
    { 
     pagedData.AllowPaging = true; 
     pagedData.PageSize = PageSize; 
     pagedData.CurrentPageIndex = CurrentPageIndex; 
     base.DataSource = pagedData; 
     base.DataBind(); 
    } 
} 
} 

任何人有什麼想法?

+0

我們需要查看中繼器和按鈕標記以提供幫助。 – Oded 2009-12-24 12:12:12

+0

沒有任何,它的全部在該類中生成。 – Morgeh 2009-12-24 13:27:49

+0

ASP.NET中的Repeater和其他網格選項有什麼問題?隨着頁面的DataPager控件? – 2009-12-24 15:53:24

回答

0

嘗試使此控件爲CompositeControl而不是從Repeater繼承。在組合內部,實例化Repeater,PagedDataSource,按鈕控件和其他必需的控件,並通過重寫CreateChildControls將它們添加到控件樹中。您現在也可以設置您的事件處理程序。然後,複合中的expose the repeater's templates。我提供這個建議是一種不同的方法,因爲您基本上正在編寫一個複合控件。但是,在渲染的時候你不會將按鈕添加到中繼器的其中一個模板中(比如頁腳),所以你可能會失去一些東西。