⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 contentlist.cs

📁 一个ASP.NET下的中文内容管理和社区系统
💻 CS
📖 第 1 页 / 共 2 页
字号:
                // 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 = 0;
                    }
                    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("&lt;&lt;");
                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("&gt;&gt;");
                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
            if (lowerbound < 1)
                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 + -