Carpa3平台常用分页方式

不分页方法


• 数据绑定方式:1.构建数据绑定  2.数据库查询绑定

•问题:数据库查询后需要构建参数?

• 可以是DataTable、IList<T>等列表结构的数据源。可以是业务构造,也可以来自DbHelper数据库查询



using System;
using Carpa.Web.Script;
using Carpa.Web.Ajax;
using System.Data;
using System.Collections.Generic;

namespace CarpaDemo
{
    public class Grid : Page
    {
        public override void Initialize()
        {
            base.Initialize();
            Context["datasource1"] = Grid1Datasource();
        }
        /// <summary>
        /// 不不分页
        /// </summary>
        /// <returns></returns>
        private DataTable Grid1Datasource()
        {
            List<string> columns = new List<string>();
            columns.Add("GoodsID");
            columns.Add("GoodsNo");
            columns.Add("GoodsName");
            columns.Add("Spell");
            columns.Add("KG");
            columns.Add("CreateDate");
            columns.Add("UpdateDate");
            columns.Add("Remark");
            DataTable table = new DataTable();

            for (int i = 0; i < columns.Count; i++)
            {
                DataColumn c = new DataColumn();
                c.ColumnName = columns[i];
                table.Columns.Add(c);
            }
            DataTable dt = new DataTable();
            using (DbHelper db = SysUtils.CreateMySqlDbHelper())
            {
                string querysql = "select GoodsID, GoodsNo,GoodsName,Spell,KG,CreateDate,UpdateDate,Remark from bd_goods ";
                dt = db.ExecuteSQL(querysql);
            }
            for (var i = 0; i < dt.Rows.Count; i++)
            {
                object[] record = new object[columns.Count];
                record[0] = dt.Rows[i][0];
                record[1] = dt.Rows[i][1];
                record[2] = dt.Rows[i][2];
                record[3] = dt.Rows[i][3];
                record[4] = dt.Rows[i][4];
                record[5] = dt.Rows[i][5];
                record[6] = dt.Rows[i][6];
                record[7] = dt.Rows[i][7];
                table.Rows.Add(record);
            }
            return table;
        }
    }
}

 

内存分页方法 


•又叫逻辑分页读取所有数据放在内存之中,在前端进行分页处理。

•优点: 会话期间只与数据库交互一次,若每页数据量较大,翻页时间成本小。

•缺点:会占用较大的内存,不能保证数据是最新的


using System;
using Carpa.Web.Script;
using Carpa.Web.Ajax;
using System.Data;

namespace CarPaDemo1
{
    /// <summary>
    /// 数据显示采用内存分页
    /// </summary>
    public class Management : Page
    {
        public override void Initialize()
        {
            base.Initialize();
            Context["DataSource"] = new GDataSource();
        }
        [Serializable]
        public class GDataSource : DbPagerDataSource
        {
            public GDataSource()
                : base(SysUtils.MySqlConnectionString)
            {
            }

            /// <summary>
            /// 数据字段的添加
            /// </summary>
            /// <param name="items"></param>
            public override void AddSummaryItems(SummaryItemCollection items)
            {
                base.AddSummaryItems(items);
                items.Add("ID");
                items.Add("name");
                items.Add("UserType");
                items.Add("operate");
                items.Add("HostName");
                items.Add("IP");
                items.Add("AddDate");
            }

            /// <summary>
            /// 数据库数据选择
            /// </summary>
            /// <param name="dbHelper"></param>
            /// <returns></returns>
            protected override DataTable DoQuery(DbHelper dbHelper)
            {
                return dbHelper.ExecuteSQL(@"select Login.ID,Login.name,Login.UserType,operate,HostName,IP,
                                            SUBSTRING(CONVERT(CHAR(19),AddDate,120),1,16) as AddDate 
                                            from Log join Login on Log.UserName = Login.name order by AddDate desc");
            }
        }
    }
}

 

数据库分页方法


又叫物理分页在于数据库交互的时候进行数据分页,每次只读取当前页的数据

优点:内存占用小,可以保证数据是最新的

缺点:每次分页必须与数据库交互

using System;
using Carpa.Web.Script;
using Carpa.Web.Ajax;
using System.Data;

    /// <summary>
    /// 所有缺陷
    /// </summary>
    public class AllBug : Page
    {
        public override void Initialize()
        {
            base.Initialize();
            Context["dataSourse"] = new GDataSource();
        }
        [Serializable]
        public class GDataSource : SqlPagerDataSource
        {
            public GDataSource()
                : base(SysUtils.MySqlConnectionString)
            {
            }
            /// <summary>
            /// 全部缺陷,数据采用数据库分页
            /// </summary>
            protected override void DoPrepare(DbHelper dbHelper, SqlPagerParams pagerParams)
            {
                //关键代码——————————————————————————————————————
                string sql = "select Bug_ID,User_Name,P_Name,Bug_Name,Bug_Style,Bug_Status,SUBSTRING(CONVERT(CHAR(10), Bug_Date, 120), 1, 16) as Bug_Date ,Bug_Content from Bug";
                //对sql操作
                pagerParams.SelectClause = sql;
                //将select的结果进行排序
                pagerParams.OrderClause = base.GetOrderClause(" order by Bug_ID desc");
                pagerParams.PrimaryField = "Bug_Name";
            }
        }

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章