?? contentlist.cs
字號:
// Create footer template
if (_footerTemplate != null) {
ctlItem = new ContentItem( 0, null, ListItemType.Footer);
FooterTemplate.InstantiateIn( ctlItem );
Controls.Add( ctlItem );
_colContentItems.Add(ctlItem);
}
}
// store the number of items created in viewstate for postback scenarios
NumItems = itemCount;
}
//*********************************************************************
//
// RenderContents Method
//
// Render the containing table and pager.
//
//*********************************************************************
override protected void RenderContents(HtmlTextWriter writer) {
int repeatCounter = 0;
// open main table row
if (_repeatLayout == RepeatLayout.Table)
writer.RenderBeginTag(HtmlTextWriterTag.Tr);
// display all the content items
foreach (ContentItem item in _colContentItems) {
repeatCounter ++;
// open table cell (and possibly row)
if (_repeatLayout == RepeatLayout.Table) {
if (repeatCounter > _repeatColumns) {
writer.RenderEndTag(); // for last open row
writer.RenderBeginTag(HtmlTextWriterTag.Tr); // for new open row
repeatCounter = 1;
}
writer.RenderBeginTag(HtmlTextWriterTag.Td);
}
item.RenderControl(writer);
// close table cell
if (_repeatLayout == RepeatLayout.Table)
writer.RenderEndTag();
}
// close main table row
if (_repeatLayout == RepeatLayout.Table)
writer.RenderEndTag();
// add the pager ui
RenderPager(writer);
}
//*********************************************************************
//
// RenderPager Method
//
// Render the page numbers for the pager.
//
//*********************************************************************
protected void RenderPager(HtmlTextWriter writer) {
// Calculate total Pages
_totalPages = TotalRecords / _sectionInfo.RecordsPerPage;
// Now do a mod for any remainder
if ((TotalRecords % _sectionInfo.RecordsPerPage) > 0)
_totalPages ++;
// don't render anything if only 1 page
if (_totalPages < 2)
return;
// Open main pager table
if (_repeatLayout == RepeatLayout.Flow) {
writer.AddAttribute(HtmlTextWriterAttribute.Width, "100%");
writer.RenderBeginTag(HtmlTextWriterTag.Table);
}
writer.RenderBeginTag(HtmlTextWriterTag.Tr);
writer.AddAttribute(HtmlTextWriterAttribute.Valign, "bottom");
writer.AddAttribute(HtmlTextWriterAttribute.Colspan, _repeatColumns.ToString());
writer.RenderBeginTag(HtmlTextWriterTag.Td);
writer.AddAttribute(HtmlTextWriterAttribute.Width, "100%");
writer.RenderBeginTag(HtmlTextWriterTag.Table);
writer.RenderBeginTag(HtmlTextWriterTag.Tr);
writer.RenderBeginTag(HtmlTextWriterTag.Td);
// Open page numbers table
writer.RenderBeginTag(HtmlTextWriterTag.Table);
writer.RenderBeginTag(HtmlTextWriterTag.Tr);
// show previous link
if (CurrentPage > 1) {
writer.RenderBeginTag(HtmlTextWriterTag.Td);
writer.AddAttribute(HtmlTextWriterAttribute.Href, "javascript:" + Page.GetPostBackEventReference(this, "prev") );
writer.RenderBeginTag(HtmlTextWriterTag.A);
writer.Write("<<");
writer.RenderEndTag();
writer.RenderEndTag();
}
// if less than 11 pages, render all page numbers
if (_totalPages < 11)
RenderAllPages(writer);
else
// otherwise, do complicated stuff
RenderPageRange(writer);
// show next link
if (CurrentPage < _totalPages) {
writer.RenderBeginTag(HtmlTextWriterTag.Td);
writer.AddAttribute(HtmlTextWriterAttribute.Href, "javascript:" + Page.GetPostBackEventReference(this, "next") );
writer.RenderBeginTag(HtmlTextWriterTag.A);
writer.Write(">>");
writer.RenderEndTag();
writer.RenderEndTag();
}
// close page numbers table
writer.RenderEndTag();
writer.RenderEndTag();
writer.RenderEndTag();
// if pagerText exists, show it
if (PagerText != String.Empty) {
writer.AddAttribute(HtmlTextWriterAttribute.Align, "right");
writer.RenderBeginTag(HtmlTextWriterTag.Td);
writer.Write(PagerText, CurrentPage, _totalPages);
writer.RenderEndTag();
}
// close table
writer.RenderEndTag();
writer.RenderEndTag();
writer.RenderEndTag();
writer.RenderEndTag();
if (_repeatLayout == RepeatLayout.Flow)
writer.RenderEndTag();
}
//*********************************************************************
//
// RenderAllPages Method
//
// This is the easy case, we just loop through and display
// all the pages.
//
//*********************************************************************
private void RenderAllPages(HtmlTextWriter writer) {
// display page numbers
for (int pageNumber=1;pageNumber <= _totalPages;pageNumber++) {
AddPageNumber(writer, pageNumber);
}
}
//*********************************************************************
//
// RenderPageRange Method
//
// This is the hard case. Too many pages to display them all so
// instead we display ellipsis.
//
//*********************************************************************
private void RenderPageRange(HtmlTextWriter writer) {
int lowerbound = CurrentPage - 1;
int upperbound = CurrentPage + 1;
// range check
lowerbound = 1;
if (upperbound > _totalPages)
upperbound = _totalPages;
// Show Lower Range
// if the currentpage is closer to the beginning than to the end,
// then show all pages to the current page, otherwise, just
// display first 3 pages
if ( CurrentPage < (_totalPages - CurrentPage) )
for (int i=1;i<lowerbound;i++)
AddPageNumber(writer, i);
else {
for (int i=1;i<4 & i<lowerbound;i++)
AddPageNumber(writer, i);
// Display ellipsis
if (lowerbound > 4) {
writer.RenderBeginTag(HtmlTextWriterTag.Td);
writer.Write("...");
writer.RenderEndTag();
}
}
// show mid range
for (int i=lowerbound;i<=upperbound;i++)
AddPageNumber(writer,i);
// Show Upper Range
// if the currentpage is closer to the end than to the beginning,
// then show all pages from the end to the current page, otherwise, just
// display first 3 pages
if (upperbound < _totalPages) {
if ( CurrentPage > (_totalPages - CurrentPage) )
for (int i=upperbound+1;i <= _totalPages;i++)
AddPageNumber(writer, i);
else {
// Display ellipsis
if (upperbound < (_totalPages-2)) {
writer.RenderBeginTag(HtmlTextWriterTag.Td);
writer.Write("...");
writer.RenderEndTag();
}
for (int i=_totalPages -1;i <= _totalPages;i++)
AddPageNumber(writer, i);
}
}
}
//*********************************************************************
//
// AddPageNumber Method
//
// Display an individual page number.
//
//*********************************************************************
void AddPageNumber(HtmlTextWriter writer, int pageNumber) {
writer.RenderBeginTag(HtmlTextWriterTag.Td);
if (pageNumber == CurrentPage)
writer.Write("[");
writer.AddAttribute(HtmlTextWriterAttribute.Href, "javascript:" + Page.GetPostBackEventReference(this, pageNumber.ToString()) );
writer.AddAttribute(HtmlTextWriterAttribute.Name, UniqueID );
writer.AddAttribute(HtmlTextWriterAttribute.Id, UniqueID + "_" + pageNumber.ToString() );
writer.RenderBeginTag(HtmlTextWriterTag.A);
writer.Write(pageNumber);
writer.RenderEndTag();
if (pageNumber == CurrentPage)
writer.Write("]");
writer.RenderEndTag();
}
//*********************************************************************
//
// ItemTemplate Property
//
// Represents the ItemTemplate.
//
//*********************************************************************
public ITemplate ItemTemplate {
get {return _itemTemplate; }
set { _itemTemplate = value; }
}
//*********************************************************************
//
// SeparatorTemplate Property
//
// Represents the SeparatorTemplate.
//
//*********************************************************************
public ITemplate SeparatorTemplate {
get {return _separatorTemplate; }
set { _separatorTemplate = value;
}
}
//*********************************************************************
//
// NoContentTemplate Property
//
// Represents the NoContentTemplate.
// Whatever you add to the NoContentTemplate is displayed when
// there are no records.
//
//*********************************************************************
public ITemplate NoContentTemplate {
get {return _noContentTemplate; }
set { _noContentTemplate = value; }
}
//*********************************************************************
//
// HeaderTemplate Property
//
// Represents the HeaderTemplate.
//
//*********************************************************************
public ITemplate HeaderTemplate {
get {return _headerTemplate; }
set { _headerTemplate = value; }
}
//*********************************************************************
//
// FooterTemplate Property
//
// Represents the FooterTemplate.
//
//*********************************************************************
public ITemplate FooterTemplate {
get {return _footerTemplate; }
set { _footerTemplate = value; }
}
//*********************************************************************
//
// AlternatingItemTemplate Property
//
// Represents the AlternatingItemTemplate.
//
//*********************************************************************
public ITemplate AlternatingItemTemplate {
get {return _alternatingItemTemplate; }
set { _alternatingItemTemplate = value; }
}
}
//*********************************************************************
//
// ContentListItemEventArgs Class
//
// This class is used when an ItemDataBound event is raised to pass
// information about the item that raised the event.
//
//*********************************************************************
public sealed class ContentListItemEventArgs : EventArgs {
private ContentItem item;
public ContentListItemEventArgs(ContentItem item) {
this.item = item;
}
public ContentItem Item {
get {
return item;
}
}
}
public delegate void ContentListItemEventHandler(object sender, ContentListItemEventArgs e);
//*********************************************************************
//
// ContentItem Class
//
// The container control we use with the templates.
//
//*********************************************************************
public class ContentItem : Control, INamingContainer {
private Object _dataItem;
private int _itemIndex;
private ListItemType _itemType;
public ContentItem() {}
public ContentItem( int itemIndex, Object dataItem, ListItemType itemType ){
_dataItem = dataItem;
_itemIndex = itemIndex;
_itemType = itemType;
}
public Object ItemIndex {
get { return _itemIndex; }
}
public Object DataItem {
get { return _dataItem; }
}
public ListItemType ItemType {
get { return _itemType; }
}
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -