zoukankan      html  css  js  c++  java
  • 利用JqGrid结合ashx及EF分页显示列表之二

    上一篇文章简单利用JqGrid及ashx进行一个数据列表的显示,要文的重点是利用EF的分页与JqGrid进行结合,EF本文只是简单运用所以没有很规范,重点还是JqGrid分页的实现;本实例把JqGrid一些比较经常用到的内容封装到一个JS里面;

    首先看下实例完成后的效果图:

    1:数据库表创建并往中插入200000条数据:

    CREATE TABLE [dbo].[T_School](
        [ID] [int] IDENTITY(1,1) NOT NULL,
        [SchoolName] [nvarchar](255) COLLATE Chinese_PRC_CI_AS NULL,
        [BuildDate] [datetime] NULL,
        [Address] [nvarchar](50) COLLATE Chinese_PRC_CI_AS NULL,
        [IsSenior] [bit] NULL,
        [StudentNum] [int] NULL,
     CONSTRAINT [PK_T_School] PRIMARY KEY CLUSTERED 
    (
        [ID] ASC
    )WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
    ) ON [PRIMARY]

    2:myJqgrid.js封装后的JqGird代码:

    /*
    * 返回json格式中 最好默认带有ID列
      默认显示 20列
    
    * 列表id = "gridTable"
      列表url = 'Handler.ashx?action=page'
      列表datatype = 'json'
      列表colNames = ['ID', "名称", '性别', '手机', '邮箱']
      列表colModel = 。。。
      列表标题 caption = "用户列表"
      列表修改URL editurl = "Handler.ashx?action=oper"
      列表默认排序 sortname = "ID";
      页码ID gridPagerID = "gridPager"
    */
    //最后选中的行
    var lastsel;
    function myJqGrid(id, url, datatype, colNames, colModel, caption, editurl, sortname, gridPagerID) {
        var myGrid = $("#" + id);
        myGrid.jqGrid({
            url: url,
            datastr: "data.json",
            datatype: datatype,
            rowNum: 20,
            rowList: [10, 20, 50],
            colNames: colNames,
            colModel: colModel,
            jsonReader: {
                repeatitems: false,
                root: function (obj) { return obj.rows; },
                page: function (obj) { return obj.pageindex; },
                total: function (obj) { return obj.pagecount; },
                records: function (obj) { return obj.total; }
            },
            prmNames: {
                page: 'PageIndex',
                rows: 'PageSize',
                sort: 'Order',
                order: 'Sort'
            },
            hidegrid: false,
            rownumbers: true,
            loadonce: false,
            sortname: sortname,
            sortorder: 'desc',
            pager: "#" + gridPagerID,
            viewrecords: true,
            caption: caption,
            toolbar: [true, "top"],
            altRows: true,
            //最后选中的行
            onSelectRow: function (id) {
                if (id && id !== lastsel) {
                    grid.jqGrid('restoreRow', lastsel);
                    lastsel = grid.jqGrid('getRowData', id)[sortname];
                }
            },
            editurl: editurl
        });
    }

    其中要注意这两部分的参数,其中pagecount-json中代表页码总数的数据,total-json中代表数据行总数的数据,pageindex-json中代表当前页码的数据;prmNames则是重命名传到后台的分页参数名称;

    传到后台的URL:GET /CountryHandler.ashx?_search=false&nd=1397394772871&PageSize=20&PageIndex=1&Order=ID&Sort=desc

            jsonReader: {
                repeatitems: false,
                root: function (obj) { return obj.rows; },
                page: function (obj) { return obj.pageindex; },
                total: function (obj) { return obj.pagecount; },
                records: function (obj) { return obj.total; }
            },
            prmNames: {
                page: 'PageIndex',
                rows: 'PageSize',
                sort: 'Order',
                order: 'Sort'
            },

    3:Html代码及JS代码:

    <head runat="server">
        <title></title>
        <link href="css/ui-lightness/jquery-ui-1.10.4.min.css" rel="stylesheet" type="text/css" />
        <link href="css/ui.jqgrid.css" rel="stylesheet" type="text/css" />
        <script src="js/jquery-1.7.2.min.js" type="text/javascript"></script>
        <script src="js/i18n/grid.locale-cn.js" type="text/javascript"></script>
        <script src="js/jquery.jqGrid.min.js" type="text/javascript"></script>
        <script src="js/myJqgrid.js" type="text/javascript"></script>
        <script type="text/javascript">
            $(document).ready(function () {
                showJqGrid();
            });
            function showJqGrid() {
                var id = "gridTable";
                var url = "CountryHandler.ashx";
                var datatype = "json";
                var colNames = ["ID", "名称","地址"];
                var colModel = [
                            { name: "ID", index: "ID"},
                            {
                                name: "SchoolName", index: "SchoolName",  200, align: "center"
                            },
                            {
                                name: "Address", index: "Address",  250, align: "center"
                            }
                ];
                var caption = "学校列表";
                var editurl = "CountryHandler.ashx";
                var sortname = "ID";
                var gridPagerID = "gridPager";
                myJqGrid(id, url, datatype, colNames, colModel, caption, editurl, sortname, gridPagerID);
                //initToolbar(id, gridPagerID);
            }
        </script>
    </head>
    <body>
        <form id="form1" runat="server">
        <table id="gridTable">
        </table>
        <div id="gridPager">
        </div>
        </form>
    </body>
    </html>

    4:后台的一般处理文件CountryHandler.ashx代码:

    using System.Web.Script.Serialization;
    using ClassLibrary1;
    using DAL;
    namespace WebApplication1
    {
        /// <summary>
        /// CountryHandler 的摘要说明
        /// </summary>
        public class CountryHandler : IHttpHandler
        {
            public void ProcessRequest(HttpContext context)
            {
                DAL.TestDbEntities contexts = new TestDbEntities();
                context.Response.ContentType = "text/plain";
                var quey = from School in contexts.T_School select School;
                GridDatas model = new GridDatas();
                int PageIndex= RequstString("PageIndex").Length == 0 ? 1 : int.Parse(RequstString("PageIndex"));
                int PageSize=RequstString("PageSize").Length == 0 ? 20 : int.Parse(RequstString("PageSize"));
    
                int TotalCount=quey.Count<T_School>();
                model.pagecount = (TotalCount/PageSize).ToString();
                model.pageindex = PageIndex.ToString();
                model.total = TotalCount.ToString();
                model.rows = quey.OrderBy(t=>t.ID).Skip((PageIndex - 1) * PageSize).Take(PageSize).ToList();
    
                JavaScriptSerializer serializer = new JavaScriptSerializer();
                string Resul = serializer.Serialize(model);
                context.Response.Write(Resul);
            }
    
            public static string RequstString(string sParam)
            {
                return (HttpContext.Current.Request[sParam] == null ? string.Empty
                    : HttpContext.Current.Request[sParam].ToString().Trim());
            }
    
            public bool IsReusable
            {
                get
                {
                    return false;
                }
            }
        }
    
        public class GridDatas
        {
            public string pageindex { set; get; }
    
            public string pagecount { get; set; }
    
            public string total { get; set; }
    
            public List<T_School> rows { get; set; }
        }
    }

    注意:同样借实体类GridDatas来实同JqGrid要求的JSON格式;转化成后的Json代码如下:

    {"pageindex":"1","pagecount":"10000","total":"200000","rows":[{"RelationshipManager":{},"ID":1,"SchoolName":"中学教育0","BuildDate":"/Date
    
    (1393940972000)/","Address":"厦门软件园","IsSenior":true,"StudentNum":390},{"RelationshipManager":{},"ID":2,"SchoolName":"中学教育1","BuildDate":"/Date
    
    (1393940972000)/","Address":"厦门软件园","IsSenior":true,"StudentNum":390},{"RelationshipManager":{},"ID":3,"SchoolName":"中学教育2","BuildDate":"/Date
    
    (1393940972000)/","Address":"厦门软件园","IsSenior":true,"StudentNum":390},{"RelationshipManager":{},"ID":4,"SchoolName":"中学教育3","BuildDate":"/Date
    
    (1393940972000)/","Address":"厦门软件园","IsSenior":true,"StudentNum":390},{"RelationshipManager":{},"ID":5,"SchoolName":"中学教育4","BuildDate":"/Date
    
    (1393940972000)/","Address":"厦门软件园","IsSenior":true,"StudentNum":390},{"RelationshipManager":{},"ID":6,"SchoolName":"中学教育5","BuildDate":"/Date
    
    (1393940972000)/","Address":"厦门软件园","IsSenior":true,"StudentNum":390},{"RelationshipManager":{},"ID":7,"SchoolName":"中学教育6","BuildDate":"/Date
    
    (1393940972000)/","Address":"厦门软件园","IsSenior":true,"StudentNum":390},{"RelationshipManager":{},"ID":8,"SchoolName":"中学教育7","BuildDate":"/Date
    
    (1393940972000)/","Address":"厦门软件园","IsSenior":true,"StudentNum":390},{"RelationshipManager":{},"ID":9,"SchoolName":"中学教育8","BuildDate":"/Date
    
    (1393940972000)/","Address":"厦门软件园","IsSenior":true,"StudentNum":390},{"RelationshipManager":{},"ID":10,"SchoolName":"中学教育9","BuildDate":"/Date
    
    (1393940972000)/","Address":"厦门软件园","IsSenior":true,"StudentNum":390},{"RelationshipManager":{},"ID":11,"SchoolName":"中学教育10","BuildDate":"/Date
    
    (1393940972000)/","Address":"厦门软件园","IsSenior":true,"StudentNum":390},{"RelationshipManager":{},"ID":12,"SchoolName":"中学教育11","BuildDate":"/Date
    
    (1393940972000)/","Address":"厦门软件园","IsSenior":true,"StudentNum":390},{"RelationshipManager":{},"ID":13,"SchoolName":"中学教育踏浪帅
    
    12","BuildDate":"/Date(1393940972000)/","Address":"厦门软件园","IsSenior":true,"StudentNum":355},{"RelationshipManager":{},"ID":14,"SchoolName":"中学教育
    
    13","BuildDate":"/Date(1393940972000)/","Address":"厦门软件园","IsSenior":true,"StudentNum":390},{"RelationshipManager":{},"ID":15,"SchoolName":"中学教育
    
    14","BuildDate":"/Date(1393940972000)/","Address":"厦门软件园","IsSenior":true,"StudentNum":390},{"RelationshipManager":{},"ID":16,"SchoolName":"中学教育
    
    15","BuildDate":"/Date(1393940972000)/","Address":"厦门软件园","IsSenior":true,"StudentNum":390},{"RelationshipManager":{},"ID":17,"SchoolName":"中学教育
    
    16","BuildDate":"/Date(1393940972000)/","Address":"厦门软件园","IsSenior":true,"StudentNum":390},{"RelationshipManager":{},"ID":18,"SchoolName":"中学教育
    
    17","BuildDate":"/Date(1393940972000)/","Address":"厦门软件园","IsSenior":true,"StudentNum":456},{"RelationshipManager":{},"ID":19,"SchoolName":"中学教育踏
    
    浪帅18","BuildDate":"/Date(1393940972000)/","Address":"厦门软件园","IsSenior":true,"StudentNum":456},{"RelationshipManager":{},"ID":20,"SchoolName":"中学教
    
    育19","BuildDate":"/Date(1393940972000)/","Address":"厦门软件园","IsSenior":true,"StudentNum":390}]}

    感谢您的阅读,坚持每天进步一点点,离成功就更近一步;希望文章对您有所帮助;[源代码下载]

  • 相关阅读:
    http://the-automator.com/set-excel-font/
    ds finder 唤醒
    gateone8271
    todo
    VS调试运行出错,某些类库项目中引用的命名空间提示不存在
    很有意思的问题
    关于textedit 某些电脑下 输入 显示不全的问题
    SQL Server把一台服务器上的数据库转移到另外一台服务器上。而转移完成后,需要给一个"登录"关联一个"用户"时,发生错误:“错误15023:当前数据库中已存在用户或角色”或“用户、组或角色 在当前数据库中已存在”
    构造简单好用的年份、年月选择器
    大数据下的grid显示
  • 原文地址:https://www.cnblogs.com/wujy/p/3662795.html
Copyright © 2011-2022 走看看