1. 程式人生 > >easyui datagrid 基礎方法和事件

easyui datagrid 基礎方法和事件

--------------------- 本文來自 kopess 的CSDN 部落格 ,全文地址請點選:https://blog.csdn.net/yeyingss/article/details/52955010?utm_source=copy

資料表格屬性(DataGrid Properties)

屬性繼承控制面板,以下是資料表格獨有的屬性。

名稱 型別 描述 預設值
columns array 資料表格列配置物件,檢視列屬性以獲取更多細節。 undefined
frozenColumns array 跟列屬性一樣,但是這些列固定在左邊,不會滾動。 undefined
fitColumns boolean 設定為true將自動使列適應表格寬度以防止出現水平滾動。 false
autoRowHeight boolean 定義設定行的高度,根據該行的內容。設定為false可以提高負載效能。 true
toolbar array,selector 資料表格頂部面板的工具欄。可能的值: 1)陣列,每個工具選項和連結按鈕相同。 2)選擇顯示的工具欄。 在一個<div>的標籤定義工具欄:
$('#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>

通過陣列定義工具欄:

$('#dg').datagrid({
	toolbar: [{
		iconCls: 'icon-edit',
		handler: function(){alert('edit')}
	},'-',{
		iconCls: 'icon-help',
		handler: function(){alert('help')}
	}]
});
null
striped boolean 設定為true將交替顯示行背景。 false
method string 請求遠端資料的方法型別。 post
nowrap boolean 設定為true,當資料長度超出列寬時將會自動擷取。 true
idField string 表明該列是一個唯一列。 null
url string 一個用以從遠端站點請求資料的超連結地址。 null
loadMsg string 當從遠端站點載入資料時,顯示的一條快捷資訊。 Processing, please wait …
pagination boolean 設定true將在資料表格底部顯示分頁工具欄。 false
rownumbers boolean 設定為true將顯示行數。 false
singleSelect boolean 設定為true將只允許選擇一行。 false
checkOnSelect boolean 如果為true,該複選框被選中/取消選中,當用戶點選某一行上。如果為false,該複選框僅檢查/取消選中,當用戶點選完全的複選框。 此屬性是1.3版本。 true
selectOnCheck boolean 如果設定為true,單擊一個複選框,將始終選擇行。如果為false,不會選擇行選中該複選框。 此屬性是1.3版本。 true
pagePosition string  定義的分頁欄的位置。可用的值有 'top','bottom','both'。 此屬性是可自1.3版本。 bottom
pageNumber number 當設定分頁屬性時,初始化分頁碼。 1
pageSize number 當設定分頁屬性時,初始化每頁記錄數。 10
pageList array 當設定分頁屬性時,初始化每頁記錄數列表。 [10,20,30,40,50]
queryParams object 當請求遠端資料時,傳送的額外引數。

示例:

$('#dg').datagrid({
	queryParams: {
		name: 'easyui',
		subject: 'datagrid'
	}
});
{}
sortName string 當資料表格初始化時以哪一列來排序。 null
sortOrder string 定義排序順序,可以是'asc'或者'desc'(正序或者倒序)。 asc
remoteSort boolean 定義是否通過遠端伺服器對資料排序。 true
showFooter boolean 定義是否顯示行底(如果是做統計表格,這裡可以顯示總計等)。 false
rowStyler function 返回樣式,如:'background:red',function有2個引數: index:行索引,從0開始. row:對應於該行記錄的物件。

示例:

$('#dg').datagrid({
	rowStyler: function(index,row){
		if (row.listprice>80){
			return 'background-color:#6293BB;color:#fff;';
		}
	}
});
loader function 定義如何從遠端伺服器載入資料。返回false可以取消該操作。這個函式接受以下引數: param: 引數物件傳遞到遠端伺服器。 success(data): 回撥函式將被呼叫成功檢索的資料。 error():回撥函式將被呼叫失敗時檢索資料。 json loader
loadFilter function 返回過濾的資料顯示。該函式需要一個引數'data',表示原始資料。您可以更改源資料的標準資料格式。此函式必須返回標準資料物件中包含的“total”和“rows”的屬性。

示例:

// removing 'd' object from asp.net web service json output
$('#dg').datagrid({
	loadFilter: function(data){
		if (data.d){
			return data.d;
		} else {
			return data;
		}
	}
});
editors object 定義當編輯一行時的編輯模式。 predefined editors
view object 定義資料表格的檢視。 default view

列屬性(Column Properties)

資料表格的列是一個物件陣列,即這個物件中的元素也是一個數組(js中陣列是物件)。 物件陣列中的每一個元素都是可配置的物件,每個可配置物件定義一個列。

示例:

  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. ]]  
名稱 型別 描述 預設值
title string 列標題。 undefined
field string 列欄位。 undefined
width number 列寬。 undefined
rowspan number 表明一個單元格跨幾行。 undefined
colspan number 表明一個單元格跨幾列。 undefined
align string 表明如何對其列資料,可選值:'left','right','center'。 undefined
sortable boolean 設定為true允許對該列排序。 undefined
resizable boolean 設定為true允許該列被縮放。 undefined
hidden boolean 設定為true將隱藏列。 undefined
checkbox boolean 設定為true將顯示覆選框。 undefined
formatter function 格式化單元格函式,有3個引數: value:欄位的值。 rowData:行資料。 rowIndex:行索引。

示例:

$('#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
styler function 單元格樣式函式,返回樣式字串裝飾表格如'background:red',function有3個引數: value:欄位值。 rowData:行資料。 rowIndex:行索引。

示例:

$('#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;';
				}
			}
		}
	]]
});
undefined
sorter function T自定義欄位排序函式,有2個引數: a:該列的第一個值。 b:該列的第二個值。

示例:

$('#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
editor string,object 表明編輯型別。如果屬性是字串型別表示編輯型別,如果是物件則包含2個引數: type:字串,編輯型別,可選值:text,textarea,checkbox,numberbox,validatebox,datebox,combobox,combotree。 options:物件,物件於編輯型別的編輯器屬性。 undefined

編輯器(Editor)

使用$.fn.datagrid.defaults.editors過載預設值。

每個編輯器都有以下方法:

名稱 屬性 描述
init container, options 初始化編輯器並返回目標物件。
destroy target 登出編輯器。
getValue target 獲取編輯框的值。
setValue target , value 設定編輯框的值。
resize target , width 調整編輯器

如下程式碼將定義一個文字編輯器:

  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過載預設值。

檢視是一個告訴資料表格如何呈現行記錄的物件,物件必須定義以下方法:

名稱 屬性 描述
render target, container, frozen 當資料載入時呼叫。 target: DOM物件,資料網格物件。 container: 行記錄容器。 frozen: 是否呈現固定容器。
renderFooter target, container, frozen 這是一個可選函式用以展現行底。
renderRow target, fields, frozen, rowIndex, rowData 這是一個可選函式,它可以被render函式呼叫。
refreshRow target, rowIndex 定義如何重新整理指定的行。
onBeforeRender target, rows 在檢視被呈現之前觸發。
onAfterRender target 在檢視被程式之後觸發。

事件(Events)

事件繼承控制面板,以下是資料表格獨有的屬性。

名稱 屬性 描述
onLoadSuccess data 當資料載入成功時觸發。
onLoadError none 當載入遠端資料發生錯誤時觸發。
onBeforeLoad param 在請求載入資料之前觸發,如果返回false將取消載入。
onClickRow rowIndex, rowData 當用戶點選行時觸發,引數如下: rowIndex:被點選的行索引,從0開始。 rowData:對應於被點選的行的記錄。
onDblClickRow rowIndex, rowData 當用戶雙擊一行時觸發,引數如下: rowIndex:被點選的行索引,從0開始。 rowData:對應於被點選的行的記錄。
onClickCell rowIndex, field, value 當用戶點選單元格時觸發。
onDblClickCell rowIndex, field, value 當用戶雙擊單元格時觸發。

示例:

// 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();
	}
});
onSortColumn sort, order 當用戶對列排序時觸發,引數如下: sort:排序欄位名稱。 order:排序順序。
onResizeColumn field, width 當用戶調整列寬時觸發。
onSelect rowIndex, rowData 當用戶選擇一行是觸發,引數如下: rowIndex:被選擇的行索引,從0開始。 rowData:對應於被選擇行的記錄。
onUnselect rowIndex, rowData 當用戶取消選擇一行時觸發,引數如下: rowIndex:被取消選擇的行索引,從0開始。 rowData:對應於被取消選擇行的記錄。
onSelectAll rows 當用戶選擇所有行時觸發。
onUnselectAll rows 當用戶取消選擇所有行時觸發。
onCheck rowIndex,rowData 當用戶選中行時觸發,引數包含: rowIndex:選中行的索引,從0開始 rowData:選中的行對應的記錄 此屬性是1.3版本。
onUncheck rowIndex,rowData 當用戶取消選中行時觸發,引數包含: rowIndex:取消選中行的索引,從0開始 rowData:未經檢查的行對應的記錄 此屬性是1.3版本。
onCheckAll rows 當用戶檢查所有行時觸發。此屬性是1.3版本。
onUncheckAll rows 使用者取消所有行時觸發。此屬性是1.3版本。
onBeforeEdit rowIndex, rowData 當用戶開始編輯一行時觸發,引數如下: rowIndex:正在編輯的行索引,從0開始。 rowData:對應於正在編輯的行的記錄。
onAfterEdit rowIndex, rowData, changes 當用戶編輯完成時觸發,引數如下: rowIndex:正在編輯的行索引,從0開始。 rowData:對應於正在編輯的行的記錄。 changes:被改變的欄位內容,對應方式為欄位:值。
onCancelEdit rowIndex, rowData 當用戶取消編輯行時觸發,引數如下: rowIndex:正在編輯的行索引,從0開始。 rowData:對應於正在編輯的行的記錄。
onHeaderContextMenu e, field 當資料表格的列標題被滑鼠右鍵單擊時觸發。
onRowContextMenu e, rowIndex, rowData 當一行被滑鼠右鍵單擊時觸發。

方法(Methods)

名稱 屬性 描述
options none 返回屬性物件。
getPager none 返回頁面物件。
getPanel none 返回控制面板物件。
getColumnFields frozen 返回列欄位,如果設定了frozen屬性為true,將返回固定列的欄位名。 示例:
var opts = $('#dg').datagrid('getColumnFields');	// get unfrozen columns
var opts = $('#dg').datagrid('getColumnFields', true); // get frozen columns
getColumnOption field 返回特定的列屬性。
resize param 縮放和佈局。
load param 載入並顯示第一頁的記錄,如果傳遞了'param'引數,它將會覆蓋查詢引數屬性的值。通過傳遞一些引數,通常做一個查詢,這個方法可以被稱為從伺服器載入新資料。
$('#dg').datagrid('load',{
	code: '01',
	name: 'name01'
});
reload param 過載記錄,跟'load'方法一樣但是過載的是當前頁的記錄而非第一頁。
reloadFooter footer 過載行底記錄。 示例:
// 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}
]);
loading none 顯示載入狀態。
loaded none 隱藏載入狀態。
fitColumns none 讓列寬自動適應資料表格的寬度。
fixColumnSize field 固定列尺寸。如果“field' 引數未指定,將所有列的大小固定。

示例:

$('#dg').datagrid('fixColumnSize', 'name');  // fix the 'name' column size
$('#dg').datagrid('fixColumnSize');  // fix all columns size
fixRowHeight index 固定特定列的高度。如果“index' 引數未指定,將所有列的高度固定。
autoSizeColumn field 自動調整列寬,以適應內容。此方法是1.3版本特有的。
loadData data 載入本地資料,舊記錄將被移除。
getData none 返回已載入資料。
getRows none 返回當前頁的記錄。
getFooterRows none 返回行底記錄。
getRowIndex row 返回指定行的索引,row引數可以是行記錄或者是一個id欄位的值。
getChecked none 返回所有行的複選框已被選中。此方法是1.3版本特有的。
getSelected none 返回第一個被選擇的行記錄或null。
getSelections none 返回所有被選擇的行,當沒有記錄被選擇時,將返回一個空陣列。
clearSelections none 取消所有的已選擇項。
selectAll none 選擇所有頁面的行。
unselectAll none 取消選擇所有頁面的行。
selectRow index 選擇一行,行索引從0開始。
selectRecord idValue 通過傳遞id引數來選擇一行。
unselectRow index 取消選擇一行。
checkAll none 檢查所有頁面的行。此方法是1.3版本特有的。
uncheckAll none 取消檢查所有當前頁面的行。此方法是1.3版本特有的。
checkRow index 檢查行,行索引從0開始。此方法是1.3版本特有的。
uncheckRow index 取消檢查行,行索引從0開始。此方法是1.3版本特有的。
beginEdit index 開始編輯一行。
endEdit index 結束編輯。
cancelEdit index 取消編輯。
getEditors index 獲取指定行的編輯器,每個編輯器有如下屬性: actions:編輯器可以做的行為。 target:目標編輯器jQuery物件。 field:欄位名。 type:編輯器型別。
getEditor options 獲取特定的編輯器,options引數有2個屬性: index:行索引。 field:欄位名。

示例:

// get the datebox editor and change its value
var ed = $('#dg').datagrid('getEditor', {index:1,field:'birthday'});
$(ed.target).datebox('setValue', '5/4/2012');
refreshRow index 重新整理一行。
validateRow index 校驗指定的行,如果有效返回true。
updateRow param 更新指定的行,param引數包含如下屬性: index:要更新的行索引。 row:新的行資料。

示例:

$('#dg').datagrid('updateRow',{
	index: 2,
	row: {
		name: 'new name',
		note: 'new note message'
	}
});
appendRow row 新增一行。 新的行會被新增到最後一個位置:
$('#dg').datagrid('appendRow',{
	name: 'new name',
	age: 30,
	note: 'some messages'
});
insertRow param

插入一個新行,param引數包含如下屬性: index:要插入的行索引,如果沒有定義則在最後面新增一個新行。 row:行資料。

示例:

// 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'
	}
});
deleteRow index 刪除一行。
getChanges type 獲取從最後一次提交開始的被修改的所有行,type引數表明修改的型別,可選值:inserted,deleted,updated等 。當沒有傳遞type引數時,返回所有被修改的行。
acceptChanges none 提交所有修改的資料,提交後的資料將不能再修改或者回滾。
rejectChanges none 回滾自建立以來或自上次呼叫AcceptChanges,所有的變化資料。
mergeCells options 合併單元格,options引數包含如下屬性: index:行索引。 field:欄位名。 rowspan:整合單元格要跨的行數。 colspan:整合單元格要跨的列數。
showColumn field 顯示特定的列。
hideColumn field 隱藏特定的列。