求一个dataset进行后台输出html代码分页,要求不用分页控件手动分页, 

解决方案 »

  1.   

    http://topic.csdn.net/u/20101111/23/f6a28a67-5224-406f-ab77-0413850e0d5b.html
      

  2.   

    已经完成生成静态公告列表,分页是后台输出。供参考(注ScalarAnno()方法返回公告表的count)<div class="newsCls">
                                <h2>
                                    新闻列表</h2>
                                <ul>
                                    $newscls_list$
                                </ul>
                                <div class="pager">
                                    共$newsCount$条 当前$Count$页 $first$ $prev$ $next$ $last$
                                    <select name="menu1" onchange="MM_jumpMenu('parent',this,0)">
                                        $drodown$
                                    </select>
                                </div>
                            </div>
         public void toNews()
        {        int PageSize = Convert.ToInt32(c.newsPager);
            int Count = Convert.ToInt32(anno.ScalarAnno()) / PageSize + 1;        Hashtable ht = new Hashtable();        for (int y = 0; y < Count; y++)
            {
                string ItemNewsCls_shtml = ToIO.Reader(onPath + "ItemViewCls.shtml");
                string titel = "公告列表 - " + c.webName + " - " + c.webUrl;            if (Cache["cls_list"] == null)
                {
                    Cache["cls_list"] = T_AnnounceManager.GetAllT_Announces() as List<T_Announce>;
                }
                //公告列表
                List<T_Announce> list = News_List(Cache["cls_list"] as List<T_Announce>, y, PageSize);
                string newscls_list = "";
                for (int i = 0; i < list.Count; i++)
                {
                    newscls_list += "<li> <span>" + list[i].Updatetime + "</span> <a href=\"../view/View_" + list[i].Id + ".shtml\" target=\"_blank\">" + list[i].Title + "</a></li>";
                }
                ht.Add("$newscls_list$", newscls_list);            string first = "";
                string prev = "";
                string next = "";
                string last = "";
                if (y == 0)
                {
                    first = "<a>首页</a>";
                }
                else
                {
                    first = "<a href='ViewCls_0.shtml' >首页</a>";
                }            if (y == 0)
                {
                    prev = "<a>上一页</a>";
                }
                else
                {
                    prev = "<a href='ViewCls_" + Convert.ToString(y - 1) + ".shtml' >上一页</a>";
                }            if (y == Count - 1)
                {
                    next = "<a>下一页</a>";
                }
                else
                {
                    next = "<a href='ViewCls_" + Convert.ToString(y + 1) + ".shtml' >下一页</a>";
                }            if (y == Count - 1)
                {
                    last = "<a>末页</a>";
                }
                else
                {
                    last = "<a href='ViewCls_" + Convert.ToString(Count - 1) + ".shtml' >末页</a>";
                }            string drodown = "";
                string select;
                for (int i_ = 0; i_ < Count; i_++)
                {
                    if (i_ == y)
                    {
                        select = "selected='selected'";
                    }
                    else
                    {
                        select = "";
                    }                drodown += "\r\n<option value=\"ViewCls_" + i_.ToString() + ".shtml\" " + select + ">" + "第" + Convert.ToString(i_ + 1) + "页" + "</option>\r\n";
                }            ht.Add("$newsCount$", "<font color='red'>" + Convert.ToInt32(anno.ScalarAnno()) + "</font>");
                ht.Add("$Count$", "<font color='red'>" + (y + 1) + "/" + Count.ToString() + "</font>");
                ht.Add("$drodown$", drodown);
                ht.Add("$first$", first);
                ht.Add("$prev$", prev);
                ht.Add("$next$", next);
                ht.Add("$last$", last);
                ItemNewsCls_shtml = ToIO.Replace(ItemNewsCls_shtml, ht);
                ToIO.Writer(outPath + "ViewCls_" + y + ".shtml", ItemNewsCls_shtml);
                ht.Clear();
            }
            Cache.Remove("cls_list");
        }    //分页
        public static List<T_Announce> News_List(List<T_Announce> vNews_List, int pageindex, int pagesize)
        {
            int index = pageindex * pagesize;
            List<T_Announce> list = new List<T_Announce>();
            for (int i = 0; i < pagesize; i++)
            {
                try
                {
                    list.Add(vNews_List[index + i]);
                }
                catch
                {
                    break;
                }
            }
            return list;
        }
      

  3.   

    using System;
    using System.Collections.Generic;
    using System.Web;
    using dressmodel;
    using System.Text;
    using System.Text.RegularExpressions;    public class PaginatedList<T> : List<T>
        {
            private int pagezise;        public int Pagezise
            {
                get { return pagezise; }
                set { pagezise = value; }
            }
            private int pageindex;        public int Pageindex
            {
                get { return pageindex; }
                set { pageindex = value; }
            }
            private int TotalCount;        public int TotalCount1
            {
                get { return TotalCount; }
                set { TotalCount = value; }
            }
            private int TotalPage;        public int TotalPage1
            {
                get { return TotalPage; }
                set { TotalPage = value; }
            }
            private string url;        public string Url
            {
                get { return url; }
                set { url = value; }
            }
            public PaginatedList(IList<T> source, int pageindex, int pagezise,int totalcount, string url)
            {
                this.pageindex = pageindex;
                this.pagezise = pagezise;
                TotalCount = totalcount;
                TotalPage = (int)Math.Ceiling(TotalCount / (double)pagezise);
                this.AddRange(source);
                this.url = url;        }        #region 分页属性 返回分页数据
            public string GetPatePar
            {
                get
                {
                    if (TotalCount1 >= 1)
                    {
                                StringBuilder str = new StringBuilder();
                                int startpage = (pageindex - 1) / 10 * 10 + 1;
                                int endpage = (pageindex - 1) / 10 * 10 + 10;
                                int x = endpage > TotalPage ? TotalPage : endpage;
                                str.Append("<div class='anpager'>");                            if (HasPreviousPage)
                                {
                                    str.Append("<a href=" + url + "?page=1" + GetURLParms + ">首页</a>");
                                    str.Append("<a href=" + url + "?page=" + (pageindex - 1) + GetURLParms + ">上一页</a>");
                                }
                                else
                                {
                                    str.Append("<a href=#>首页</a>");
                                    str.Append("<a href=#>上一页</a>");
                                }
                                for (int i = startpage; i <= x; i++)
                                {
                                    if (i == pageindex)
                                    {
                                        str.Append(string.Format("<a style='margin-left:3px; margin-right:3px;padding:2px 4px 2px 4px;color:red;border:1px solid #cccccc;background-color:#ffffff; '>" + i + "</a>"));
                                    }
                                    else
                                    {
                                        str.Append(string.Format("<a href=" + url + "?page=" + i + GetURLParms + ">" + i + "</a>"));
                                    }
                                }
                                if (HasNextPage)
                                {                                str.Append("<a href=" + url + "?page=" + (pageindex + 1) + GetURLParms + ">下一页</a>");
                                    str.Append("<a href=" + url + "?page=" + TotalPage + GetURLParms + ">尾页</a>");
                                }
                                else
                                {
                                    str.Append("<a href=#>下一页</a>");
                                    str.Append("<a href=#>尾页</a>");
                                }
                                str.Append("</div>");
                                return str.ToString();
                    }
                    else
                    {
                        return "<font color=red>暂无数据!</font>";
                    }
                   
                }
            }
            #endregion 
            /// <summary>
            /// url重写
            /// </summary>
            private string GetURLParms
            {
                get
                {
                    string query = HttpContext.Current.Request.Url.Query;
                    query = Regex.Replace(query, @"\?page=\d*", "", RegexOptions.Compiled);
                    return query;
                }
            }
            /// <summary>
            ///判断是否有上一页
            /// </summary>
            public bool HasPreviousPage
            {
                get
                {
                    return (pageindex > 1);
                }
            }
            /// <summary>
            ///判断是否有下一页
            /// </summary>
            public bool HasNextPage
            {
                get
                {
                    return (pageindex < TotalPage);
                }
            }
        }
      

  4.   

    //声明一个页面数据源,用来缓存信息列表(所有的信息)
        PagedDataSource pds = new PagedDataSource();
      

  5.   


    public static  class HtmlHelper
        {
           /// <summary>
            ///  创建表头html
           /// </summary>
           /// <param name="listTh">表头信息集合</param>
           /// <returns></returns>
            public static string CreateThead(List<Thead> listTh) 
            {
                if (listTh != null && listTh.Count > 0)
               {
                   StringBuilder sbHtml = new StringBuilder("<thead><tr>");
                     foreach (Thead th in listTh)
                    {
                        sbHtml.Append("<td ");
                        sbHtml.Append(th.Style == null ? "" : th.Style);
                        sbHtml.Append(">");
                        sbHtml.Append(th.Col == null ? "" : th.Col);
                        sbHtml.Append("</td>");
                    }               sbHtml.Append("</tr></thead>");
                   return sbHtml.Replace("'","\\'").ToString();
               }
               return "";
            }        /// <summary>
            ///  创建分页html
            /// </summary>
            /// <returns></returns>
            public static string CreatePager(Pager pager)
            {
                if (pager == null) { return ""; }
                int pageCount = (int)(Math.Ceiling(pager.RowCount / (double)pager.PageSize));
                if (pageCount > 1 || pager.HasDisplayByOnlyPage )
                {
                    StringBuilder sbHtml = new StringBuilder("<div ");
                    sbHtml.Append(pager.PagerStyle == null ? "" : pager.PagerStyle.Replace("'","\\'"));
                    sbHtml.Append(">");
                    sbHtml.Append(string.Format("<span style=\"float:left;margin-left:5px;\">当前<b><font style=\"color:red\">{0}</font>/{1}</b>页&nbsp;&nbsp;每页<b>{2}</b>条&nbsp;&nbsp;共<b>{3}</b>条记录</span>", pager.PageIndex, pageCount, pager.PageSize,pager.RowCount));
                    sbHtml.Append("<span style=\"float:right; margin-right:5px;\">");
                    if (pager.PageIndex == 1)
                    {
                        sbHtml.Append("首页&nbsp;&nbsp;");
                        sbHtml.Append("上一页&nbsp;&nbsp;");
                    }
                    else
                    {
                        sbHtml.Append(string.Format("<a href=\"javascript:void(0)\" onclick=\"{0}({1})\">首页</a>&nbsp;&nbsp;",pager.GotoPageFun ,1));
                        sbHtml.Append(string.Format("<a href=\"javascript:void(0)\" onclick=\"{0}({1})\">上一页</a>&nbsp;&nbsp;",pager.GotoPageFun ,pager.PageIndex-1));
                    }
                    if (pager.PageIndex < pageCount)
                    {
                        sbHtml.Append(string.Format("<a href=\"javascript:void(0)\" onclick=\"{0}({1})\">下一页</a>&nbsp;&nbsp;",pager.GotoPageFun ,pager.PageIndex+1));
                        sbHtml.Append(string.Format("<a href=\"javascript:void(0)\" onclick=\"{0}({1})\">尾页</a>&nbsp;&nbsp;",pager.GotoPageFun ,pageCount));
                    }
                    else
                    {
                        sbHtml.Append("下一页&nbsp;&nbsp;");
                        sbHtml.Append("尾页&nbsp;&nbsp;");
                    }
                    sbHtml.Append(string.Format("跳到第<select onchange=\"{0}(this.value)\">",pager.GotoPageFun));
                    for (int i = 1; i <= pageCount;i++ )
                    {
                        sbHtml.Append(string.Format("<option value={0} {1}>{2}</option>", i, (i == pager.PageIndex ? "selected=selected" : ""), i));
                    }
                    sbHtml.Append("</select>页</span ></div>");
                    return sbHtml.ToString();
                }
                return "";
            }
        }
        /// <summary>
        ///  单元格模板类
        /// </summary>
        public class ColTemplet 
        {        private string _templet;        /// <summary>
            /// 每列的模板
            /// </summary>
            public string Templet
            {
                get { return _templet; }
                set { _templet = value; }
            }
            private string _colStyle = "";        /// <summary>
            ///  每列的样式 (style='width:80px' 或者 class='col' )
            /// </summary>
            public string ColStyle
            {
                get { return _colStyle; }
                set { _colStyle = value; }
            }
            private List<string> _listColName;        /// <summary>
            /// 模板列要使用的数据列集合
            /// </summary>
            public List<string> ListColName
            {
                get { return _listColName; }
                set { _listColName = value; }
            }    }
        /// <summary>
        /// 表头实体类
        /// </summary>
        public class Thead 
        {
            public Thead(string col,string style) 
            {
                this._col = col;
                this._style = style;
            }
            private string _col;        /// <summary>
            /// 表头显示值
            /// </summary>
            public string Col
            {
                get { return _col; }
                set { _col = value; }
            }
            private string _style;        /// <summary>
            /// 表头每列样式 如:(style='width:80px' 或者 class='thead' )
            /// </summary>
            public string Style
            {
                get { return _style; }
                set { _style = value; }
            }
            
        }    public class Pager
        {      
            private int pageIndex=1;
             /// <summary>
             ///  当前页索引 默认1
             /// </summary>
            public int PageIndex
            {
                get { return pageIndex; }
                set {
                    if (value<1)
                    {
                        pageIndex = 1;
                      }else{
                          pageIndex = value;
                      }
                }
            }
            private int pageSize=20;
             /// <summary>
             /// 每页多少条  默认20
             /// </summary>
            public int PageSize
            {
                get { return pageSize; }
                set { pageSize = value; }
            }
            private int rowCount=0;
            /// <summary>
            ///  共多少行数据  默认0
            /// </summary>
            public int RowCount
            {
                get { return rowCount; }
                set { rowCount = value; }
            }
            private string gotoPageFun = "gotoPage";
            /// <summary>
            ///  跳转页面函数名   默认 ‘gotoPage’
            /// </summary>
            public string GotoPageFun
            {
                get { return gotoPageFun; }
                set { gotoPageFun = value; }
            }
            private string pagerStyle = "class=\"pager\"";
             /// <summary>
            /// 分页div 样式 (style='' 或 class='' ) 默认: class="pager"
             /// </summary>
            public string PagerStyle
            {
                get { return pagerStyle; }
                set { pagerStyle = value; }
            }
            private bool hasDisplayByOnlyPage = true;
            /// <summary>
            ///  只有一页时,是否显示分页     默认:true 显示
            /// </summary>
            public bool HasDisplayByOnlyPage
            {
                get { return hasDisplayByOnlyPage; }
                set { hasDisplayByOnlyPage = value; }
            }
        }
      

  6.   

    后台写一个返回datatabel或者返回LIST<>的都行 直接调用这个存储过程就OK了-- --------------------------------------------------------------------------------
    -- Routine DDL
    -- --------------------------------------------------------------------------------
    DELIMITER $$CREATE DEFINER=`root`@`` PROCEDURE `Employee_GetPaged`(
        _WhereClause VARCHAR(250),
        _OrderBy VARCHAR(250),
        _PageIndex INT,
        _PageSize INT,
        OUT _TotalCount INT
    )
    BEGIN
        
        SET @RowCount = 0;
        
        SET @SqlStr = 'SELECT COUNT(EmployeeId) INTO @RowCount FROM Employee';
        IF _WhereClause IS NOT NULL AND _WhereClause <> '' THEN
            SET @SqlStr = CONCAT(@SqlStr, ' WHERE ', _WhereClause);
         ELSE
            SET @SqlStr = CONCAT(@SqlStr, ' WHERE EmployeeId > 0');
        END IF;
        
        PREPARE StmtTotalCount FROM @SqlStr;
        EXECUTE StmtTotalCount;
        DEALLOCATE PREPARE StmtTotalCount;
        SET _TotalCount = @RowCount;
        
        SET @SqlStr = 'SELECT EmployeeId, EmployeeCode, EmployeeName, EmployeeNo, EmployeeIp, Email, Password, PositionId, WorkTypeId, LanguageId, Efficiency, IsActive FROM Employee';
        IF _WhereClause IS NOT NULL AND _WhereClause <> '' THEN
            SET @SqlStr = CONCAT(@SqlStr, ' WHERE ', _WhereClause);
        ELSE
            SET @SqlStr = CONCAT(@SqlStr, ' WHERE EmployeeId > 0');
        END IF;
        IF _OrderBy IS NOT NULL AND _OrderBy <> '' THEN
            SET @SqlStr = CONCAT(@SqlStr, ' ORDER BY ', _OrderBy);
        END IF;
        
        IF _PageIndex > 0 AND _PageSize > 0 THEN
            SET @LimitStart = (_PageIndex - 1) * _PageSize;
            SET @LimitEnd = _PageSize;
            SET @SqlStr = CONCAT(@SqlStr, ' LIMIT ', @LimitStart, ',', @LimitEnd);
        END IF;
        
        PREPARE StmtRecord FROM @SqlStr;
        EXECUTE StmtRecord;
        DEALLOCATE PREPARE StmtRecord;END$$
      

  7.   

    记得HTML中有个好像叫数据岛的东东,你去查下吧
      

  8.   

    不用分页控件,就在sql语句中分页还提高网站的访问效率!
      

  9.   

    http://blog.csdn.net/intcry/archive/2010/11/24/6032621.aspx
    我刚刚把我写的一个常用分页代码发布 你就发帖!真有缘纳!
    给你参考下我写的!