DataGrid

http://www.jeasyui.com/documentation/datagrid.php

Extend from $.fn.panel.defaults. Override defaults with $.fn.datagrid.defaults.

The datagrid displays data in a tabular format and offers rich support to select, sort, group and edit data. The datagrid has been designed to reduce development time and to require no specific knowledge from developers. It is both featherweight and feature-rich. Cell merging, multi-column headers, frozen columns and footers are just a few of its features.

Dependencies
  • panel
  • resizable
  • linkbutton
  • pagination
Usage Example

Create datagrid from an existing table element, defining columns, rows, and data in 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>

Create datagrid via <table> markup. The nested <th> tags define the columns on the table.

 
 
  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>

Create datagrid using javascript is also allowed.

 
 
  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. });

Query data with some parameters.

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

After changing data to server, refresh the front data.

 
 
  1. $('#dg').datagrid('reload'); // reload the current page data

DataGrid Properties

The properties extend from panel. below is the added properties for datagrid.

NameTypeDescriptionDefault
columnsarrayThe datagrid columns config object, see column properties for more details.undefined
frozenColumnsarraySame as the columns property, but the these columns will be frozen on left.undefined
fitColumnsbooleanTrue to auto expand/contract the size of the columns to fit the grid width and prevent horizontal scrolling.false
resizeHandlestringResizing column position, Available value are: 'left','right','both'. When 'right', users can resize columns by dragging the right edge of column headers, etc.
Available since version 1.3.2.
right
resizeEdgenumberThe resizing column edge. Available since version 1.5.3.5
autoRowHeightbooleanDefines if set the row height based on the contents of that row. Set to false can improve loading performance.true
toolbararray,selectorThe top toolbar of datagrid panel. Possible values:
1) an array, each tool options are same as linkbutton.
2) a selector that indicate the toolbar.

Define toolbar within a <div> tag:

$('#dg').datagrid({
	toolbar: '#tb'
});
<div id="tb">
<a href="#" class="easyui-linkbutton" data-options="iconCls:'icon-edit',plain:true"/a>
<a href="#" class="easyui-linkbutton" data-options="iconCls:'icon-help',plain:true"/a>
</div>

Define toolbar via array:

$('#dg').datagrid({
	toolbar: [{
		iconCls: 'icon-edit',
		handler: function(){alert('edit')}
	},'-',{
		iconCls: 'icon-help',
		handler: function(){alert('help')}
	}]
});
null
stripedbooleanTrue to stripe the rows.false
methodstringThe method type to request remote data.post
nowrapbooleanTrue to display data in one line. Set to true can improve loading performance.true
idFieldstringIndicate which field is an identity field.null
urlstringA URL to request data from remote site.null
dataarray,objectThe data to be loaded. Available since version 1.3.2.

Code example:

$('#dg').datagrid({
	data: [
		{f1:'value11', f2:'value12'},
		{f1:'value21', f2:'value22'}
	]
});
null
loadMsgstringWhen loading data from remote site, show a prompt message.Processing, please wait …
emptyMsgstringThe message to be shown when no records exist. 
paginationbooleanTrue to show a pagination toolbar on datagrid bottom.false
rownumbersbooleanTrue to show a row number column.false
singleSelectbooleanTrue to allow selecting only one row.false
ctrlSelectbooleanTrue to only allow multi-selection when ctrl+click is used. Available since version 1.3.6.false
checkOnSelectbooleanIf true, the checkbox is checked/unchecked when the user clicks on a row. If false, the checkbox is only checked/unchecked when the user clicks exactly on the checkbox.
Available since version 1.3.
true
selectOnCheckbooleanIf set to true, clicking a checkbox will always select the row. If false, selecting a row will not check the checkbox.
Available since version 1.3.
true
scrollOnSelectbooleanIf set to true, scroll to the row automatically when selecting it. Available since version 1.5.2.true
pagePositionstringDefines position of the pager bar. Available values are: 'top','bottom','both'.
Available since version 1.3.
bottom
pageNumbernumberWhen set pagination property, initialize the page number.1
pageSizenumberWhen set pagination property, initialize the page size.10
pageListarrayWhen set pagination property, initialize the page size selecting list.[10,20,30,40,50]
queryParamsobjectWhen request remote data, sending additional parameters also.

Code example:

$('#dg').datagrid({
	queryParams: {
		name: 'easyui',
		subject: 'datagrid'
	}
});
{}
sortNamestringDefines which column can be sorted.null
sortOrderstringDefines the column sort order, can only be 'asc' or 'desc'.asc
multiSortbooleanDefines if to enable multiple column sorting. Available since version 1.3.4.false
remoteSortbooleanDefines if to sort data from server.true
showHeaderbooleanDefines if to show row header.true
showFooterbooleanDefines if to show row footer.false
scrollbarSizenumberThe scrollbar width(when scrollbar is vertical) or height(when scrollbar is horizontal).18
rownumberWidthnumberThe width of the row number column. Available since version 1.5.30
editorHeightnumberThe default height of the editors.24
rowStylerfunctionReturn style such as 'background:red'. The function take two parameters:
rowIndex: the row index, start with 0
rowData: the record corresponding to this row

Code example:

$('#dg').datagrid({
	rowStyler: function(index,row){
		if (row.listprice>80){
			return 'background-color:#6293BB;color:#fff;'; // return inline style
			// the function can return predefined css class and inline style
			// return {class:'r1', style:{'color:#fff'}};	
		}
	}
});
 
loaderfunctionDefines how to load data from remote server. Return false can abort this action. This function takes following parameters:
param: the parameter object to pass to remote server.
success(data): the callback function that will be called when retrieve data successfully.
error(): the callback function that will be called when failed to retrieve data.
json loader
loadFilterfunctionReturn the filtered data to display. The function take one parameter 'data' that indicate the original data. You can change original source data to standard data format. This function must return standard data object that contain 'total' and 'rows' properties.

Code example:

// removing 'd' object from asp.net web service json output
$('#dg').datagrid({
	loadFilter: function(data){
		if (data.d){
			return data.d;
		} else {
			return data;
		}
	}
});
 
editorsobjectDefines the editor when editing a row.predefined editors
viewobjectDefines the view of datagrid.default view

Column Properties

The DataGrid Columns is an array object, which element is an array too. The element of element array is a config object, which defines every column field.

Code example:

 
 
  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. ]]

NameTypeDescriptionDefault
titlestringThe column title text.undefined
fieldstringThe column field name.undefined
widthnumberThe width of column. If not defined, the width will auto expand to fit its contents. No width definition will reduce performance.undefined
rowspannumberIndicate how many rows a cell should take up.undefined
colspannumberIndicate how many columns a cell should take up.undefined
alignstringIndicate how to align the column data. 'left','right','center' can be used.undefined
halignstringIndicate how to align the column header. Possible values are: 'left','right','center'. If not assigned, the header alignment is same as data alignment defined via 'align' property. Available since version 1.3.2.undefined
sortablebooleanTrue to allow the column can be sorted.undefined
orderstringThe default sort order, can only be 'asc' or 'desc'. Available since version 1.3.2.undefined
resizablebooleanTrue to allow the column can be resized.undefined
fixedbooleanTrue to prevent from adjusting width when 'fitColumns' is set to true.undefined
hiddenbooleanTrue to hide the column.undefined
checkboxbooleanTrue to show a checkbox. The checkbox column has fixed width.undefined
formatterfunctionThe cell formatter function, take three parameters:
value: the field value.
rowData: the row record data.
rowIndex: the row index.

Code example:

$('#dg').datagrid({
	columns:[[
		{field:'userId',title:'User', width:80,
			formatter: function(value,row,index){
				if (row.user){
					return row.user.name;
				} else {
					return value;
				}
			}
		}
	]]
});
undefined
stylerfunctionThe cell styler function, return style string to custom the cell style such as 'background:red'. The function take three parameter:
value: the field value.
rowData: the row record data.
rowIndex: the row index.

Code example:

$('#dg').datagrid({
	columns:[[
		{field:'listprice',title:'List Price', width:80, align:'right',
			styler: function(value,row,index){
				if (value < 20){
					return 'background-color:#ffee00;color:red;';
					// the function can return predefined css class and inline style
					// return {class:'c1',style:'color:red'}
				}
			}
		}
	]]
});
undefined
sorterfunctionThe custom field sort function that used to do local sorting, take two parameters:
a: the first field value.
b: the second field value.

Code example:

$('#dg').datagrid({
	remoteSort: false,
	columns: [[
		{field:'date',title:'Date',width:80,sortable:true,align:'center',  
			sorter:function(a,b){  
				a = a.split('/');  
				b = b.split('/');  
				if (a[2] == b[2]){  
					if (a[0] == b[0]){  
						return (a[1]>b[1]?1:-1);  
					} else {  
						return (a[0]>b[0]?1:-1);  
					}  
				} else {  
					return (a[2]>b[2]?1:-1);  
				}  
			}  
		}
	]]
});
undefined
editorstring,objectIndicate the edit type. When string indicates the edit type, when object contains two properties:
type: string, the edit type, possible types are: text,textbox,numberbox,numberspinner, combobox,combotree,combogrid,datebox,datetimebox, timespinner,datetimespinner, textarea,checkbox,validatebox.
options: object, the editor options corresponding to the edit type.
undefined

Editor

Override defaults with $.fn.datagrid.defaults.editors.

Every editor has following actions:

NameParametersDescription
initcontainer, optionsInitialize the editor and return the target object.
destroytargetDestroy the editor if necessary.
getValuetargetGet value from editor text.
setValuetarget , valueSet value for editor.
resizetarget , widthResize the editor if necessary.

For example, the text editor is defined as following:

 
 
  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. destroy: function(target){
  8. $(target).remove();
  9. },
  10. getValue: function(target){
  11. return $(target).val();
  12. },
  13. setValue: function(target, value){
  14. $(target).val(value);
  15. },
  16. resize: function(target, width){
  17. $(target)._outerWidth(width);
  18. }
  19. }
  20. });
DataGrid View

Override defaults with $.fn.datagrid.defaults.view.

The view is an object that will tell datagrid how to render rows. The object must defines the following functions:

NameParametersDescription
rendertarget, container, frozenCalled when the data is loaded.
target: DOM object, the datagrid object.
container: the rows container.
frozen: indicate if to render the frozen container.
renderFootertarget, container, frozenThis is an option function to render row footer.
renderRowtarget, fields, frozen, rowIndex, rowDataThis is an option function and will be called by render function.
refreshRowtarget, rowIndexDefines how to refresh the specified row.
onBeforeRendertarget, rowsFires before the view is rendered.
onAfterRendertargetFires after the view is rendered.

Events

The events extend from panel, below is the added events for datagrid.

NameParametersDescription
onLoadSuccessdataFires when data is loaded successfully.
onLoadErrornoneFires when some errors occur to load remote data.
onBeforeLoadparamFires before a request is made to load data. If return false the load action will be canceled.
onClickRowindex,rowFires when the user clicks a row, the parameters contains:
index: the clicked row index, start with 0
row: the record corresponding to the clicked row
onDblClickRowindex,rowFires when the user double clicks a row, the parameters contains:
index: the clicked row index, start with 0
row: the record corresponding to the clicked row
onClickCellindex,field,valueFires when the user clicks a cell.
onDblClickCellindex,field,valueFires when the user double clicks a cell.

Code example:

// when double click a cell, begin editing and make the editor get focus
$('#dg').datagrid({
	onDblClickCell: function(index,field,value){
		$(this).datagrid('beginEdit', index);
		var ed = $(this).datagrid('getEditor', {index:index,field:field});
		$(ed.target).focus();
	}
});
onBeforeSortColumnsort,orderFires before the user sorts a column, return false to cancel this action. Available since version 1.3.6.
onSortColumnsort,orderFires when the user sorts a column, the parameters contains:
sort: the sort column field name
order: the sort column order
onResizeColumnfield,widthFires when the user resizes the column.
onBeforeSelectindex,rowFires before the user selects a row, return false to cancel this action. Available since version 1.4.1.
onSelectindex,rowFires when the user selects a row, the parameters contains:
index: the selected row index, start with 0
row: the record corresponding to the selected row
onBeforeUnselectindex,rowFires before the user unselects a row, return false to cancel this action. Available since version 1.4.1.
onUnselectindex,rowFires when the user unselects a row, the parameters contains:
index: the unselected row index, start with 0
row: the record corresponding to the unselected row
onSelectAllrowsFires when the user selects all rows.
onUnselectAllrowsFires when the user unselects all rows.
onBeforeCheckindex,rowFires before the user checks a row, return false to cancel this action. Available since version 1.4.1.
onCheckindex,rowFires when the user checks a row, the parameters contains:
index: the checked row index, start with 0
row: the record corresponding to the checked row
Available since version 1.3.
onBeforeUncheckindex,rowFires before the user unchecks a row, return false to cancel this action. Available since version 1.4.1.
onUncheckindex,rowFires when the user unchecks a row, the parameters contains:
index: the unchecked row index, start with 0
row: the record corresponding to the unchecked row
Available since version 1.3.
onCheckAllrowsFires when the user checks all rows. Available since version 1.3.
onUncheckAllrowsFires when the user unchecks all rows. Available since version 1.3.
onBeforeEditindex,rowFires before the user starts editing a row, return false to cancel this action. The parameters contains:
index: the editing row index, start with 0
row: the record corresponding to the editing row
onBeginEditindex,rowFires when a row goes into edit mode. Available since version 1.3.6.
onEndEditindex,row,changesFires when finishing editing but before destroying editors. Available since version 1.3.6.
onAfterEditindex,row,changesFires after the user finishes editing, the parameters contains:
index: the editing row index, start with 0
row: the record corresponding to the editing row
changes: the changed field/value pairs
onCancelEditindex,rowFires when the user cancels editing a row, the parameters contains:
index: the editing row index, start with 0
row: the record corresponding to the editing row
onHeaderContextMenue,fieldFires when the header of datagrid is right clicked.
onRowContextMenue,index,rowFires when a row is right clicked.

Methods
NameParameterDescription
optionsnoneReturn the options object.
getPagernoneReturn the pager object.
getPanelnoneReturn the panel object.
getColumnFieldsfrozenReturn the column fields. If frozen setted to true the frozen column fields is returned.
Code example:
var opts = $('#dg').datagrid('getColumnFields');	// get unfrozen columns
var opts = $('#dg').datagrid('getColumnFields', true); // get frozen columns
getColumnOptionfieldReturn the specified column option.
resizeparamDo resize and do layout.
loadparamLoad and show the first page rows. If the 'param' is specified, it will replace with the queryParams property. Usually do a query by passing some parameters, this method can be called to load new data from server.
$('#dg').datagrid('load',{
	code: '01',
	name: 'name01'
});
reloadparamReload the rows. Same as the 'load' method but stay on current page.
reloadFooterfooterReload the footer rows. Code examples:
// update footer row values and then refresh
var rows = $('#dg').datagrid('getFooterRows');
rows[0]['name'] = 'new name';
rows[0]['salary'] = 60000;
$('#dg').datagrid('reloadFooter');

// update footer rows with new data
$('#dg').datagrid('reloadFooter',[
	{name: 'name1', salary: 60000},
	{name: 'name2', salary: 65000}
]);
loadingnoneDisplay loading status.
loadednoneHide loading status.
fitColumnsnoneMake columns auto expand/collapse to fit datagrid width.
fixColumnSizefieldFix columns size. If 'field' parameter is not assigned, all columns size will be fixed.

Code example:

$('#dg').datagrid('fixColumnSize', 'name');  // fix the 'name' column size
$('#dg').datagrid('fixColumnSize');  // fix all columns size
fixRowHeightindexFix the specified row height. If 'index' parameter is not assigned, all rows height will be fixed.
freezeRowindexFreeze the specify row that will always be displayed at the top when the datagrid is scrolled down. Available since version 1.3.2.
autoSizeColumnfieldadjusts the column width to fit the contents. Available since version 1.3.
loadDatadataLoad local data, the old rows will be removed.
getDatanoneReturn the loaded data.
getRowsnoneReturn the current page rows.
getFooterRowsnoneReturn the footer rows.
getRowIndexrowReturn the specified row index, the row parameter can be a row record or an id field value.
getCheckednoneReturn all rows where the checkbox has been checked. Available since version 1.3.
getSelectednoneReturn the first selected row record or null.
getSelectionsnoneReturn all selected rows, when no record selected, an empty array will return.
clearSelectionsnoneClear all selections.
clearCheckednoneClear all checked rows. Available since version 1.3.2.
scrollToindexScroll to the specified row. Available since version 1.3.3.
gotoPageparamGo to the specified page. Available since version 1.4.4.

Usage example:

// go to page 3
$('#dg').datagrid('gotoPage', 3);

// go to page 3 with callback
$('#dg').datagrid('gotoPage', {
	page: 3,
	callback: function(page){
		console.log(page)
	}
})
highlightRowindexHighlight a row. Available since version 1.3.3.
selectAllnoneSelect all current page rows.
unselectAllnoneUnselect all current page rows.
selectRowindexSelect a row, the row index start with 0.
selectRecordidValueSelect a row by passing id value parameter.
unselectRowindexUnselect a row.
checkAllnoneCheck all current page rows. Available since version 1.3.
uncheckAllnoneUncheck all current page rows. Available since version 1.3.
checkRowindexCheck a row, the row index start with 0. Available since version 1.3.
uncheckRowindexUncheck a row, the row index start with 0. Available since version 1.3.
beginEditindexBegin editing a row.
endEditindexEnd editing a row.
cancelEditindexCancel editing a row.
getEditorsindexGet the specified row editors. Each editor has the following properties:
actions: the actions that the editor can do, same as the editor definition.
target: the target editor jQuery object.
field: the field name.
type: the editor type, such as 'text','combobox','datebox', etc.
getEditoroptionsGet the specified editor, the options contains two properties:
index: the row index.
field: the field name.

Code example:

// get the datebox editor and change its value
var ed = $('#dg').datagrid('getEditor', {index:1,field:'birthday'});
$(ed.target).datebox('setValue', '5/4/2012');
refreshRowindexRefresh a row.
validateRowindexvalidate the specified row, return true when valid.
updateRowparamUpdate the specified row, the param contains following properties:
index: the row index to be updated.
row: the new row data.

Code example:

$('#dg').datagrid('updateRow',{
	index: 2,
	row: {
		name: 'new name',
		note: 'new note message'
	}
});
appendRowrowAppend a new row. The new row will be added to the last position:
$('#dg').datagrid('appendRow',{
	name: 'new name',
	age: 30,
	note: 'some messages'
});
insertRowparamInsert a new row, the param contains following properties:
index: the row index to insert into, if not defined, append the new row.
row: the row data. Code examples:
// insert a new row at second row position
$('#dg').datagrid('insertRow',{
	index: 1,	// index start with 0
	row: {
		name: 'new name',
		age: 30,
		note: 'some messages'
	}
});
deleteRowindexDelete a row.
getChangestypeGet changed rows since the last commit. The type parameter indicate which type changed rows, possible value is: inserted,deleted,updated,etc. When the type parameter is not assigned, return all changed rows.
acceptChangesnoneCommits all the changes data since it was loaded or since the last time acceptChanges was called.
rejectChangesnoneRolls back all the changes data since it was created, or since the last time acceptChanges was called.
mergeCellsoptionsMerge some cells to one cell, the options contains following properties:
index: the row index.
type: the row type, possible values are 'body','footer'.
field: the field name.
rowspan: the rowspan count to be merged.
colspan: the colspan count to be merged.

Code example:

// merge the footer rows
$('#dg').datagrid('mergeCells', {
	index: 1,
	field: 'name',
	colspan: 2,
	type: 'footer'
});
showColumnfieldDisplay the specified column.
hideColumnfieldHide the specified column.
sortparamSort the datagrid. Available since version 1.3.6.

Code example:

// sort on a column
$('#dg').datagrid('sort', 'itemid');
// sort on a column with specified order
$('#dg').datagrid('sort', {
	sortName: 'productid',
	sortOrder: 'desc'
});
// sort on multiple columns
$('#dg').datagrid('sort', {
	sortName: 'productid,listprice',
	sortOrder: 'desc,asc'
});
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值