您的位置:首页 > Web前端 > JQuery

jQuery EasyUI API - Grid - DataGrid [原创汉化官方API]

2017-06-05 17:22 459 查看


DataGrid

  继承自 .fn.panel.defaults,覆盖默认值.fn.panel.defaults,覆盖默认值.fn.datagrid.defaults.

  DataGrid控件显示数据以表格的形式提供了丰富的选择,支持排序,组和编辑数据。

  DataGrid控件被设计来减少开发时间和要求开发商没有特定的知识。它是轻量级的和功能丰富的。合并单元格,多列标题,冻结列和页脚是仅有的几个特点。


[依赖于]

panel
resizable
linkbutton
pagination



[使用实例]

在HTML标签中,从现有的元素创建表元素、定义列、行中的数据:

1 <table class="easyui-datagrid">
2     <thead>
3         <tr>
4             <th data-options="field:'code'">Code</th>
5             <th data-options="field:'name'">Name</th>
6             <th data-options="field:'price'">Price</th>
7         </tr>
8     </thead>
9     <tbody>
10         <tr>
11             <td>001</td><td>name1</td><td>2323</td>
12         </tr>
13         <tr>
14             <td>002</td><td>name2</td><td>4612</td>
15         </tr>
16     </tbody>
17 </table>


通过<table>标签创建DataGrid,在table表格里嵌套<th>标签定义。

1 <table class="easyui-datagrid" style="width:400px;height:250px"
2         data-options="url:'datagrid_data.json',fitColumns:true,singleSelect:true">
3     <thead>
4         <tr>
5             <th data-options="field:'code',width:100">Code</th>
6             <th data-options="field:'name',width:100">Name</th>
7             <th data-options="field:'price',width:100,align:'right'">Price</th>
8         </tr>
9     </thead>
10 </table>


使用Javascript也可以创建DataGrid:

1 <table id="dg"></table>


1 $('#dg').datagrid({
2     url:'datagrid_data.json',
3     columns:[[
4         {field:'code',title:'Code',width:100},
5         {field:'name',title:'Name',width:100},
6         {field:'price',title:'Price',width:100,align:'right'}
7     ]]
8 });


使用一些参数查询数据:

1 $('#dg').datagrid('load', {
2     name: 'easyui',
3     address: 'ho'
4 });


改变数据到服务器后,更新之前的数据:

1 $('#dg').datagrid('reload');    // 重新加载当前页的数据



[DataGrid 属性]

属性继承自 panel 面板,下面是从 panel 新增的属性列表:
名称类型

描述默认值

columnsarrayDataGrid列的配置对象,更多详细请参见列属性。undefined
frozenColumnsarray相同列的属性,但是这些列会被冻结在左边。undefined
fitColumnsboolean为“true”则自动 展开/收缩 列的大小,为了自动填充Grid的宽度,防止出现水平滚动条。false
autoRowHeightboolean定义是否基于行的内容设置行高,设置“false”可以提高加载性能。true
toolbararray,selectorDataGrid面板顶部的 ToolBar 工具条,可以设置的值如下:

1) 一个数组,每个options项是相同的LinkButton。

2) 一个 selector 选择器 指定 ToolBar 工具条。
使用<div>标签定义 ToolBar 工具条:

1 $('#dg').datagrid({
2     toolbar: '#tb'
3 });
4 <div id="tb">
5   <a href="#"
6       class="easyui-linkbutton"
7       data-options="iconCls:'icon-edit',plain:true"></a>
8   <a href="#"
9       class="easyui-linkbutton"
10       data-options="iconCls:'icon-help',plain:true"></a>
11 </div>


通过数组定义 ToolBar:

1 $('#dg').datagrid({
2     toolbar: [{
3         iconCls: 'icon-edit',
4         handler: function(){alert('edit')}
5     },'-',{
6         iconCls: 'icon-help',
7         handler: function(){alert('help')}
8     }]
9 });


null
stripedboolean设置“True”实现各行变色的功能。false
methodstring这个方法需要远程数据类型。post
nowrapboolean设置为“True”则将数据显示在一行内,设置为“True”可以提高加载性能。true
idFieldstring指定哪些字段是标识字段。null
urlstring一个用于请求远程站点的URL路径。null
loadMsgstring当从远程站点加载数据时,显示一个提示信息。Processing, please wait …
paginationboolean设置为“True”则在DataGrid底部显示分页工具条按钮。false
rownumbersboolean设置为“True”则显示行数列。false
singleSelectboolean设置为“True”则只允许选择一行。false
checkOnSelectboolean如果设置为“True”,当用户点击一行时 选中/取消选中 该复选框。
如果设置为“False”,当用户准确点击复选框时,选中/取消选中 该复选框。

这个属性时1.3版本之后可用的。
true
selectOnCheckboolean如果设置为True,点击复选框将总会选择行。
如果设置为False,选中行将不会选中该复选框。

这个属性在1.3版本后可用。
true
pagePositionstring定义分页工具条的位置,有效值是:'top','bottom','both'。

这个属性在1.3版本后可用。
bottom
pageNumbernumber当设置分页的属性时,初始化页面数量。1
pageSizenumber当设置分页属性时,初始化页面大小。10
pageListarray当设置分页属性时,初始化页面大小选择列表、[10,20,30,40,50]
queryParamsobject当请求远程数据时,附带发送额外的参数。
代码示例:

1 $('#dg').datagrid({
2     queryParams: {
3         name: 'easyui',
4         subject: 'datagrid'
5     }
6 });


{}
sortNamestring定义哪些列可以被排序。null
sortOrderstring定义列的排序方式,只能是升序“asc”或降序“desc”。asc
remoteSortboolean定义是否接受来自远程服务器的排序数据。true
showHeaderboolean定义是否显示行的页眉。true
showFooterboolean定义是否显示行的页脚。false
scrollbarSizenumber滚动条的款(当是垂直滚动条时) 或者 高(当是水平滚动条的时候)18
rowStylerfunction返回例如 'background:red' 一样的风格样式,这个方法带两个参数:

rowIndex: 行的下标索引,从0开始

rowData: 符合记录数的行

代码示例:

1 $('#dg').datagrid({
2     rowStyler: function(index,row){
3         if (row.listprice>80){
4             return 'background-color:#6293BB;color:#fff;';
5         }
6     }
7 });


loaderfunction定义如何从远程服务器加载数据,返回“false”可以终止这个请求。
这个函数需要以下参数:

param: 向远程服务器传递的参数对象。

success(data): 这个回调函数会在检索数据成功后调用。

error(): 这个函数会在检索数据失败时调用。
json loader
loadFilterfunction显示返回过滤后的数据。这个函数带一个参数 'data',它表示原始数据。
你可以将原始数据源更改为标准的数据格式。
这个函数必须返回一个包含“total”和“rows”属性的标准数据对象。
代码示例:

1 // 从 ASP.NET Web Service Json 输出中删除“d”对象
2 $('#dg').datagrid({
3     loadFilter: function(data){
4         if (data.d){
5             return data.d;
6         } else {
7             return data;
8         }
9     }
10 });


editorsobject定义编辑行时的编辑器。predefined editors
viewobject定义DataGrid的View视图。default view



[列属性]

DataGrid的列是一个数组对象,它的元素也是一个数组。元素的元素数组是一个配置对象,它定义了每一列的字段。

代码示例:

1 columns:[[
2     {field:'itemid',title:'Item ID',rowspan:2,width:80,sortable:true},
3     {field:'productid',title:'Product ID',rowspan:2,width:80,sortable:true},
4     {title:'Item Details',colspan:4}
5 ],[
6     {field:'listprice',title:'List Price',width:80,align:'right',sortable:true},
7     {field:'unitcost',title:'Unit Cost',width:80,align:'right',sortable:true},
8     {field:'attr1',title:'Attribute',width:100},
9     {field:'status',title:'Status',width:60}
10 ]]


名称类型描述默认值
titlestring列的标题文本。undefined
fieldstring列的字段名称。undefined
widthnumber列的宽度,如果没有定义,宽度将会自动扩展以容纳其内容。undefined
rowspannumber表示应该占据多少行。undefined
colspannumber表示应该占据多少列。undefined
alignstring表示如何排列对齐列数据,可以用的值有:'left','right','center'。undefined
sortableboolean设置为“True”则指定列可以排序。undefined
resizableboolean设置为“True”则可以调整列的大小。undefined
hiddenboolean设置为“True”则隐藏列。undefined
checkboxboolean设置为“True”则显示一个复选框,该复选框有固定的宽度。undefined
formatterfunction单元格格式化的函数,带有三个参数:

value: 字段值

rowData: 行数据记录

rowIndex: 行下标

代码示例:

1 $('#dg').datagrid({
2     columns:[[
3         {field:'userId',title:'User', width:80,
4             formatter: function(value,row,index){
5                 if (row.user){
6                     return row.user.name;
7                 } else {
8                     return value;
9                 }
10             }
11         }
12     ]]
13 });


undefined
stylerfunction单元格样式函数,返回例如 'background:red' 一样的用户自定义的样式字符串。这个函数带有三个参数:

value: 字段值

rowData: 行数据记录

rowIndex: 行下标

代码示例:

1 $('#dg').datagrid({
2     columns:[[
3         {field:'listprice',title:'List Price', width:80, align:'right',
4             styler: function(value,row,index){
5                 if (value < 20){
6                     return 'background-color:#ffee00;color:red;';
7                 }
8             }
9         }
10     ]]
11 });


undefined
sorterfunction用来做局部排序的自定义字段的排序功能,带有两个参数:

a: 第一个字段值

b: 第二个字段值

代码示例:

1 $('#dg').datagrid({
2     remoteSort: false,
3     columns: [[
4         {field:'date',title:'Date',width:80,sortable:true,align:'center',
5             sorter:function(a,b){
6                 a = a.split('/');
7                 b = b.split('/');
8                 if (a[2] == b[2]){
9                     if (a[0] == b[0]){
10                         return (a[1]>b[1]?1:-1);
11                     } else {
12                         return (a[0]>b[0]?1:-1);
13                     }
14                 } else {
15                     return (a[2]>b[2]?1:-1);
16                 }
17             }
18         }
19     ]]
20 });


undefined
editorstring,object显示编辑类型,当字符串指明了编辑类型,对象包含两个属性:

type: string,编辑的类型,可以是的值:text,textarea,checkbox,numberbox,validatebox,datebox,combobox,combotree.

options: object, 对应于编辑类型的编辑器选项。
undefined



Editor

重写默认值 $.fn.datagrid.defaults.editors.

每个 editor 编辑器都有以下行为:
名称参数描述
initcontainer, options初始化 Editor 编辑器,并返回目标对象。
destroytarget如果有必要则摧毁 Editor 编辑器。
getValuetarget从 Editor 编辑器获取数据值。
setValuetarget , value设置 Editor 编辑器的数据值。
resizetarget , width如果需要则调整 Editor 编辑器。
例如,在Editor编辑器中如下定义:

1 $.extend($.fn.datagrid.defaults.editors, {
2     text: {
3         init: function(container, options){
4             var input = $('<input type="text" class="datagrid-editable-input">').appendTo(container);
5             return input;
6         },
7         getValue: function(target){
8             return $(target).val();
9         },
10         setValue: function(target, value){
11             $(target).val(value);
12         },
13         resize: function(target, width){
14             var input = $(target);
15             if ($.boxModel == true){
16                 input.width(width - (input.outerWidth() - input.width()));
17             } else {
18                 input.width(width);
19             }
20         }
21     }
22 });


[DataGrid View]

重写默认值:$.fn.datagrid.defaults.view.
该视图是一个对象,它会告诉DataGrid中如何呈现行。该对象必须定义了一下功能函数:
名称参数描述
rendertarget, container, frozen数据加载时调用。

target: Dom对象,DataGrid对象。

container: 行容器。

frozen: 表示是否呈现冻结容器。
renderFootertarget, container, frozen这是一个可选的功能,呈现页脚。
renderRowtarget, fields, frozen, rowIndex, rowData这是一个可选的功能,函数将会被render调用。
refreshRowtarget, rowIndex定义如何刷新指定的行。
onBeforeRendertarget, rows视图Render前触发。
onAfterRendertarget视图在Render后触发。

[事件]

这个时间继承自 panel 面板,一下是DataGrid另增的事件:
名称参数描述
onLoadSuccessdata数据加载时触发。
onLoadErrornone当加载远程数据时发生一些错误的时候触发。
onBeforeLoadparam在一个请求加载数据之前触发,如果返回“false”则取消加载操作。
onClickRowrowIndex, rowData当用户点击一行时触发,这个参数包括:

rowIndex: 单击行的索引,从0开始。

rowData: 对应单击的行记录
onDblClickRowrowIndex, rowData当用户双击行时触发,这些参数包括:

rowIndex: 单击行的索引,从0开始。

rowData: 对应点击的行记录
onClickCellrowIndex, field, value当用户点击单元格时触发。
onDblClickCellrowIndex, field, value当用户双击单元格时触发。
代码示例:

1 // 当双击一个单元格时,赋予Editor编辑器焦点,以开始编辑
2 $('#dg').datagrid({
3     onDblClickCell: function(index,field,value){
4         $(this).datagrid('beginEdit', index);
5         var ed = $(this).datagrid('getEditor', {index:index,field:field});
6         $(ed.target).focus();
7     }
8 });


onSortColumnsort, order当用户排序一列时触发,这些参数包括:

sort: 排序的列的字段名称

order: 排序列的顺序
onResizeColumnfield, width当用户调整列大小时触发。
onSelectrowIndex, rowData当用户选择一行时触发,这些参数包括:

rowIndex: 选择行的索引,从0开始

rowData: 对应着所选择的行记录
onUnselectrowIndex, rowData当用户取消选择行时触发,这些参数包括:

rowIndex: 取消选择的行下标,从0开始

rowData: 对应的取消选择的行记录。
onSelectAllrows当用户选择所有行时触发。
onUnselectAllrows当用户取消选中所有行时触发。
onCheckrowIndex,rowData当用户勾选一行时触发,这些参数包括:

rowIndex: 勾选的行下标,从0开始

rowData: 对应着勾选的行记录

这个事件在1.3版本后有效。
onUncheckrowIndex,rowData当用户取消勾选一行时触发,这些参数包括:

rowIndex: 取消选中的行下标,从0开始

rowData: 取消选中的行记录

这个事件在1.3版本后生效
onCheckAllrows当用户勾选所有行时触发,这个事件在1.3版本后有效。
onUncheckAllrows当用户取消勾选所有行时触发,这个事件在1.3版本后生效
onBeforeEditrowIndex, rowData当用户开始编辑一行时触发,这些参数包括:

rowIndex: 编辑行的下标,从0开始

rowData: 对应着编辑的行记录
onAfterEditrowIndex, rowData, changes当用户完成编辑时触发,这些参数包括:

rowIndex: 编辑的行下标,从0开始

rowData: 编辑的行记录

changes: 更改的 字段/值 对。
onCancelEditrowIndex, rowData当用户取消编辑一行时触发,这些参数包括:

rowIndex: 编辑的行下标,从0开始

rowData: 对应着编辑的行记录
onHeaderContextMenue, field当DataGrid的标题是右键点击时触发。
onRowContextMenue, rowIndex, rowData当行时右键点击时触发。

[方法]

名称参数描述
optionsnone返回options选项对象。
getPagernone返回paper页面对象。
getPanelnone返回panel面板对象、
getColumnFieldsfrozen返回列字段。如果冻结设置为true,则冻结列字段返回。

代码示例:

1 var opts = $('#dg').datagrid('getColumnFields');    // 获取非冻结列
2 var opts = $('#dg').datagrid('getColumnFields', true); // 获取冻结列


getColumnOptionfield返回指定列的选项option设置。
resizeparam做调整,做布局。
loadparam加载并显示在第一页的行,如果‘param’指定了,那么它便会随着QueryParams属性取代。
通常通过传递一个参数做一个查询,这个方法可以成为从服务器加载新数据。

1 $('#dg').datagrid('load',{
2     code: '01',
3     name: 'name01'
4 });


reloadparam重新加载行,和“load”方法一样,但是停留在当前页面。
reloadFooterfooter重新加载页脚行,代码示例:

1 // update footer row values and then refresh
2 var rows = $('#dg').datagrid('getFooterRows');
3 rows[0]['name'] = 'new name';
4 rows[0]['salary'] = 60000;
5 $('#dg').datagrid('reloadFooter');
6
7 // update footer rows with new data
8 $('#dg').datagrid('reloadFooter',[
9     {name: 'name1', salary: 60000},
10     {name: 'name2', salary: 65000}
11 ]);


loadingnone显示加载状态。
loadednone隐藏加载状态。
fitColumnsnone使列自动 展开/收缩 以适应网格的宽度。
fixColumnSizefield固定列的大下,如果‘field’参数没有被分配,则所有列大小都将是固定的。
代码示例:

1 $('#dg').datagrid('fixColumnSize', 'name');  // 固定‘name’列的大小
2 $('#dg').datagrid('fixColumnSize');  // 固定所有列大小


fixRowHeightindex固定指定的行高,如果“index”参数没有分配,则所有行高都将是固定的。
autoSizeColumnfield调整列宽度以适应其内容,这个方法在1.3版本之后可用。
loadDatadata加载本地数据,旧的行会被删除。
getDatanone返回加载的数据。
getRowsnone返回当前页的行。
getFooterRowsnone返回页脚行。
getRowIndexrow返回指定行的索引,row行参数可以是一个行记录或一个id字段值。
getCheckednone返回复选框被选中的所有行,这个方法在1.3版本后可用。
getSelectednone返回第一个选定行的记录或null。
getSelectionsnone返回所有选定的行,当没有选中记录的时候,将返回一个空数组。
clearSelectionsnone清除所有的选择。
selectAllnone选择当前页面所有的行。
unselectAllnone取消选择当前页面的所有行。
selectRowindex选择一行,行下标从0开始。
selectRecordidValue通过id值参数选中一行。
unselectRowindex取消选中行。
checkAllnone选中当前页面所有行,这个方法从1.3版本之后可用。
uncheckAllnone取消选中当前页所有行,这个方法从1.3版本之后可用。
checkRowindex选中一行,行下标从0开始,这个方法从1.3版本之后可用。
uncheckRowindex取消选中一行,行下标从0开始,该方法从1.3版本之后可用。
beginEditindex开始编辑行。
endEditindex结束编辑行。
cancelEditindex取消编辑行
getEditorsindex获取指定的行编辑器,每个编辑器具有以下属性:

actions: 该编辑器可以做的action动作,和编辑器定义一样。

target: 目标编辑器的jQuery对象。

field: 字段名称。

type: 编辑器类型,例如'text','combobox','datebox', 等.
getEditoroptions获取指定的编辑器,该选项包含两个属性:

index: 行下标索引

field: 字段名称

代码示例:

1 // 获取 DateBox 编辑器,并且更改它的值
2 var ed = $('#dg').datagrid('getEditor', {index:1,field:'birthday'});
3 $(ed.target).datebox('setValue', '5/4/2012');


refreshRowindex刷新行。
validateRowindex验证指定的行,返回“true”时有效。
updateRowparam更新指定的行,该参数包含以下属性:

index: 要更新的行下标索引。

row: 新行的数据。

代码示例:

1 $('#dg').datagrid('updateRow',{
2     index: 2,
3     row: {
4         name: 'new name',
5         note: 'new note message'
6     }
7 });


appendRowrow拼接一个新行,这个新行将会被追加在最后的位置:

1 $('#dg').datagrid('appendRow',{
2     name: 'new name',
3     age: 30,
4     note: 'some messages'
5 });


insertRowparam插入一个新行,该参数包含以下属性:

index: 要插入新行的下标索引位置,如果没有指定,则在后面拼接新增。

row: 要新增的行数据,
代码示例如下:

1 // 在第二行插入新行
2 $('#dg').datagrid('insertRow',{
3     index: 1,    // index start with 0
4     row: {
5         name: 'new name',
6         age: 30,
7         note: 'some messages'
8     }
9 });


deleteRowindex删除一行。
getChangestype获取自从上次提交后的产生更改的行。
这个类型参数指明哪些类型更改了行,可能的值如下:inserted,deleted,updated,等.
当类型参数没有指定时,返回所有更改的行。
acceptChangesnone提交所有的更改,从它被加载或者上次 acceptChanges 被调用。
rejectChangesnone回滚自其创建后所有更改的数据,或者从最近一次 acceptChanges 被调用。
mergeCellsoptions合并某个列为一个列,这个选项包含以下属性:

index: 行下标

field: 字段名称

rowspan: 要合并的行数

colspan: 要合并的列数
showColumnfield显示指定的列。
hideColumnfield隐藏指定的列。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: