資料表格

huidaoli發表於2013-09-03

資料表格

繼承$.fn.panel.defaults,使用$.fn.datagrid.defaults過載預設值。

依賴關係

  • 控制皮膚
  • 縮放
  • 連結按鈕
  • 分頁

使用方法

 
  1. <table id="tt"></table>  
 
  1. $('#tt').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. });  

資料表格屬性

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

名稱型別描述預設值
columns(列) array(陣列) 資料表格列配置物件,檢視列屬性以獲取更多細節。 null
frozenColumns(固定列) array(陣列) 跟列屬性一樣,但是這些列固定在左邊,不會滾動。 null
fitColumns(自適應列寬) boolean(布林型) 設定為true將自動使列適應表格寬度以防止出現水平滾動。 false
striped(顯示條紋) boolean(布林型) 設定為true將交替顯示行背景。 false
method(方法) string(字串) 請求遠端資料的方法型別。 post
nowrap(擷取) boolean(布林型) 設定為true,當資料長度超出列寬時將會自動擷取。 true
idField(id欄位) string(字串) 表明該列是一個唯一列。 null
url(超連結) string(字串) 一個用以從遠端站點請求資料的超連結地址。 null
loadMsg(載入時資訊) string(字串) 當從遠端站點載入資料時,顯示的一條快捷資訊。 Processing, please wait …
pagination(分頁) boolean(布林型) 設定true將在資料表格底部顯示分頁工具欄。 false
rownumbers(行數) boolean(布林型) 設定為true將顯示行數。 false
singleSelect(單選模式) boolean(布林型) 設定為true將只允許選擇一行。 false
pageNumber(當前頁碼) number(數字) 當設定分頁屬性時,初始化分頁碼。 1
pageSize(每頁記錄數) number(數字) 當設定分頁屬性時,初始化每頁記錄數。 10
pageList(可選擇的每頁記錄數) array 當設定分頁屬性時,初始化每頁記錄數列表。 [10,20,30,40,50]
queryParams(查詢引數) object(物件) 當請求遠端資料時,傳送的額外引數。 {}
sortName(預設排序) string(字串) 當資料表格初始化時以哪一列來排序。 null
sortOrder(排序順序) string(字串) 定義排序順序,可以是'asc'或者'desc'(正序或者倒序)。 asc
remoteSort(遠端排序) boolean(布林型) 定義是否通過遠端伺服器對資料排序。 true
showFooter(顯示行底) boolean(布林型) 定義是否顯示行底(如果是做統計表格,這裡可以顯示總計等)。 false
rowStyler(行樣式) function(函式) 返回樣式,如:'background:red',function有2個引數:
index:行索引,從0開始.
row:對應於該行記錄的物件。
 
loadFilter(載入過濾器) function(函式) 返回用以顯示的已過濾資料,function有一個引數'data'表示原始資料,你可以將原始資料改變為規範的資料格式,該函式必須返回包含 'total'和'rows'屬性的標準資料物件。  
editors(編輯模式) object(物件) 定義當編輯一行時的編輯模式。 predefined editors
view(檢視) object(物件) 定義資料表格的檢視。 default view

列屬性

資料表格的列是一個物件陣列,即這個物件中的元素也是一個陣列(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:行索引。
undefined
styler(樣式) function(函式) 單元格樣式函式,返回樣式字串裝飾表格如'background:red',function有3個引數:
value:欄位值。
rowData:行資料。
rowIndex:行索引。
undefined
sorter(排序器) function(函式) T自定義欄位排序函式,有2個引數:
a:該列的第一個值。
b:該列的第二個值。
undefined
editor(編輯器) string,object(字串,物件) 表明編輯型別。如果屬性是字串型別表示編輯型別,如果是物件則包含2個引數:
type:字串,編輯型別,可選值:text,textarea,checkbox,numberbox,validatebox,datebox,combobox,combotree。
options:物件,物件於編輯型別的編輯器屬性。
undefined

編輯器

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

資料表格檢視

使用$.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 在檢視被程式之後觸發。

事件

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

名稱引數描述
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 當使用者雙擊單元格時觸發。
onSortColumn sort, order 當使用者對列排序時觸發,引數如下:
sort:排序欄位名稱。
order:排序順序。
onResizeColumn field, width 當使用者調整列寬時觸發。
onSelect rowIndex, rowData 當使用者選擇一行是觸發,引數如下:
rowIndex:被選擇的行索引,從0開始。
rowData:對應於被選擇行的記錄。
onUnselect rowIndex, rowData 當使用者取消選擇一行時觸發,引數如下:
rowIndex:被取消選擇的行索引,從0開始。
rowData:對應於被取消選擇行的記錄。
onSelectAll rows 當使用者選擇所有行時觸發。
onUnselectAll rows 當使用者取消選擇所有行時觸發。
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 當一行被滑鼠右鍵單擊時觸發。

方法

名稱引數描述
options none 返回屬性物件。
getPager none 返回頁面物件。
getPanel none 返回控制皮膚物件。
getColumnFields frozen 返回列欄位,如果設定了frozen屬性為true,將返回固定列的欄位名。
getColumnOption field 返回特定的列屬性。
resize param 縮放和佈局。
load param 載入並顯示第一頁的記錄,如果傳遞了'param'引數,它將會覆蓋查詢引數屬性的值。
reload param 過載記錄,跟'load'方法一樣但是過載的是當前頁的記錄而非第一頁。
reloadFooter footer 過載行底記錄。
loading none 顯示載入狀態。
loaded none 隱藏載入狀態。
fitColumns none 讓列寬自動適應資料表格的寬度。
fixColumnSize none 固定列尺寸。
fixRowHeight index 固定特定列的高度。
loadData data 載入本地資料,舊記錄將被移除。
getData none 返回已載入資料。
getRows none 返回當前頁的記錄。
getFooterRows none 返回行底記錄。
getRowIndex row 返回指定行的索引,row引數可以是行記錄或者是一個id欄位的值。
getSelected none 返回第一個被選擇的行記錄或null。
getSelections none 返回所有被選擇的行,當沒有記錄被選擇時,將返回一個空陣列。
clearSelections none 取消所有的已選擇項。
selectAll none 全選。
unselectAll none 取消全選。
selectRow index 選擇一行,行索引從0開始。
selectRecord idValue 通過傳遞id引數來選擇一行。
unselectRow index 取消選擇一行。
beginEdit index 開始編輯一行。
endEdit index 結束編輯。
cancelEdit index 取消編輯。
getEditors index 獲取指定行的編輯器,每個編輯器有如下屬性:
actions:編輯器可以做的行為。
target:目標編輯器jQuery物件。
field:欄位名。
type:編輯器型別。
getEditor options 獲取特定的編輯器,options引數有2個屬性:
index:行索引。
field:欄位名。
refreshRow index 重新整理一行。
validateRow index 校驗指定的行,如果有效返回true。
updateRow param 更新指定的行,param引數包含如下屬性:
index:要更新的行索引。
row:新的行資料。
appendRow row 新增一行。
insertRow param 插入一個新行,param引數包含如下屬性:
index:要插入的行索引,如果沒有定義則在最後面新增一個新行。
row:行資料。
deleteRow index 刪除一行。
getChanges type 獲取從最後一次提交開始的被修改的所有行,type參數列明修改的型別,可選值:inserted,deleted,updated等 。當沒有傳遞type引數時,返回所有被修改的行。
acceptChanges none 提交所有修改的資料,提交後的資料將不能再修改或者回滾。
rejectChanges none 回滾所有被刪除的行。
mergeCells options 合併單元格,options引數包含如下屬性:
index:行索引。
field:欄位名。
rowspan:整合單元格要跨的行數。
colspan:整合單元格要跨的列數。
showColumn field 顯示特定的列。
hideColumn field 隱藏特定的列。

 

相關文章