• jqGrid专题:数据加载


    jqGrid早期版本只能加载xml格式的数据,经过多个版本,目前jqGrid支持的数据格式有很多种了,这些数据可以是:

    datatype: the possible options are

    • xml
    • json
    • jsonp
    • array
    • xmlstring
    • jsonstring
    • script
    • function (…) 

    这里我们只侧重研究下json数据,写Demo之前先来熟悉下 prmNames 和 jsonReader 参数:

     1 //自定义向Server发送的参数名称
     2 prmNames: {  
     3     page: "page",    // 表示请求页码的参数名称  
     4     rows: "rows",    // 表示请求行数的参数名称  
     5     sort: "sidx", // 表示用于排序的列名的参数名称  
     6     order: "sord", // 表示采用的排序方式的参数名称  
     7     search: "_search", // 表示是否是搜索请求的参数名称  
     8     nd: "nd", // 表示已经发送请求的次数的参数名称 
     9     id: "id", // 表示当在编辑数据模块中发送数据时,使用的id的名称  
    10     oper: "oper",    // operation参数名称
    11     editoper: "edit", // 当在edit模式中提交数据时,操作的名称  
    12     addoper: "add", // 当在add模式中提交数据时,操作的名称  
    13     deloper: "del", // 当在delete模式中提交数据时,操作的名称  
    14     subgridid: "id", // 当点击以载入数据到子表时,传递的数据名称  
    15     npage: null,   
    16     totalrows: "totalrows" // 表示需从Server得到总共多少行数据的参数名称,参见jqGrid选项中的rowTotal  
    17 }
     1 //设置如何解析从Server端发回来的json格式
     2 jsonReader : {  
     3     root: "rows",   // json中代表实际模型数据的入口  
     4     page: "page",   // json中代表当前页码的数据  
     5     total: "total", // json中代表页码总数的数据  
     6     records: "records", // json中代表数据行总数的数据  
     7     repeatitems: true, // 如果设为false,则jqGrid在解析json时,会根据name来搜索对应的数据元素(即可以json中元素可以不按顺序  
     8     cell: "cell",  
     9     id: "id",  
    10     userdata: "userdata",  
    11     subgrid: {
    12                         root:"rows",   
    13                         repeatitems: true,   
    14                         cell: "cell"  
    15                     }
    16  } 

     下面写个Demo (asp.net)

    1.页面 demo.aspx:

     1 $(function () {
     2             $("#gridDemo").jqGrid({
     3                 url:'/Handler/demoHandler.ashx',  //获取数据地址
     4                 datatype: 'json',  //从服务器端返回数据类型(默认xml)
     5                 mtype: 'POST',     //ajax 提交方式(默认GET)
     6                 postData: { test: 100 },
     7                 //自定义向Server发送的参数的名称
     8                 prmNames: {  
     9                     page: "page1",    // 表示请求页码的参数名称  
    10                     rows: "rows1",    // 表示请求行数的参数名称  
    11                     sort: "sidx1", // 表示用于排序的列名的参数名称  
    12                     order: "sord1", // 表示采用的排序方式的参数名称  
    13                     search: "_search1", // 表示是否是搜索请求的参数名称  
    14                     nd: "nd1", // 表示已经发送请求的次数的参数名称 
    15                     id: "id", // 表示当在编辑数据模块中发送数据时,使用的id的名称  
    16                     oper: "oper",    // operation参数名称
    17                     editoper: "edit", // 当在edit模式中提交数据时,操作的名称  
    18                     addoper: "add", // 当在add模式中提交数据时,操作的名称  
    19                     deloper: "del", // 当在delete模式中提交数据时,操作的名称  
    20                     subgridid: "id", // 当点击以载入数据到子表时,传递的数据名称  
    21                     npage: null,   
    22                     totalrows: "totalrows" // 表示需从Server得到总共多少行数据的参数名称,参见jqGrid选项中的rowTotal  
    23                 },
    24                 //设置如何解析从Server端发回来的json格式,jqGrid根据这个jsonReader 来把数据加入到表格中显示,否则按照默认格式显示。
    25                 jsonReader : {  
    26                     root: "rows1",   // json中代表实际模型数据的入口  
    27                     page: "page",   // json中代表当前页码的数据  
    28                     total: "total", // json中代表页码总数的数据  
    29                     records: "records", // json中代表数据行总数的数据  
    30                     repeatitems: true, // 如果设为false,则jqGrid在解析json时,会根据name来搜索对应的数据元素(即可以json中元素可以不按顺序)。  
    31                     cell: "cell",  
    32                     id: "id",
    33                     userdata: "userdata",  
    34                     subgrid: {
    35                         root:"rows",   
    36                         repeatitems: true,   
    37                         cell: "cell"
    38                     }
    39                 }, 
    40                 colNames: ['学号','姓名','性别','出生日期','学分','地区','简介'],
    41                 colModel: [
    42                     { name: 'StuId', index: 'StuId',  '60' },
    43                     { name: 'StuName', index: 'StuName',  '100' },
    44                     { name: 'StuSex', index: 'StuSex',  '60' },
    45                     { name: 'StuBirthday', index: 'StuBirthday',  '100' },
    46                     { name: 'StuScore', index: 'StuScore',  '60', align: 'right' },
    47                     { name: 'StuArea', index: 'StuArea',  '80' },
    48                     { name: 'StuMemo', index: 'StuMemo',  '300' }
    49                 ],
    50                 rownumbers: true,
    51                 rownumberWidth: 20,
    52                 toolbar: [true,"both"],
    53                 rowNum: 10,
    54                 rowList: [10, 20, 30],
    55                 pager: '#pager',
    56                 sortname: 'StuId',
    57                 sortorder: 'desc',
    58                 viewrecords: true,
    59                 multiselect:true,
    60                 caption: '学生信息表',
    61                  '1000',
    62                 height: 'auto'
    63             });
    64             $("#gridDemo").jqGrid("navGrid", "#pager", { add: true, del: true, edit: true });
    65 });

    2、后台数据处理程序 demoHandler.ashx:

    1 public void ProcessRequest (HttpContext context) 
    2 {
    3         context.Response.ContentType = "text/plain";
    4         List<Student> lst = Data.GetList();
    5         string jsonLst = JsonConvert.SerializeObject(lst);
    6         context.Response.Write(jsonLst);
    7 }

    3、显示效果:

     

     注:IE9及以下版本,使用POST方式ajax提交时,有时候请求会被挂起,测试过不是IE ajax缓存问题,目前不知什么原因,没详细调试,待大虾指点。

    幸福是奋斗出来的
  • 相关阅读:
    mysql实现主从复制
    go get时候 timeout
    linux 修改/etc/profile文件之后 没有效果
    初试 laravel
    php 实现单个大文件(视频)的 断点上传
    UEditor图片左对齐右对齐 要的作用显示之后 保存之后没有效果
    docker 实现 mysql+nginx+php
    redis
    easyPoi框架的excel导入导出
    从生产计划的角度认识精益生产
  • 原文地址:https://www.cnblogs.com/ydchw/p/3042905.html
Copyright © 2020-2023  润新知