一个相当独立的.通用分页控件c#源码四(downmoon收集)

一个相当独立的.通用分页控件c#源码四(downmoon收集)public class DefaultPagerLayout:ITemplate
一个相当独立的.通用分页控件c#源码四(downmoon收集)一个相当独立的.通用分页控件c#源码四(downmoon收集)
... {
一个相当独立的.通用分页控件c#源码四(downmoon收集)
private ImageButtonNext;
一个相当独立的.通用分页控件c#源码四(downmoon收集)
private ImageButtonFirst;
一个相当独立的.通用分页控件c#源码四(downmoon收集)
private ImageButtonLast;
一个相当独立的.通用分页控件c#源码四(downmoon收集)
private ImageButtonPrevious;
一个相当独立的.通用分页控件c#源码四(downmoon收集)
private PanelPager;
一个相当独立的.通用分页控件c#源码四(downmoon收集)
一个相当独立的.通用分页控件c#源码四(downmoon收集)
public DefaultPagerLayout()
一个相当独立的.通用分页控件c#源码四(downmoon收集)一个相当独立的.通用分页控件c#源码四(downmoon收集)
... {
一个相当独立的.通用分页控件c#源码四(downmoon收集) Next
= new ImageButton();
一个相当独立的.通用分页控件c#源码四(downmoon收集) First
= new ImageButton();
一个相当独立的.通用分页控件c#源码四(downmoon收集) Last
= new ImageButton();
一个相当独立的.通用分页控件c#源码四(downmoon收集) Previous
= new ImageButton();
一个相当独立的.通用分页控件c#源码四(downmoon收集) Pager
= new Panel();
一个相当独立的.通用分页控件c#源码四(downmoon收集)
一个相当独立的.通用分页控件c#源码四(downmoon收集) Next.ID
= " Next " ;Next.AlternateText = " 下一页 " ;Next.ImageUrl = " play2.gif " ;
一个相当独立的.通用分页控件c#源码四(downmoon收集) First.ID
= " First " ;First.AlternateText = " 首页 " ;First.ImageUrl = " play2L_dis.gif " ;
一个相当独立的.通用分页控件c#源码四(downmoon收集) Last.ID
= " Last " ;Last.AlternateText = " 末页 " ;Last.ImageUrl = " play2_dis.gif " ;
一个相当独立的.通用分页控件c#源码四(downmoon收集) Previous.ID
= " Previous " ;Previous.AlternateText = " 上一页 " ;Previous.ImageUrl = " play2L.gif " ;
一个相当独立的.通用分页控件c#源码四(downmoon收集) Pager.ID
= " Pager " ;
一个相当独立的.通用分页控件c#源码四(downmoon收集) }

一个相当独立的.通用分页控件c#源码四(downmoon收集)
public void InstantiateIn(Controlcontrol)
一个相当独立的.通用分页控件c#源码四(downmoon收集)一个相当独立的.通用分页控件c#源码四(downmoon收集)
... {
一个相当独立的.通用分页控件c#源码四(downmoon收集) control.Controls.Clear();
一个相当独立的.通用分页控件c#源码四(downmoon收集) Tabletable
= new Table();
一个相当独立的.通用分页控件c#源码四(downmoon收集) table.BorderWidth
= Unit.Pixel( 0 );
一个相当独立的.通用分页控件c#源码四(downmoon收集) table.CellSpacing
= 1 ;
一个相当独立的.通用分页控件c#源码四(downmoon收集) table.CellPadding
= 0 ;
一个相当独立的.通用分页控件c#源码四(downmoon收集) TableRowrow
= new TableRow();
一个相当独立的.通用分页控件c#源码四(downmoon收集) row.VerticalAlign
= VerticalAlign.Top;
一个相当独立的.通用分页控件c#源码四(downmoon收集) table.Rows.Add(row);
一个相当独立的.通用分页控件c#源码四(downmoon收集) TableCellcell
= new TableCell();
一个相当独立的.通用分页控件c#源码四(downmoon收集) cell.HorizontalAlign
= HorizontalAlign.Right;
一个相当独立的.通用分页控件c#源码四(downmoon收集) cell.VerticalAlign
= VerticalAlign.Middle;
一个相当独立的.通用分页控件c#源码四(downmoon收集) cell.Controls.Add(First);
一个相当独立的.通用分页控件c#源码四(downmoon收集) cell.Controls.Add(Previous);
一个相当独立的.通用分页控件c#源码四(downmoon收集) row.Cells.Add(cell);
一个相当独立的.通用分页控件c#源码四(downmoon收集) cell
= new TableCell();
一个相当独立的.通用分页控件c#源码四(downmoon收集) cell.HorizontalAlign
= HorizontalAlign.Center;
一个相当独立的.通用分页控件c#源码四(downmoon收集) cell.Controls.Add(Pager);
一个相当独立的.通用分页控件c#源码四(downmoon收集) row.Cells.Add(cell);
一个相当独立的.通用分页控件c#源码四(downmoon收集) cell
= new TableCell();
一个相当独立的.通用分页控件c#源码四(downmoon收集) cell.VerticalAlign
= VerticalAlign.Middle;
一个相当独立的.通用分页控件c#源码四(downmoon收集) cell.Controls.Add(Next);
一个相当独立的.通用分页控件c#源码四(downmoon收集) cell.Controls.Add(Last);
一个相当独立的.通用分页控件c#源码四(downmoon收集) row.Cells.Add(cell);
一个相当独立的.通用分页控件c#源码四(downmoon收集)
一个相当独立的.通用分页控件c#源码四(downmoon收集) control.Controls.Add(table);
一个相当独立的.通用分页控件c#源码四(downmoon收集) }

一个相当独立的.通用分页控件c#源码四(downmoon收集) }

一个相当独立的.通用分页控件c#源码四(downmoon收集)


  DefaultPagerLayout通过编程的方式提供了所有的导航元素,并将它们加入到aspx页面,不过这一次导航元素用标准的HTML表格设置了格式。现在,如果用户没有提供一个表现模板,程序将自动提供一个默认的模板。

一个相当独立的.通用分页控件c#源码四(downmoon收集)
一个相当独立的.通用分页控件c#源码四(downmoon收集) [TemplateContainer(
typeof (LayoutContainer))]
一个相当独立的.通用分页控件c#源码四(downmoon收集)
public ITemplateLayout
一个相当独立的.通用分页控件c#源码四(downmoon收集)一个相当独立的.通用分页控件c#源码四(downmoon收集)
... {
一个相当独立的.通用分页控件c#源码四(downmoon收集)一个相当独立的.通用分页控件c#源码四(downmoon收集)
get ... { return (_layout == null ) ? new DefaultPagerLayout():_layout;}
一个相当独立的.通用分页控件c#源码四(downmoon收集)一个相当独立的.通用分页控件c#源码四(downmoon收集)
set ... {_layout = value;}
一个相当独立的.通用分页控件c#源码四(downmoon收集) }



  下面再来看看生成各个页面编号的过程。分页控件首先需要确定一些属性值,通过这些属性值来确定要生成多少不同的页面编号。

一个相当独立的.通用分页控件c#源码四(downmoon收集)public int CurrentPage
一个相当独立的.通用分页控件c#源码四(downmoon收集)一个相当独立的.通用分页控件c#源码四(downmoon收集)
... {
一个相当独立的.通用分页控件c#源码四(downmoon收集)
get
一个相当独立的.通用分页控件c#源码四(downmoon收集)一个相当独立的.通用分页控件c#源码四(downmoon收集)
... {
一个相当独立的.通用分页控件c#源码四(downmoon收集)
string cur = ( string )ViewState[ " CurrentPage " ];
一个相当独立的.通用分页控件c#源码四(downmoon收集)
return (cur == string .Empty || cur == null ) ? 1 : int .Parse(cur);
一个相当独立的.通用分页控件c#源码四(downmoon收集) }

一个相当独立的.通用分页控件c#源码四(downmoon收集)
set
一个相当独立的.通用分页控件c#源码四(downmoon收集)一个相当独立的.通用分页控件c#源码四(downmoon收集)
... {
一个相当独立的.通用分页控件c#源码四(downmoon收集) ViewState[
" CurrentPage " ] = value.ToString();}

一个相当独立的.通用分页控件c#源码四(downmoon收集) }

一个相当独立的.通用分页控件c#源码四(downmoon收集)
一个相当独立的.通用分页控件c#源码四(downmoon收集)
public int PagersToShow
一个相当独立的.通用分页控件c#源码四(downmoon收集)一个相当独立的.通用分页控件c#源码四(downmoon收集)
... {
一个相当独立的.通用分页控件c#源码四(downmoon收集)一个相当独立的.通用分页控件c#源码四(downmoon收集)
get ... { return _results;}
一个相当独立的.通用分页控件c#源码四(downmoon收集)一个相当独立的.通用分页控件c#源码四(downmoon收集)
set ... {_results = value;}
一个相当独立的.通用分页控件c#源码四(downmoon收集) }

一个相当独立的.通用分页控件c#源码四(downmoon收集)
一个相当独立的.通用分页控件c#源码四(downmoon收集)
public int ResultsToShow
一个相当独立的.通用分页控件c#源码四(downmoon收集)一个相当独立的.通用分页控件c#源码四(downmoon收集)
... {
一个相当独立的.通用分页控件c#源码四(downmoon收集)一个相当独立的.通用分页控件c#源码四(downmoon收集)
get ... { return _resultsperpage;}
一个相当独立的.通用分页控件c#源码四(downmoon收集)一个相当独立的.通用分页控件c#源码四(downmoon收集)
set ... {_resultsperpage = value;}
一个相当独立的.通用分页控件c#源码四(downmoon收集) }



  CurrentPage保存的实际上是页面编号的ViewState中的当前页面,PagersToShow方法定义的属性允许用户指定要显示多少页面,而ResultsToShow定义的属性则允许用户指定每页要显示多少记录,默认值是10。

  NumberofPagersToGenerate返回当前应当生成的页面编号的数量。

一个相当独立的.通用分页控件c#源码四(downmoon收集)private int PagerSequence
一个相当独立的.通用分页控件c#源码四(downmoon收集)一个相当独立的.通用分页控件c#源码四(downmoon收集)
... {
一个相当独立的.通用分页控件c#源码四(downmoon收集)
get
一个相当独立的.通用分页控件c#源码四(downmoon收集)一个相当独立的.通用分页控件c#源码四(downmoon收集)
... {
一个相当独立的.通用分页控件c#源码四(downmoon收集)
return Convert.ToInt32
一个相当独立的.通用分页控件c#源码四(downmoon收集) (Math.Ceiling((
double )CurrentPage / ( double )PagersToShow));}

一个相当独立的.通用分页控件c#源码四(downmoon收集) }

一个相当独立的.通用分页控件c#源码四(downmoon收集)
一个相当独立的.通用分页控件c#源码四(downmoon收集)
private int NumberOfPagersToGenerate
一个相当独立的.通用分页控件c#源码四(downmoon收集)一个相当独立的.通用分页控件c#源码四(downmoon收集)
... {
一个相当独立的.通用分页控件c#源码四(downmoon收集)一个相当独立的.通用分页控件c#源码四(downmoon收集)
get ... { return PagerSequence * PagersToShow;}
一个相当独立的.通用分页控件c#源码四(downmoon收集) }

一个相当独立的.通用分页控件c#源码四(downmoon收集)
一个相当独立的.通用分页控件c#源码四(downmoon收集)
private int TotalPagesToShow
一个相当独立的.通用分页控件c#源码四(downmoon收集)一个相当独立的.通用分页控件c#源码四(downmoon收集)
... {
一个相当独立的.通用分页控件c#源码四(downmoon收集)一个相当独立的.通用分页控件c#源码四(downmoon收集)
get ... { return Convert.ToInt32(Math.Ceiling(( double )TotalResults / ( double )_resultsperpage));}
一个相当独立的.通用分页控件c#源码四(downmoon收集) }

一个相当独立的.通用分页控件c#源码四(downmoon收集)
public int TotalResults
一个相当独立的.通用分页控件c#源码四(downmoon收集)一个相当独立的.通用分页控件c#源码四(downmoon收集)
... {
一个相当独立的.通用分页控件c#源码四(downmoon收集)一个相当独立的.通用分页控件c#源码四(downmoon收集)
get ... { return _builder.Adapter.TotalCount;}
一个相当独立的.通用分页控件c#源码四(downmoon收集) }



  TotalPagesToShow方法返回要显示的总页面数量,由用户预设的ResultsToShow属性调整。
  虽然ASP.NET定义了一些默认的样式,不过对于分页控件的用户它们可能不是很实用。用户可以通过自定义样式来调整分页控件的外观。

一个相当独立的.通用分页控件c#源码四(downmoon收集)一个相当独立的.通用分页控件c#源码四(downmoon收集)public StyleUnSelectedPagerStyle ... { get ... { return UnselectedPager;} }
一个相当独立的.通用分页控件c#源码四(downmoon收集)一个相当独立的.通用分页控件c#源码四(downmoon收集)
public StyleSelectedPagerStyle ... { get ... { return SelectedPager;} }



  UnSelectedPagerStyle提供了页面编号未选中时所用的样式,而SelectedPagerStyle提供了页面编号被选中时所用的样式。

一个相当独立的.通用分页控件c#源码四(downmoon收集)private void GeneratePagers(WebControlcontrol)
一个相当独立的.通用分页控件c#源码四(downmoon收集)一个相当独立的.通用分页控件c#源码四(downmoon收集)
... {
一个相当独立的.通用分页控件c#源码四(downmoon收集) control.Controls.Clear();
一个相当独立的.通用分页控件c#源码四(downmoon收集)
int pager = (PagerSequence - 1 ) * PagersToShow + 1 ;
一个相当独立的.通用分页控件c#源码四(downmoon收集)
一个相当独立的.通用分页控件c#源码四(downmoon收集)
for (;pager< = NumberOfPagersToGenerate && pager< = TotalPagesToShow;pager ++ )
一个相当独立的.通用分页控件c#源码四(downmoon收集)一个相当独立的.通用分页控件c#源码四(downmoon收集)
... {
一个相当独立的.通用分页控件c#源码四(downmoon收集) LinkButtonlink
= new LinkButton();
一个相当独立的.通用分页控件c#源码四(downmoon收集) link.Text
= pager.ToString();
一个相当独立的.通用分页控件c#源码四(downmoon收集) link.ID
= pager.ToString();
一个相当独立的.通用分页控件c#源码四(downmoon收集) link.Click
+= new EventHandler( this .Pager_Click);
一个相当独立的.通用分页控件c#源码四(downmoon收集)
if (link.ID.Equals(CurrentPage.ToString()))
一个相当独立的.通用分页控件c#源码四(downmoon收集) link.MergeStyle(SelectedPagerStyle);
一个相当独立的.通用分页控件c#源码四(downmoon收集)
else
一个相当独立的.通用分页控件c#源码四(downmoon收集) link.MergeStyle(UnSelectedPagerStyle);
一个相当独立的.通用分页控件c#源码四(downmoon收集)
一个相当独立的.通用分页控件c#源码四(downmoon收集) control.Controls.Add(link);
一个相当独立的.通用分页控件c#源码四(downmoon收集) control.Controls.Add(
new LiteralControl( " " ));
一个相当独立的.通用分页控件c#源码四(downmoon收集) }

一个相当独立的.通用分页控件c#源码四(downmoon收集) }

一个相当独立的.通用分页控件c#源码四(downmoon收集)
一个相当独立的.通用分页控件c#源码四(downmoon收集)
private void GeneratePagers()
一个相当独立的.通用分页控件c#源码四(downmoon收集)一个相当独立的.通用分页控件c#源码四(downmoon收集)
... {
一个相当独立的.通用分页控件c#源码四(downmoon收集) GeneratePagers(Holder);
一个相当独立的.通用分页控件c#源码四(downmoon收集) }




   GeneratePagers方法动态地创建所有页面编号,页面编号是LinkButton类型的按钮。各个页面编号的标签和ID属性通过循环赋值,同 时,点击事件被绑定到适当的事件句柄。最后,页面编号被加入到一个容器控件——在本例中是一个Panel对象。按钮ID起到了标识哪一个按钮触发点击事件 的作用。下面是事件句柄的定义:

一个相当独立的.通用分页控件c#源码四(downmoon收集)private void Pager_Click( object sender,System.EventArgse)
一个相当独立的.通用分页控件c#源码四(downmoon收集)一个相当独立的.通用分页控件c#源码四(downmoon收集)
... {
一个相当独立的.通用分页控件c#源码四(downmoon收集) LinkButtonbutton
= (LinkButton)sender;
一个相当独立的.通用分页控件c#源码四(downmoon收集) CurrentPage
= int .Parse(button.ID);
一个相当独立的.通用分页控件c#源码四(downmoon收集) RaiseEvent(PageChanged,
this , new PageChangedEventArgs(CurrentPage,PagedEventInvoker.Pager));
一个相当独立的.通用分页控件c#源码四(downmoon收集) Update();
一个相当独立的.通用分页控件c#源码四(downmoon收集) }

一个相当独立的.通用分页控件c#源码四(downmoon收集)
一个相当独立的.通用分页控件c#源码四(downmoon收集)
private void Next_Click( object sender,System.Web.UI.ImageClickEventArgse)
一个相当独立的.通用分页控件c#源码四(downmoon收集)一个相当独立的.通用分页控件c#源码四(downmoon收集)
... {
一个相当独立的.通用分页控件c#源码四(downmoon收集)
if (CurrentPage<TotalPagesToShow)
一个相当独立的.通用分页控件c#源码四(downmoon收集) CurrentPage
++ ;
一个相当独立的.通用分页控件c#源码四(downmoon收集) RaiseEvent(PageChanged,
this , new PageChangedEventArgs(CurrentPage,PagedEventInvoker.Next));
一个相当独立的.通用分页控件c#源码四(downmoon收集) Update();
一个相当独立的.通用分页控件c#源码四(downmoon收集) }

一个相当独立的.通用分页控件c#源码四(downmoon收集)
一个相当独立的.通用分页控件c#源码四(downmoon收集)
private void Previous_Click( object sender,System.Web.UI.ImageClickEventArgse)
一个相当独立的.通用分页控件c#源码四(downmoon收集)一个相当独立的.通用分页控件c#源码四(downmoon收集)
... {
一个相当独立的.通用分页控件c#源码四(downmoon收集)
if (CurrentPage> 1 )
一个相当独立的.通用分页控件c#源码四(downmoon收集) CurrentPage
-- ;
一个相当独立的.通用分页控件c#源码四(downmoon收集) RaiseEvent(PageChanged,
this , new PageChangedEventArgs(CurrentPage,PagedEventInvoker.Previous));
一个相当独立的.通用分页控件c#源码四(downmoon收集) Update();
一个相当独立的.通用分页控件c#源码四(downmoon收集) }

一个相当独立的.通用分页控件c#源码四(downmoon收集)
private void First_Click( object sender,System.Web.UI.ImageClickEventArgse)
一个相当独立的.通用分页控件c#源码四(downmoon收集)一个相当独立的.通用分页控件c#源码四(downmoon收集)
... {
一个相当独立的.通用分页控件c#源码四(downmoon收集) CurrentPage
= 1 ;
一个相当独立的.通用分页控件c#源码四(downmoon收集) RaiseEvent(PageChanged,
this , new PageChangedEventArgs(CurrentPage,PagedEventInvoker.First));
一个相当独立的.通用分页控件c#源码四(downmoon收集) Update();
一个相当独立的.通用分页控件c#源码四(downmoon收集) }

一个相当独立的.通用分页控件c#源码四(downmoon收集)
一个相当独立的.通用分页控件c#源码四(downmoon收集)
private void Last_Click( object sender,System.Web.UI.ImageClickEventArgse)
一个相当独立的.通用分页控件c#源码四(downmoon收集)一个相当独立的.通用分页控件c#源码四(downmoon收集)
... {
一个相当独立的.通用分页控件c#源码四(downmoon收集) CurrentPage
= TotalPagesToShow;
一个相当独立的.通用分页控件c#源码四(downmoon收集) RaiseEvent(PageChanged,
this , new PageChangedEventArgs(CurrentPage,PagedEventInvoker.Last));
一个相当独立的.通用分页控件c#源码四(downmoon收集) Update();
一个相当独立的.通用分页控件c#源码四(downmoon收集) }



  这些事件句柄都相似,它们首先更改分页控件的当前页面,然后刷新绑定的控件。

一个相当独立的.通用分页控件c#源码四(downmoon收集)private void Update()
一个相当独立的.通用分页控件c#源码四(downmoon收集)一个相当独立的.通用分页控件c#源码四(downmoon收集)
... {
一个相当独立的.通用分页控件c#源码四(downmoon收集)
if ( ! HasParentControlCalledDataBinding) return ;
一个相当独立的.通用分页控件c#源码四(downmoon收集) ApplyDataSensitivityRules();
一个相当独立的.通用分页控件c#源码四(downmoon收集) BindParent();
一个相当独立的.通用分页控件c#源码四(downmoon收集) BoundControl.DataBind();
一个相当独立的.通用分页控件c#源码四(downmoon收集) }



   首先,分页控件通过调用HasParentControlCalledDataBinding方法检查是否已经初始化了必要的适配器。如果是,则将前面 指出的根据数据显示情况自动调整控件的规则应用到当前的控件,这些规则使得分页控件根据BoundControl中数据的不同情况表现出不同的行为。虽然 这些规则由分页控件内部控制,但必要时可以用[GoF] State模式方便地移出到控件之外。

一个相当独立的.通用分页控件c#源码四(downmoon收集)public bool IsDataSensitive
一个相当独立的.通用分页控件c#源码四(downmoon收集)一个相当独立的.通用分页控件c#源码四(downmoon收集)
... {
一个相当独立的.通用分页控件c#源码四(downmoon收集)一个相当独立的.通用分页控件c#源码四(downmoon收集)
get ... { return _isdatasensitive;}
一个相当独立的.通用分页控件c#源码四(downmoon收集)一个相当独立的.通用分页控件c#源码四(downmoon收集)
set ... {_isdatasensitive = value;}
一个相当独立的.通用分页控件c#源码四(downmoon收集) }

一个相当独立的.通用分页控件c#源码四(downmoon收集)
一个相当独立的.通用分页控件c#源码四(downmoon收集)
private bool IsPagerVisible
一个相当独立的.通用分页控件c#源码四(downmoon收集)一个相当独立的.通用分页控件c#源码四(downmoon收集)
... {
一个相当独立的.通用分页控件c#源码四(downmoon收集)一个相当独立的.通用分页控件c#源码四(downmoon收集)
get ... { return (TotalPagesToShow != 1 ) && IsDataSensitive;}
一个相当独立的.通用分页控件c#源码四(downmoon收集) }

一个相当独立的.通用分页控件c#源码四(downmoon收集)
一个相当独立的.通用分页控件c#源码四(downmoon收集)
private bool IsPreviousVisible
一个相当独立的.通用分页控件c#源码四(downmoon收集)一个相当独立的.通用分页控件c#源码四(downmoon收集)
... {
一个相当独立的.通用分页控件c#源码四(downmoon收集)
get
一个相当独立的.通用分页控件c#源码四(downmoon收集)一个相当独立的.通用分页控件c#源码四(downmoon收集)
... {
一个相当独立的.通用分页控件c#源码四(downmoon收集)
return ( ! IsDataSensitive) ? true :
一个相当独立的.通用分页控件c#源码四(downmoon收集) (CurrentPage
!= 1 );
一个相当独立的.通用分页控件c#源码四(downmoon收集) }

一个相当独立的.通用分页控件c#源码四(downmoon收集) }

一个相当独立的.通用分页控件c#源码四(downmoon收集)
一个相当独立的.通用分页控件c#源码四(downmoon收集)
private bool IsNextVisible
一个相当独立的.通用分页控件c#源码四(downmoon收集)一个相当独立的.通用分页控件c#源码四(downmoon收集)
... {
一个相当独立的.通用分页控件c#源码四(downmoon收集)
get
一个相当独立的.通用分页控件c#源码四(downmoon收集)一个相当独立的.通用分页控件c#源码四(downmoon收集)
... {
一个相当独立的.通用分页控件c#源码四(downmoon收集)
return ( ! IsDataSensitive) ? true :
一个相当独立的.通用分页控件c#源码四(downmoon收集) (CurrentPage
!= TotalPagesToShow);
一个相当独立的.通用分页控件c#源码四(downmoon收集) }

一个相当独立的.通用分页控件c#源码四(downmoon收集) }

一个相当独立的.通用分页控件c#源码四(downmoon收集)
一个相当独立的.通用分页控件c#源码四(downmoon收集)
private void ApplyDataSensitivityRules()
一个相当独立的.通用分页控件c#源码四(downmoon收集)一个相当独立的.通用分页控件c#源码四(downmoon收集)
... {
一个相当独立的.通用分页控件c#源码四(downmoon收集) FirstButton.Visible
= IsPreviousVisible;
一个相当独立的.通用分页控件c#源码四(downmoon收集) PreviousButton.Visible
= IsPreviousVisible;
一个相当独立的.通用分页控件c#源码四(downmoon收集) LastButton.Visible
= IsNextVisible;
一个相当独立的.通用分页控件c#源码四(downmoon收集) NextButton.Visible
= IsNextVisible;
一个相当独立的.通用分页控件c#源码四(downmoon收集)
if (IsPagerVisible)GeneratePagers();
一个相当独立的.通用分页控件c#源码四(downmoon收集) }



   ApplyDataSensitivityRules方法实施预定义的规则,诸如IsPagerVisible、IsPreviousVisible和 IsNextVisible。默认情况下,分页控件将启用这些规则,但用户可以通过设置IsDataSensitive属性来关闭这些规则。

  至此为止,分页控件的显示部分基本设计完毕。最后剩下的结束工作是提供几个事件句柄,使得用户能够在各种分页控件事件出现时进行必要的调整。

一个相当独立的.通用分页控件c#源码四(downmoon收集)public delegate void PageDelegate( object sender,PageChangedEventArgse);
一个相当独立的.通用分页控件c#源码四(downmoon收集)
一个相当独立的.通用分页控件c#源码四(downmoon收集)一个相当独立的.通用分页控件c#源码四(downmoon收集)
public enum PagedEventInvoker ... {Next,Previous,First,Last,Pager}
一个相当独立的.通用分页控件c#源码四(downmoon收集)
一个相当独立的.通用分页控件c#源码四(downmoon收集)
public class PageChangedEventArgs:EventArgs
一个相当独立的.通用分页控件c#源码四(downmoon收集)一个相当独立的.通用分页控件c#源码四(downmoon收集)
... {
一个相当独立的.通用分页控件c#源码四(downmoon收集)
private int newpage;
一个相当独立的.通用分页控件c#源码四(downmoon收集)
private Enuminvoker;
一个相当独立的.通用分页控件c#源码四(downmoon收集)
一个相当独立的.通用分页控件c#源码四(downmoon收集)
public PageChangedEventArgs( int newpage): base ()
一个相当独立的.通用分页控件c#源码四(downmoon收集)一个相当独立的.通用分页控件c#源码四(downmoon收集)
... {
一个相当独立的.通用分页控件c#源码四(downmoon收集)
this .newpage = newpage;
一个相当独立的.通用分页控件c#源码四(downmoon收集) }

一个相当独立的.通用分页控件c#源码四(downmoon收集)
public PageChangedEventArgs( int newpage,PagedEventInvokerinvoker)
一个相当独立的.通用分页控件c#源码四(downmoon收集)一个相当独立的.通用分页控件c#源码四(downmoon收集)
... {
一个相当独立的.通用分页控件c#源码四(downmoon收集)
this .newpage = newpage;
一个相当独立的.通用分页控件c#源码四(downmoon收集)
this .invoker = invoker;
一个相当独立的.通用分页控件c#源码四(downmoon收集) }

一个相当独立的.通用分页控件c#源码四(downmoon收集)一个相当独立的.通用分页控件c#源码四(downmoon收集)
public int NewPage ... { get ... { return newpage;} }
一个相当独立的.通用分页控件c#源码四(downmoon收集)一个相当独立的.通用分页控件c#源码四(downmoon收集)
public EnumEventInvoker ... { get ... { return invoker;} }
一个相当独立的.通用分页控件c#源码四(downmoon收集) }

一个相当独立的.通用分页控件c#源码四(downmoon收集)



   由于分页控件需要返回自定义的事件参数,所以我们定义了一个专用的PageChangedEventArgs类。 PageChangedEventArgs类返回PagedEventInvoker类型,PagedEventInvoker类型是可能触发事件的控件 的枚举量。为了处理自定义的事件参数,我们定义了一个新的delegate,即PageDelegate。事件按照下面的形式定义:

一个相当独立的.通用分页控件c#源码四(downmoon收集)public event PageDelegatePageChanged;
一个相当独立的.通用分页控件c#源码四(downmoon收集)
public event EventHandlerDataUpdate;



  当事件没有对应的事件监听器时,ASP.NET会抛出一个异常。分页控件定义了下列RaiseEvent方法。

一个相当独立的.通用分页控件c#源码四(downmoon收集)private void RaiseEvent(EventHandlere, object sender)
一个相当独立的.通用分页控件c#源码四(downmoon收集)一个相当独立的.通用分页控件c#源码四(downmoon收集)
... {
一个相当独立的.通用分页控件c#源码四(downmoon收集)
this .RaiseEvent(e, this , null );
一个相当独立的.通用分页控件c#源码四(downmoon收集) }

一个相当独立的.通用分页控件c#源码四(downmoon收集)
一个相当独立的.通用分页控件c#源码四(downmoon收集)
private void RaiseEvent(EventHandlere, object sender,PageChangedEventArgsargs)
一个相当独立的.通用分页控件c#源码四(downmoon收集)一个相当独立的.通用分页控件c#源码四(downmoon收集)
... {
一个相当独立的.通用分页控件c#源码四(downmoon收集)
if (e != null )
一个相当独立的.通用分页控件c#源码四(downmoon收集)一个相当独立的.通用分页控件c#源码四(downmoon收集)
... {
一个相当独立的.通用分页控件c#源码四(downmoon收集) e(sender,args);
一个相当独立的.通用分页控件c#源码四(downmoon收集) }

一个相当独立的.通用分页控件c#源码四(downmoon收集) }

一个相当独立的.通用分页控件c#源码四(downmoon收集)
private void RaiseEvent(PageDelegatee, object sender)
一个相当独立的.通用分页控件c#源码四(downmoon收集)一个相当独立的.通用分页控件c#源码四(downmoon收集)
... {
一个相当独立的.通用分页控件c#源码四(downmoon收集)
this .RaiseEvent(e, this , null );
一个相当独立的.通用分页控件c#源码四(downmoon收集) }

一个相当独立的.通用分页控件c#源码四(downmoon收集)
一个相当独立的.通用分页控件c#源码四(downmoon收集)
private void RaiseEvent(PageDelegatee, object sender,PageChangedEventArgsargs)
一个相当独立的.通用分页控件c#源码四(downmoon收集)一个相当独立的.通用分页控件c#源码四(downmoon收集)
... {
一个相当独立的.通用分页控件c#源码四(downmoon收集)
if (e != null )
一个相当独立的.通用分页控件c#源码四(downmoon收集)一个相当独立的.通用分页控件c#源码四(downmoon收集)
... {
一个相当独立的.通用分页控件c#源码四(downmoon收集) e(sender,args);
一个相当独立的.通用分页控件c#源码四(downmoon收集) }

一个相当独立的.通用分页控件c#源码四(downmoon收集) }



  现在事件句柄可以通过调用各个RaiseEvent方法来触发事件了。

  四、应用实例

  至此为止,分页控件的设计已经全部完成,可以正式使用了。要使用该分页控件,只要把它绑定到一个表现控件即可。

一个相当独立的.通用分页控件c#源码四(downmoon收集)
一个相当独立的.通用分页控件c#源码四(downmoon收集) <asp:RepeaterID="repeater"Runat="server">
一个相当独立的.通用分页控件c#源码四(downmoon收集) <ItemTemplate>
一个相当独立的.通用分页控件c#源码四(downmoon收集) 列1:
一个相当独立的.通用分页控件c#源码四(downmoon收集) <%#Convert.ToString(DataBinder.Eval(Container.DataItem,"Column1"))%>
一个相当独立的.通用分页控件c#源码四(downmoon收集) <br>
一个相当独立的.通用分页控件c#源码四(downmoon收集) 列2:
一个相当独立的.通用分页控件c#源码四(downmoon收集) <%#Convert.ToString(DataBinder.Eval(Container.DataItem,"Column2"))%>
一个相当独立的.通用分页控件c#源码四(downmoon收集) <br>
一个相当独立的.通用分页控件c#源码四(downmoon收集) 列3:
一个相当独立的.通用分页控件c#源码四(downmoon收集) <%#Convert.ToString(DataBinder.Eval(Container.DataItem,"Column3"))%>
一个相当独立的.通用分页控件c#源码四(downmoon收集) <br>
一个相当独立的.通用分页控件c#源码四(downmoon收集) <hr>
一个相当独立的.通用分页控件c#源码四(downmoon收集) </ItemTemplate>
一个相当独立的.通用分页控件c#源码四(downmoon收集) </asp:Repeater>
一个相当独立的.通用分页控件c#源码四(downmoon收集) <cc1:Pagerid="pager"ResultsToShow="2"runat="server"BindToControl="repeater">
一个相当独立的.通用分页控件c#源码四(downmoon收集) <SELECTEDPAGERSTYLEBackColor="Yellow"/>
一个相当独立的.通用分页控件c#源码四(downmoon收集) </cc1:Pager>



  上面的aspx页面将分页控件绑定到一个Repeater控件,设置每页显示的记录数量为2,选中的页面编号颜色为黄色,使用默认的布局,效果如图一。下面是另一个例子,它将分页控件绑定到一个DataGrid,效果如图二。

一个相当独立的.通用分页控件c#源码四(downmoon收集)
<
asp:DataGridID = " Grid " Runat = " server " ></ asp:DataGrid >
一个相当独立的.通用分页控件c#源码四(downmoon收集)
< cc1:Pagerid = " PagerGrid " ResultsToShow = " 2 " runat = " server " BindToControl = " Grid " >
一个相当独立的.通用分页控件c#源码四(downmoon收集)
< SELECTEDPAGERSTYLEBackColor = " Red " ></ SELECTEDPAGERSTYLE >
一个相当独立的.通用分页控件c#源码四(downmoon收集)
< LAYOUT >
一个相当独立的.通用分页控件c#源码四(downmoon收集)
< asp:ImageButtonid = " First " Runat = " server " imageUrl = " play2L_dis.gif " AlternateText = " 首页 " ></ asp:ImageButton >
一个相当独立的.通用分页控件c#源码四(downmoon收集)
< asp:ImageButtonid = " Previous " Runat = " server " imageUrl = " play2L.gif " AlternateText = " 上一页 " ></ asp:ImageButton >
一个相当独立的.通用分页控件c#源码四(downmoon收集)
< asp:ImageButtonid = " Next " Runat = " server " imageUrl = " play2.gif " AlternateText = " 下一页 " ></ asp:ImageButton >
一个相当独立的.通用分页控件c#源码四(downmoon收集)
< asp:ImageButtonid = " Last " Runat = " server " imageUrl = " play2_dis.gif " AlternateText = " 末页 " ></ asp:ImageButton >
一个相当独立的.通用分页控件c#源码四(downmoon收集)
< asp:Panelid = " Pager " Runat = " server " ></ asp:Panel >
一个相当独立的.通用分页控件c#源码四(downmoon收集)
</ LAYOUT >
一个相当独立的.通用分页控件c#源码四(downmoon收集)
</ cc1:Pager >



  测试表明,分页控件并不依赖于特定的表现控件,它可以方便地处理不同的数据源,而且很容易使用,请读者下载本文后面的源代码参见完整的例子。

   虽然学习开发自定义Web控件不是一件轻松的事情,但掌握这项技能带来的好处不言而喻,只要稍微增加一些工作量,开发者就可以将普通的Web控件改换成 多用途的通用控件,数十倍地提高工作效率,本文的分页控件只是创建通用控件来满足现有和将来表现需要的其中一个例子而已。

应用实例:
一个相当独立的.通用分页控件c#源码四(downmoon收集)

一个相当独立的.通用分页控件c#源码四(downmoon收集)

下载地址二:

http://download.****.net/source/334554

下载地址一:

http://files.cnblogs.com/downmoon/testGrid.rar


助人等于自助! [email protected]