转:http://www.coding123.net/article/20130707/jqGrid-subGrid-config.aspx
有些时候需要显示(或者编辑)父表格中选中行的子元素,jqGrid两种操作方法操作子记录。
-
子表格(subGrid)
-
一个grid对象作为子表格(subGrid)
安装
要使用这个方法,需要在下载页面勾选Subgrid后再下载jqGrid,下载地址:http://www.trirand.com/blog/?page_id=6。源文件grid.subgrid.js在src目录中。
属性
SubGrids使用父表格中如下属性,事件和方法,即这些属性可以用在父表格中配置。
subGrid | boolean | 设置为true启用子表格。如果启用子表格,在父表格的左边会添加附加的列。此列包含一个“加”图片表示用户可以点击它展开行,默认所有行的子表格是收缩的。 | false |
subGridOptions | object | 子表格的配置,下面为配置的默认值 -收缩
JavaScript 代码{
plusicon : "ui-icon-plus", minusicon : "ui-icon-minus", openicon: "ui-icon-carat-1-sw", expandOnLoad: false, selectOnExpand : false, reloadOnExpand : true }
|
|
subGridModel | array | 仅当subGrid设置为grud有效,描述子表格数据的列模型(column model),语法 -收缩
JavaScript 代码subGridModel : [
{ name : ['name_1','name_2',…,'name_n'], width : [width_1,width_2,…,width_n] , align : ['left','center',…,'right'] , params : [param_1,…,param_n], mapping:['name_1_map','name_2_map',…,'name_n_map']}
|
|
subgridtype | mixed | 设置子表格可以作为服务加载(This option allow loading subgrid as a service.)。没有设置此项,将使用父表格的datatype配置,参考下面的示例 | null |
subGridWidth | integer | 设置子表格宽度 | 20 |
subGridUrl | string | 配置子表格数据源url地址。jqGrid添加父行id作为参数添加传递到这个url地址。 如果不需要传递附加参数,要传递附加参数,可以配置subGridModel中的params。 | empty string |
ajaxSubgridOptions | object | 设置子表格ajax请求数据时的全局配置。会重写子表格中当前的所有ajax请求配置,包括complete事件。 | empty object |
要配置子表格,需要同时配置xmlReader或者jsonReader中的subGrid配置项,xmlReader默认配置如下
-收缩
JavaScript
代码xmlReader : {
...
subgrid: {
root: "rows",
row: "row",
repeatitems: true,
cell: "cell"
}
}
...
subgrid: {
root: "rows",
row: "row",
repeatitems: true,
cell: "cell"
}
}
jsonReader
-收缩
JavaScript
代码jsonReader : {
...
subgrid: {
root: "rows",
repeatitems: true,
cell: "cell"
}
}
...
subgrid: {
root: "rows",
repeatitems: true,
cell: "cell"
}
}
映射规则和父表格一样,更多信息参考:
jqGrid XML数据源读取器选项配置
jqGrid JSON数据源读取器选项配置
jqGrid datatype配置为function
jqGrid自定义数据
为了将子表格作为服务器,subGridType需要设置正确(In order to use correct subGridType as service ),下面示例展示实现
-收缩
JavaScript
代码jQuery("#grid_id").jqGrid({
...
subgridtype: function(rowidprm) {
jQuery.ajax({
url:'url_to_the_service',
data:rowidprm,
dataType:"json",
complete: function(jsondata,stat){
if(stat=="success") {
var thegrid = jQuery("#grid_id")//[0];
thegrid.subGridJson(eval("("+jsondata.responseText+")"),rowidprm.id);
}
}
});
},subgrid
...
});
...
subgridtype: function(rowidprm) {
jQuery.ajax({
url:'url_to_the_service',
data:rowidprm,
dataType:"json",
complete: function(jsondata,stat){
if(stat=="success") {
var thegrid = jQuery("#grid_id")//[0];
thegrid.subGridJson(eval("("+jsondata.responseText+")"),rowidprm.id);
}
}
});
},subgrid
...
});
参数 rowidprm 为键值对对象包含被展开行的id,设置subGridModel配置的其他的参数,subGridJson方法将在下面介绍。
事件
事件参数说明
-
pID:放置子表格内容的div元素的唯一id
-
id: 数据行id
-
sPostData:子表格发送请求时提交的数据
subGridBeforeExpand | pID, id | 展开子表格前触发。需要返回true/false,返回false阻止展开子表格 |
subGridRowExpanded | pID, id | 展开子表格后触发,用于想子表格添加自定义的数据 |
subGridRowColapsed | pID, id | 收缩子表格后触发,需要返回true/false,返回false不收缩子表格 |
serializeSubGridData | sPostData | 序列化传递给ajax请求的数据,需要返回序列化后的数据。当需要向服务器传递自定义数据时使用,如json/xml格式的字符串等。 |
Methods
expandSubGridRow | rowid | jqGrid object | 动态展开指定rowid的行的子表格 |
collapseSubGridRow | rowid | jqGrid object | 动态收缩指定rowid的行的子表格 |
toggleSubGridRow | rowid | jqGrid object | 动态切换指定rowid的行的子表格的展开/收缩状态 |
subGridJson | json, rowid | false | 向子表格添加数据,json对对象,rowid为需要添加的数据行id |
subGridXml | xml, rowid | false |
向子表格添加数据,xml为xml dom节点,rowid为需要添加的数据行id |
示例
显示每行数据中的详细数据
-收缩
JavaScript
代码jQuery(document).ready(function(){
jQuery("#list").jqGrid({
url:'example.php',
datatype: 'xml',
mtype: 'GET',
colNames:['Inv No','Date', 'Amount','Tax','Total','Notes'],
colModel :[
{name:'invid', index:'invid', width:55},
{name:'invdate', index:'invdate', width:90},
{name:'amount', index:'amount', width:80, align:'right'},
{name:'tax', index:'tax', width:80, align:'right'},
{name:'total', index:'total', width:80, align:'right'},
{name:'note', index:'note', width:150, sortable:false}
],
pager: '#pager',
rowNum:10,
rowList:[10,20,30],
sortname: 'invid',
sortorder: 'desc',
viewrecords: true,
caption: 'My first grid',
subGrid: true,
subGridUrl : "subgrid.php",
subGridModel : [
{
name : ['No', 'Item', 'Qty', 'Unit', 'Line Total'],
width : [55, 200, 80, 80, 80],
align : ['left','left','right','right','right'],
params: ['invdate']
}
]
});
});
jQuery("#list").jqGrid({
url:'example.php',
datatype: 'xml',
mtype: 'GET',
colNames:['Inv No','Date', 'Amount','Tax','Total','Notes'],
colModel :[
{name:'invid', index:'invid', width:55},
{name:'invdate', index:'invdate', width:90},
{name:'amount', index:'amount', width:80, align:'right'},
{name:'tax', index:'tax', width:80, align:'right'},
{name:'total', index:'total', width:80, align:'right'},
{name:'note', index:'note', width:150, sortable:false}
],
pager: '#pager',
rowNum:10,
rowList:[10,20,30],
sortname: 'invid',
sortorder: 'desc',
viewrecords: true,
caption: 'My first grid',
subGrid: true,
subGridUrl : "subgrid.php",
subGridModel : [
{
name : ['No', 'Item', 'Qty', 'Unit', 'Line Total'],
width : [55, 200, 80, 80, 80],
align : ['left','left','right','right','right'],
params: ['invdate']
}
]
});
});
相关推荐
jqgrid-subgrid支持数据的分层显示,样式也可以自己调整
【MVC4+JQGRID+SubGrid+JSTREE+JSON(DEMO)】这是一个基于C#的MVC4框架的示例项目,它利用了JQGRID的子网格(SubGrid)功能以及JSTREE插件,展示了如何在Web应用中实现数据的交互和展示。同时,该项目还包含了JSON...
- `jqGrid SubGrid`可以为每一行添加展开/折叠子表格的功能,便于查看详细信息。 - `jqGrid Form Editing`提供了弹出式或内联编辑模式,方便用户对数据进行编辑操作。 **四、Nova_CN与jqGrid** `Nova_CN`可能是指...
除了基本功能,jqGrid还有许多第三方扩展,如`jqGrid Footer`(添加表格底部行)、`jqGrid Subgrid`(子表格)和`jqGrid TreeGrid`(树形结构表格)等,这些扩展增强了jqGrid的功能和适用性。 ### 6. 版本更新与...
通过 jqGrid 网站的下载生成器,可以选择需要的组件,如 base、editing、subgrid、treegrid、import/export 和 user contributed modules。这些组件会被合并成一个 minified javascript 文件 —— jquery.jqGrid.min...
jqGrid 最新版 3.7.2 离线帮助手册,方便各位查看 Installing jqGrid Before you begin System Requirements Download jqGrid Change Log How to Install How it Works My First Grid Basic Grid Conventions ...
每个列对象可以包含一个`subgrid`属性,这个属性可以是一个对象,其中包含更多的列信息,形成多级结构。同时,我们还需要在HTML中创建对应的`<thead>`结构,确保每个单元格都正确地嵌套。 接下来,我们讨论冻结列的...
例如,"subgrid" 插件允许在一个单元格内嵌套另一个表格,"navigator" 插件则提供了包括新增、编辑、删除、查看等操作的导航栏,极大地提升了用户体验。 最后,js 文件夹包含 jqGrid 的主 JavaScript 文件,这是在...
5. 子网格(Subgrid):jqGrid 支持子网格功能,即在一个表格行下展开另一个表格,用于展示详细信息或相关数据,提高数据展示的层次感。 6. 自定义按钮(Custom Buttons):用户可以通过 custbutt.html 和 custbutt...
2. `plugins`:包含各种插件,如`subgrid`、`treegrid`等,扩展了jqGrid的功能。 3. `js`:jqGrid的核心JavaScript文件,如`grid.base.js`、`grid.common.js`等,提供了主要的表格操作逻辑。 4. `src`:源码目录,...
- **plugins**:插件目录存放了扩展jqGrid功能的各种插件,如`subgrid`用于子网格,`treegrid`用于树形结构展示,`navigator`提供额外的导航按钮,如添加、删除、编辑等。 - **js**:JavaScript代码的核心部分,...
jqGrid 3.7.2 版本 官方完整帮助手册,含有很多代码样例,方便大家查看学习。 Upgrading Upgrade from 3.6.4 to 3.6.5 Upgrade from 3.4.x to 3.5 Installing jqGrid Before you begin System Requirements Download...
| grid subgrid js | grid tbltogrid js | grid treegrid js | jqDnR js | jqModal js | jquery fmatter js | jquery jqGrid js | JsonXml js">css | ellipsis xbl xml | ui jqgrid css js | i18n | grid locale en ...
7. grid.subgrid.js:一个处理表格的插件。 8. grid.postext.js:一个可以用来操作 post 数据的包。 9. jqModal.js:模态对话框的编辑。 10. jqDnR.js:可拖拉的表格编辑。 11. themes:包含了 jQgrid 需要的样式表...
9. **插件扩展**:jqGrid有丰富的插件系统,如`subgrid`用于嵌套表格,`treegrid`实现树形结构,`navigator`提供额外的操作按钮等。在`plugins`目录下的文件即为这些插件的实现。 10. **版本更新与社区支持**:...
`subgrid.js` 和 `treegrid.js` 分别用于子网格和树形网格的实现。开发者可以根据需求选择并引入相应的插件,以增强表格的功能性。 3. **JS 文件**: JavaScript 文件夹包含jqGrid的核心脚本。`jquery.jqGrid.min....
- **子表格**(可能关联`subgrid_grid.html`):jqGrid支持在一个表格行内嵌套另一个表格,展示层级数据。 - **主子表**(可能关联`masterex.html`):主表格与子表格联动,操作主表格时可以影响子表格的数据。 2...
* subGrid:设置表格的子网格。 * subGridModel:设置表格的子网格模型。 * toppager:设置表格的顶部分页器。 * treeGrid:设置表格的树形网格。 * treeGridModel:设置表格的树形网格模型。 * viewrecords:设置...