快速掌握-jqgrid

是什么

jqgrid是一个基于jquery的表格控件,可以直接使用ajax的方式和服务器端通信。获取数据并渲染表格

jqgrid 做了什么

他内部实现了 从服务器端获取数据,通过监听请求前、请求中、请求后等状态,可以方便的获取和修改数据并绘制到表格中。在内部也对数据做了一些缓存优化,在处理 table 表格数据的时候,有一定的优势。

jqGrid参数

名称 类型 描述 默认值 可修改
url string 获取数据的地址
datatype string 从服务器端返回的数据类型,默认xml。可选类型:xml,local,json,jsonnp,script,xmlstring,jsonstring,clientside
mtype string ajax提交方式。POST或者GET,默认GET
colNames Array 列显示名称,是一个数组对象
colModel Array 常用到的属性:name 列显示的名称;index 传到服务器端用来排序用的列名称;width 列宽度;align 对齐方式;sortable 是否可以排序
pager string 定义翻页用的导航栏,必须是有效的html元素。翻页工具栏可以放置在html页面任意位置
rowNum int 在grid上显示记录条数,这个参数是要被传递到后台
rowList array 一个下拉选择框,用来改变显示记录数,当选择时会覆盖rowNum参数传递到后台
sortname string 默认的排序列。可以是列名称或者是一个数字,这个参数会被提交到后台
viewrecords boolean 定义是否要显示总记录数
caption string 表格名称
ajaxGridOptions[a1] object 对ajax参数进行全局设置,可以覆盖ajax事件 null
ajaxSelectOptions[a2] object 对ajax的select参数进行全局设置 null
altclass String 用来指定行显示的css,可以编辑自己的css文件,只有当altRows设为 ture时起作用 ui-priority-secondary
altRows boolean 设置表格 zebra-striped 值
autoencode boolean 对url进行编码 false
autowidth boolean 如果为ture时,则当表格在首次被创建时会根据父元素比例重新调整表格宽度。如果父元素宽度改变,为了使表格宽度能够自动调整则需要实现函数:setGridWidth false
cellLayout integer 定义了单元格padding + border 宽度。通常不必修改此值。初始值为 5
cellEdit boolean 启用或者禁用单元格编辑功能 false
cellsubmit String 定义了单元格内容保存位置 ‘remote’
cellurl String 单元格提交的url 空值
datastr String xmlstring或者jsonstring 空值
deselectAfterSort boolean 只有当datatype为local时起作用。当排序时不选择当前行 true
direction string 表格中文字的显示方向,从左向右(ltr)或者从右向左(rtr) ltr
editurl string 定义对form编辑时的url 空值
emptyrecords string 当返回的数据行数为0时显示的信息。只有当属性viewrecords 设置为ture时起作用
ExpandColClick boolean 当为true时,点击展开行的文本时,treeGrid就能展开或者收缩,不仅仅是点击图片 true
ExpandColumn string 指定那列来展开tree grid,默认为第一列,只有在treeGrid为true时起作用 空值
footerrow[a3] boolean 当为true时,会在翻页栏之上增加一行 false
forceFit boolean 当为ture时,调整列宽度不会改变表格的宽度。当shrinkToFit 为false时,此属性会被忽略 false
gridstate string 定义当前表格的状态:'visible' or 'hidden' visible
gridview boolean 构造一行数据后添加到grid中,如果设为true则是将整个表格的数据都构造完成后再添加到grid中,但treeGrid, subGrid, or afterInsertRow 不能用 false
height mixed 表格高度,可以是数字,像素值或者百分比 150
hiddengrid boolean 当为ture时,表格不会被显示,只显示表格的标题。只有当点击显示表格的那个按钮时才会去初始化表格数据。 false
hidegrid boolean 启用或者禁用控制表格显示、隐藏的按钮,只有当caption属性不为空时起效 true
hoverrows boolean 当为false时mouse hovering会被禁用 false
jsonReader array 描述json 数据格式的数组
lastpage integer 只读属性,定义了总页数 0
lastsort integer 只读属性,定义了最后排序列的索引,从0开始 0
loadonce boolean 如果为ture则数据只从服务器端抓取一次,之后所有操作都是在客户端执行,翻页功能会被禁用 false
loadtext string 当请求或者排序时所显示的文字内容 Loading....
loadui string 当执行ajax请求时要干什么。disable禁用ajax执行提示;enable默认,当执行ajax请求时的提示; block启用Loading提示,但是阻止其他操作 enable
multikey string 只有在multiselect设置为ture时起作用,定义使用那个key来做多选。shiftKeyaltKeyctrlKey 空值
multiboxonly boolean 只有当multiselect = true.起作用,当multiboxonly 为ture时只有选择checkbox才会起作用 false
multiselect boolean 定义是否可以多选 false
multiselectWidth integer 当multiselect为true时设置multiselect列宽度 20
page integer 设置初始的页码 1
pagerpos string 指定分页栏的位置 center
pgbuttons boolean 是否显示翻页按钮 true
pginput boolean 是否显示跳转页面的输入框 true
pgtext string 当前页信息
prmNames array Default valuesprmNames: {page:“page”,rows:“rows”, sort: “sidx”,order: “sord”, search:“_search”, nd:“nd”, npage:null}当参数为null时不会被发到服务器端 none
postData array 此数组内容直接赋值到url上,参数类型:{name1:value1…} 空array
reccount integer 只读属性,定义了grid中确切的行数。通常情况下与records属性相同,但有一种情况例外,假如rowNum=15,但是从服务器端返回的记录数是20,那么records值是20,但reccount值仍然为15,而且表格中也只显示15条记录。 0
recordpos string 定义了记录信息的位置: left, center, right right
records integer 只读属性,定义了返回的记录数 none
recordtext string 显示记录数信息。{0} 为记录数开始,{1}为记录数结束。viewrecords为ture时才能起效,且总记录数大于0时才会显示此信息
resizeclass string 定义一个class到一个列上用来显示列宽度调整时的效果 空值
rowList array 一个数组用来调整表格显示的记录数,此参数值会替代rowNum参数值传给服务器端。 []
rownumbers boolean 如果为ture则会在表格左边新增一列,显示行顺序号,从1开始递增。此列名为'rn'. false
rownumWidth integer 如果rownumbers为true,则可以设置column的宽度 25
savedRow array 只读属性,只用在编辑模式下保存数据 空值
scroll boolean 创建一个动态滚动的表格,当为true时,翻页栏被禁用,使用垂直滚动条加载数据,且在首次访问服务器端时将加载所有数据到客户端。当此参数为数字时,表格只控制可见的几行,所有数据都在这几行中加载 false
scrollOffset integer 设置垂直滚动条宽度 18
scrollrows boolean 当为true时让所选择的行可见 false
selarrrow array 只读属性,用来存放当前选择的行 array
selrow string 只读属性,最后选择行的id null
shrinkToFit boolean 此属性用来说明当初始化列宽度时候的计算类型,如果为ture,则按比例初始化列宽度。如果为false,则列宽度使用colModel指定的宽度 true
sortable boolean 是否可排序 false
sortname string 排序列的名称,此参数会被传到后台 空字符串
sortorder string 排序顺序,升序或者降序(asc or desc) asc
subGrid boolean 是否使用suggrid false
subGridModel array subgrid模型 array
subGridType mixed 如果为空则使用表格的dataType null
subGridUrl string 加载subgrid数据的url,jqGrid会把每行的id值加到url中 空值
subGridWidth integer subgrid列的宽度 20
toolbar array 表格的工具栏。数组中有两个值,第一个为是否启用,第二个指定工具栏位置(相对于body layer),如:[true,”both”] 。工具栏位置可选值:“top”,”bottom”, “both”. 如果工具栏在上面,则工具栏id为“t_”+表格id;如果在下面则为“tb_”+表格id;如果只有一个工具栏则为 “t_”+表格id [false,'']
totaltime integer 只读属性,计算加载数据的时间。目前支持xml跟json数据 0
treedatatype mixed 数据类型,通常情况下与datatype相同,不会变 null
treeGrid boolean 启用或者禁用treegrid模式 false
treeGridModel string treeGrid所使用的方法 Nested
treeIcons array 树的图标,默认值:{plus:'ui-icon-triangle-1-e',minus:'ui-icon-triangle-1-s',leaf:'ui-icon-radio-off'}
treeReader array 扩展表格的colModel且加在colModel定义的后面
tree_root_level numeric r oot元素的级别, 0
userData array 从request中取得的一些用户信息 array
userDataOnFooter boolean 当为true时把userData放到底部,用法:如果userData的值与colModel的值相同,那么此列就显示正确的值,如果不等那么此列就为空 false
viewrecords boolean 是否要显示总记录数 false
viewsortcols array 定义排序列的外观跟行为。数据格式:[false,'vertical',true].第一个参数是说,是否都要显示排序列的图标,false就是只显示 当前排序列的图标;第二个参数是指图标如何显示,vertical:排序图标垂直放置,horizontal:排序图标水平放置;第三个参数指单击功能,true:单击列可排序,false:单击图标排序。说明:如果第三个参数为false则第一个参数必须为ture否则不能排序
width number 如果设置则按此设置为主,如果没有设置则按colModel中定义的宽度计算 none
xmlReader array 对xml数据结构的描述

jqGrid 事件

参数 备注
afterInsertRow rowidrowdatarowelem 当插入每行时触发。rowid插入当前行的id;rowdata插入行的数据,格式为name: value,name为colModel中的名字
beforeRequest none 向服务器端发起请求之前触发此事件但如果datatype是一个function时例外
beforeSelectRow rowid, e 当用户点击当前行在未选择此行时触发。rowid:此行id;e:事件对象。返回值为ture或者false。如果返回true则选择完成,如果返回false则不会选择此行也不会触发其他事件
gridComplete none 当表格所有数据都加载完成而且其他的处理也都完成时触发此事件,排序,翻页同样也会触发此事件
loadComplete xhr 当从服务器返回响应时执行,xhr:XMLHttpRequest 对象
loadError xhr,status,error 如果请求服务器失败则调用此方法。xhr:XMLHttpRequest 对象;satus:错误类型,字符串类型;error:exception对象
onCellSelect rowid,iCol,cellcontent,e 当点击单元格时触发。rowid:当前行id;iCol:当前单元格索引;cellContent:当前单元格内容;e:event对象
ondblClickRow rowid,iRow,iCol,e 双击行时触发。rowid:当前行id;iRow:当前行索引位置;iCol:当前单元格位置索引;e:event对象
onHeaderClick gridstate 当点击显示/隐藏表格的那个按钮时触发;gridstate:表格状态,可选值:visible or hidden
onPaging pgButton 点击翻页按钮填充数据之前触发此事件,同样当输入页码跳转页面时也会触发此事件
onRightClickRow rowid,iRow,iCol,e 在行上右击鼠标时触发此事件。rowid:当前行id;iRow:当前行位置索引;iCol:当前单元格位置索引;e:event对象
onSelectAll aRowids,status multiselect为ture,且点击头部的checkbox时才会触发此事件。aRowids:所有选中行的id集合,为一个数组。 status:boolean变量说明checkbox的选择状态,true选中false不选中。无论checkbox是否选择,aRowids始终有 值
onSelectRow rowid,status 当选择行时触发此事件。rowid:当前行id;status:选择状态,当multiselect 为true时此参数才可用
onSortCol index,iCol,sortorder 当点击排序列但是数据还未进行变化时触发此事件。index:name在colModel中位置索引;iCol:当前单元格位置索引;sortorder:排序状态:desc或者asc
resizeStart event, index 当开始改变一个列宽度时触发此事件。event:event对象;index:当前列在colModel中位置索引
resizeStop newwidth, index 当列宽度改变之后触发此事件。newwidth:列改变后的宽度;index:当前列在colModel中的位置索引
serializeGridData postData 向服务器发起请求时会把数据进行序列化,用户自定义数据也可以被提交到服务器端

使用案例

jQuery("#jqgrid").jqGrid({
  url: APIPAGE["list"],
  datatype: "JSON",
  mtype: "POST",
  ajaxGridOptions: { contentType: "application/json;charset=utf-8" },
  serializeGridData: function (postData) {
    var param = {};
    //分页条件
    param.pageNumber = postData.page;
    param.pageSize = postData.rows;
    return JSON.stringify(param);
  },
  height: "auto",
  colNames: [
    "5寸图",
    "倒计时间(s)",
    "图片链接地址",
    "是否传用户参数",
    "状态",
    "操作",
  ],
  colModel: [
    {
      name: "imageUrl",
      index: "imageUrl",
      sortable: false,
      formatter: function (cellvalue, options, rowObj) {
        return "<img src=" + cellvalue + ' width="50" height="50"/>';
      },
    },
    { name: "countdownTime", index: "countdownTime", sortable: false },
    { name: "linkAddress", index: "linkAddress", sortable: false },
    {
      name: "isTransferParams",
      index: "isTransferParams",
      sortable: false,
      formatter: function (cellvalue, options, rowObj) {
        if (cellvalue == "Y") {
          return "是";
        } else {
          return "否";
        }
      },
    },
    {
      name: "status",
      index: "status",
      sortable: false,
      formatter: function (cellvalue, options, rowObj) {
        if (cellvalue == "START") {
          return "启用";
        } else {
          return "禁用";
        }
      },
    },
    { name: "act", index: "act", sortable: false },
  ],
  rowList: [5, 10, 20],
  pager: "#pjqgrid",
  viewrecords: false,
  jsonReader: {
    root: "data.list",
    page: "data.page.pageNumber",
    total: "data.page.pageTotal",
    records: "data.page.recordTotal",
    repeatitems: false,
    cell: "cell",
    id: "id",
  },
  gridComplete: function () {
    var ids = jQuery("#jqgrid").jqGrid("getDataIDs");
    for (var i = 0; i < ids.length; i++) {
      var cl = ids[i];
      be =
        "<button class='btn btn-xs btn-danger' data-toggle='tooltip' data-placement='right' title='停用' onclick=\"deleteScreen('" +
        cl +
        "');\"><i class='fa fa-pencil-square-o'></i>&nbsp;&nbsp;停用</button>&nbsp;";
      ce =
        "<button class='btn btn-xs btn-primary' data-toggle='tooltip' data-placement='right' title='修改' onclick=\"editScreen('" +
        cl +
        "');\"><i class='fa fa-lock'></i>&nbsp;&nbsp;修改</button>&nbsp;";
      var rowData = $("#jqgrid").jqGrid("getRowData", cl);
      jQuery("#jqgrid").jqGrid("setRowData", ids[i], { act: ce + be });
    }
    $(".jqgrid-rownum").removeClass("ui-state-default");
  },
  loadComplete: function () {},
  caption: null,
  autowidth: true,
});

编辑数据

// 弹框-闪屏-修改
function editScreen(rowId) {
  var rowData = jQuery("#jqgrid").jqGrid("getRowData", rowId);
  //$("#editScreenModal").modal('show');
  console.log(rowData);
}

api

  1. 文档地址: https://blog.mn886.net/jqGrid/
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,884评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,755评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,369评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,799评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,910评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,096评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,159评论 3 411
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,917评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,360评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,673评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,814评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,509评论 4 334
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,156评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,882评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,123评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,641评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,728评论 2 351

推荐阅读更多精彩内容