EasyUI Datagrid 數據網格

網絡示例一:

擴展自 $.fn.panel.defaults。通過 $.fn.datagrid.defaults 重寫默認的 defaults。

數據網格(datagrid)以表格格式顯示數據,併爲選擇、排序、分組和編輯數據提供了豐富的支持。數據網格(datagrid)的設計目的是爲了減少開發時間,且不要求開發人員具備指定的知識。它是輕量級的,但是功能豐富。它的特性包括單元格合併,多列頁眉,凍結列和頁腳,等等。

依賴

  • panel
  • resizable
  • linkbutton
  • pagination

用法

從已有的表格元素創建數據網格(datagrid),在 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)。嵌套的 <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'); // reload the current page data

數據網格(DataGrid)屬性

該屬性擴展自面板(panel),下面是爲數據網格(datagrid)添加的屬性。

名稱 類型 描述 默認值
columns array 數據網格(datagrid)的列(column)的配置對象,更多細節請參見列(column)屬性。 undefined
frozenColumns array 和列(column)屬性一樣,但是這些列將被凍結在左邊。 undefined
fitColumns boolean 設置爲 true,則會自動擴大或縮小列的尺寸以適應網格的寬度並且防止水平滾動。 false
resizeHandle string 調整列的位置,可用的值有:'left'、'right'、'both'。當設置爲 'right' 時,用戶可通過拖拽列頭部的右邊緣來調整列。
該屬性自版本 1.3.2 起可用。
right
autoRowHeight boolean 定義是否設置基於該行內容的行高度。設置爲 false,則可以提高加載性能。 true
toolbar array,selector 數據網格(datagrid)面板的頭部工具欄。可能的值:
1、數組,每個工具選項與鏈接按鈕(linkbutton)一樣。
2、選擇器,只是工具欄。

在 <div> 標籤內定義工具欄:
  1. $('#dg').datagrid({
  2. toolbar: '#tb'
  3. });
  4. <div id="tb">
  5. <a href="#" class="easyui-linkbutton" data-options="iconCls:'icon-edit',plain:true"></a>
  6. <a href="#" class="easyui-linkbutton" data-options="iconCls:'icon-help',plain:true"></a>
  7. </div>
通過數組定義工具欄:
  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
striped boolean 設置爲 true,則把行條紋化。(即奇偶行使用不同背景色) false
method string 請求遠程數據的方法(method)類型。 post
nowrap boolean 設置爲 true,則把數據顯示在一行裏。設置爲 true 可提高加載性能。 true
idField string 指示哪個字段是標識字段。 null
url string 從遠程站點請求數據的 URL。 null
data array,object 要加載的數據。該屬性自版本 1.3.2 起可用。
代碼實例:
  1. $('#dg').datagrid({
  2. data: [
  3. {f1:'value11', f2:'value12'},
  4. {f1:'value21', f2:'value22'}
  5. ]
  6. });
null
loadMsg string 當從遠程站點加載數據時,顯示的提示消息。 Processing, please wait …
pagination boolean 設置爲 true,則在數據網格(datagrid)底部顯示分頁工具欄。 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 當設置了 pagination 屬性時,初始化頁碼。 1
pageSize number 當設置了 pagination 屬性時,初始化頁面尺寸。 10
pageList array 當設置了 pagination 屬性時,初始化頁面尺寸的選擇列表。 [10,20,30,40,50]
queryParams object 當請求遠程數據時,發送的額外參數。
代碼實例:
  1. $('#dg').datagrid({
  2. queryParams: {
  3. name: 'easyui',
  4. subject: 'datagrid'
  5. }
  6. });
{}
sortName string 定義可以排序的列。 null
sortOrder string 定義列的排序順序,只能用 'asc' 或 'desc'。 asc
multiSort boolean 定義是否啓用多列排序。該屬性自版本 1.3.4 起可用。 false
remoteSort boolean 定義是否從服務器排序數據。 true
showHeader boolean 定義是否顯示行的頭部。 true
showFooter boolean 定義是否顯示行的底部。 false
scrollbarSize number 滾動條寬度(當滾動條是垂直的時候)或者滾動條的高度(當滾動條是水平的時候)。 18
rowStyler function 返回例如 '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;'; // return inline style
  5. // the function can return predefined css class and inline style
  6. // return {class:'r1', style:{'color:#fff'}};
  7. }
  8. }
  9. });
 
loader function 定義如何從遠程服務器加載數據。返回 false 則取消該動作。該函數有下列參數:
param:要傳遞到遠程服務器的參數對象。
success(data):當檢索數據成功時調用的回調函數。
error():當檢索數據失敗時調用的回調函數。
json loader
loadFilter function 返回要顯示的過濾數據。該函數有一個參數 'data' ,表示原始數據。您可以把原始數據變成標準數據格式。該函數必須返回標準數據對象,含有 'total' 和 'rows' 屬性。
代碼實例:
  1. // removing 'd' object from asp.net web service json output
  2. $('#dg').datagrid({
  3. loadFilter: function(data){
  4. if (data.d){
  5. return data.d;
  6. } else {
  7. return data;
  8. }
  9. }
  10. });
 
editors object 定義編輯行時的編輯器。 predefined editors
view object 定義數據網格(datagrid)的視圖。 default view

列(Column)屬性

數據網格(DataGrid) 的列(Column)是一個數組對象,它的每個元素也是一個數組。元素數組的元素是一個配置對象,它定義了每個列的字段。

代碼實例:

  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
halign string 指示如何對齊該列的頭部,可能的值:'left'、'right'、'center'。如果沒有分配值,則頭部對齊方式將與通過 'align' 屬性定義的數據對齊方式一致。該屬性自版本 1.3.2 起可用。 undefined
sortable boolean 設置爲 true,則允許該列被排序。 undefined
order string 默認的排序順序,只能用 'asc' 或 'desc'。該屬性自版本 1.3.2 起可用。 undefined
resizable boolean 設置爲 true,則允許該列可調整尺寸。 undefined
fixed boolean 設置爲 true,則當 'fitColumns' 設置爲 true 時放置調整寬度。 undefined
hidden boolean 設置爲 true,則隱藏該列。 undefined
checkbox boolean 設置爲 true,則顯示覆選框。複選框有固定寬度。 undefined
formatter function 單元格的格式化函數,需要三個參數:
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
styler function 單元格的樣式函數,返回樣式字符串來自定義該單元格的樣式,例如 '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. // the function can return predefined css class and inline style
  8. // return {class:'c1',style:'color:red'}
  9. }
  10. }
  11. }
  12. ]]
  13. });
undefined
sorter function 用於本地排序的自定義字段的排序函數,需要兩個參數:
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
editor string,object 指示編輯類型。當是字符串(string)時則指編輯類型,當是對象(object)時則包含兩個屬性:
type:字符串,編輯類型,可能的類型:text、textarea、checkbox、numberbox、validatebox、datebox、combobox、combotree。
options:對象,編輯類型對應的編輯器選項。
undefined

編輯器(Editor)

通過 $.fn.datagrid.defaults.editors 重寫默認的 defaults。

每個編輯器有下列行爲:

名稱 參數 描述
init container, options 初始化編輯器並且返回目標對象。
destroy target 如果必要就銷燬編輯器。
getValue target 從編輯器的文本獲取值。
setValue target , value 給編輯器設置值。
resize target , width 如果必要就調整編輯器的尺寸。

例如,文本編輯器(text 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. 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)

通過 $.fn.datagrid.defaults.view 重寫默認的 defaults。

視圖(view)是一個對象,它告訴數據網格(datagrid)如何呈現行。該對象必須定義下列函數:

名稱 參數 描述
render target, container, frozen 當數據加載時調用。
target:DOM 對象,數據網格(datagrid)對象。
container:行的容器。
frozen:指示是否呈現凍結容器。
renderFooter target, container, frozen 這是呈現行腳的選項函數。
renderRow target, fields, frozen, rowIndex, rowData 這是將會被 render 函數調用的選項函數。
refreshRow target, rowIndex 定義如何刷新指定的行。
onBeforeRender target, rows 視圖被呈現前觸發。
onAfterRender target 視圖被呈現後觸發。

事件

該事件擴展自面板(panel),下面是爲數據網格(datagrid)添加的事件。

名稱 參數 描述
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 當用戶雙擊一個單元格時觸發。
代碼實例:
  1. // when double click a cell, begin editing and make the editor get focus
  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. });
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 當數據網格(datagrid)的頭部被右鍵單擊時觸發。
onRowContextMenu e, rowIndex, rowData 當右鍵點擊行時觸發。

方法

名稱 參數 描述
options none 返回選項(options)對象。
getPager none 返回分頁(pager)對象。
getPanel none 返回面板(panel)對象。
getColumnFields frozen 返回列的字段,如果 frozen 設置爲 true,則凍結列的字段被返回。
代碼實例:
  1. var opts = $('#dg').datagrid('getColumnFields'); // get unfrozen columns
  2. var opts = $('#dg').datagrid('getColumnFields', true); // get frozen columns
getColumnOption field 返回指定列的選項。
resize param 調整尺寸和佈局。
load param 加載並顯示第一頁的行,如果指定 'param' 參數,它將替換 queryParams 屬性。通常情況下,通過傳遞一些從參數進行查詢,該方法被調用來從服務器加載新數據。
  1. $('#dg').datagrid('load',{
  2. code: '01',
  3. name: 'name01'
  4. });
reload param 重新加載行,就像 load 方法一樣,但是保持在當前頁。
reloadFooter footer 重新加載底部的行。代碼實例:
  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. ]);
loading none 顯示正在加載狀態。
loaded none 隱藏正在加載狀態。
fitColumns none 使列自動展開/摺疊以適應數據網格(datagrid)的寬度。
fixColumnSize field 固定列的尺寸。如果 'field' 參數未設置,所有的列的尺寸將是固定的。
代碼實例:
  1. $('#dg').datagrid('fixColumnSize', 'name'); // fix the 'name' column size
  2. $('#dg').datagrid('fixColumnSize'); // fix all columns size
fixRowHeight index 固定指定行的高度。如果 'index' 參數未設置,所有的行的高度將是固定的。
freezeRow index 凍結指定的行,以便數據網格(datagrid)向下滾動時這些凍結行總是被顯示在頂部。該方法自版本 1.3.2 起可用。
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 清除所有的選擇。
clearChecked none 清除所有勾選的行。該方法自版本 1.3.2 起可用。
scrollTo index 滾動到指定行。該方法自版本 1.3.3 起可用。
highlightRow index 高亮顯示一行。該方法自版本 1.3.3 起可用。
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:編輯器的類型,比如:'text'、'combobox'、'datebox',等等。
getEditor options 獲取指定的編輯器, options 參數包含兩個屬性:
index:行的索引。
field:字段名。

代碼實例:
  1. // get the datebox editor and change its value
  2. var ed = $('#dg').datagrid('getEditor', {index:1,field:'birthday'});
  3. $(ed.target).datebox('setValue', '5/4/2012');
refreshRow index 刷新一行。
validateRow index 驗證指定的行,有效時返回 true。
updateRow param 更新指定的行, param 參數包括下列屬性:
index:要更新的行的索引。
row:新的行數據。

代碼實例:
  1. $('#dg').datagrid('updateRow',{
  2. index: 2,
  3. row: {
  4. name: 'new name',
  5. note: 'new note message'
  6. }
  7. });
appendRow row 追加一個新行。新的行將被添加在最後的位置:
  1. $('#dg').datagrid('appendRow',{
  2. name: 'new name',
  3. age: 30,
  4. note: 'some messages'
  5. });
insertRow param 插入一個新行, param 參數包括下列屬性:
index:插入進去的行的索引,如果沒有定義,就追加該新行。
row:行的數據。

代碼實例:
  1. // insert a new row at second row position
  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. });
deleteRow index 刪除一行。
getChanges type 獲取最後一次提交以來更改的行,type 參數表示更改的行的類型,可能的值是:inserted、deleted、updated,等等。當 type 參數沒有分配時,返回所有改變的行。
acceptChanges none 提交自從被加載以來或最後一次調用 acceptChanges 以來所有更改的數據。
rejectChanges none 回滾自從創建以來或最後一次調用 acceptChanges 以來所有更改的數據。
mergeCells options 把一些單元格合併爲一個單元格,options 參數包括下列特性:
index:列的索引。
field:字段名。
rowspan:合併跨越的行數。
colspan:合併跨越的列數。
showColumn field 顯示指定的列。
hideColumn field 隱藏指定的列。










網絡示例二:

創建datagrid

在頁面上添加一個div或table標籤,然後用jquery獲取這個標籤,並初始化一個datagrid。代碼如下:

頁面上的div標籤:

<div id="magazineGrid">
</div>

js代碼:

$('#magazineGrid').datagrid({
    height: 340,
    url: 'url',
    method: 'POST',
    queryParams: { 'id': id },
    idField: '產品ID',
    striped: true,
    fitColumns: true,
    singleSelect: false,
    rownumbers: true,
    pagination: false,
    nowrap: false,
    pageSize: 10,
    pageList: [10, 20, 50, 100, 150, 200],
    showFooter: true,
    columns: [[
        { field: 'ck', checkbox: true },
        { field: '刊名', title: '刊名', width: 180, align: 'left' },
        { field: '類別', title: '類別', width: 150, align: 'left' },
        { field: '月份', title: '月份', width: 100, align: 'left' },
        { field: '期次', title: '期次', width: 100, align: 'left' },
        { field: '價格', title: '價格', width: 100, align: 'right' },
        { field: '訂閱數', title: '訂閱數', width: 100, align: 'right' },
        { field: '庫存數', title: '庫存數', width: 100, align: 'right' },
        { field: '郵寄方式', title: '郵寄方式', width: 80, align: 'left' },
        { field: '數量', title: '數量', width: 80, align: 'left',
            editor: {
                type: 'numberbox',
                options: {
                    min: 0,
                    precision: 0
                }
            }
        }
    ]],
    onBeforeLoad: function (param) {
    },
    onLoadSuccess: function (data) {
        
    },
    onLoadError: function () {
        
    },
    onClickCell: function (rowIndex, field, value) {
        
    }
});

 

ajax請求返回的數據格式

datagrid在創建完成後會根據url請求數據,這是通過ajax來完成的。服務器在完成請求處理後應返回帶有rows屬性的數據,如果用到分頁,還需要有total屬性:

var rst = new { total = iTotalCount, rows = entityList };

說到ajax請求,難免需要在請求的時候傳入一些查詢條件,我通常是在onBeforeLoad事件中添加查詢條件的:

onBeforeLoad: function (param) {
    var bId = $("#txtBId").val();
    var AllSearchKey = $("#txtAllSearchKey").val();
    param.bId = bId;
    param.AllSearchKey = AllSearchKey;
}

 

分頁處理

如果要啓用分頁,在datagrid配置中,首先要加入如下配置:

pagination: true,

這樣一來我們的datagrid底部就會出現一個分頁工具欄。

這個時侯,datagrid在請求數據的時候會自動的添加分頁的信息:

  • page:當前請求的頁碼
  • rows:每頁要顯示的行數

在服務器端獲取到這兩個參數值,然後通過獲取數據庫中的總數據行數來完成數據處理。

 

關於checkbox列

上面的js代碼創建的datagrid本身已經添加了checkbox列,就是第一列。checkbox列將會自適應寬度。

{ field: 'ck', checkbox: true },

 

關於rownumber列

rownumber列的配置是在全局設置的,如果設置爲true則會添加一列來顯示行號。

rownumbers: true

 

行編輯功能的實現

datagrid本身提供了行編輯的功能。只需要兩個步驟:

  1. 設置列的editor屬性
  2. 手動觸發編輯

第一步,我們需要在column配置中指明editor,editor有兩個屬性,type和options,有效的type字符串有:

text,textarea,checkbox,numberbox,validatebox,datebox,combobox,combotree

options則對應這些控件的具體配置,包括事件等。

editor: {
    type: 'numberbox',
    options: {
        min: 0,
        precision: 0
    }
}

如果不需要特殊的options配置,直接將type字符串賦給editor即可。

editor:'text'

第二步,我們需要監聽datagrid的onRowClick事件,或者onCellClick事件,我更願意監聽onCellClick事件,可以根據點擊不同的字段來進入編輯模式,並設置單元格編輯控件的focus。

onClickCell: function (rowIndex, field, value) {
    beginEditing(rowIndex, field, value)
}

這裏調用了beginEditing方法:

var editIndex = undefined;
var beginEditing = function (rowIndex, field, value) {
    if (field != "數量")
        return;

    if (rowIndex != editIndex) {
        if (endEditing()) {
            $('#magazineGrid').datagrid('beginEdit', rowIndex);
            editIndex = rowIndex;

            var ed = $('#magazineGrid').datagrid('getEditor', { index: rowIndex, field: '數量' });
            $(ed.target).focus().bind('blur', function () {
                endEditing();
            });
        } else {
            $('#magazineGrid').datagrid('selectRow', editIndex);
        }
    }
}
var endEditing = function () {
    if (editIndex == undefined) { return true }
    if ($('#magazineGrid').datagrid('validateRow', editIndex)) {
        var ed = $('#magazineGrid').datagrid('getEditor', { index: editIndex, field: '數量' });
        var number = $(ed.target).numberbox('getValue');
        $('#magazineGrid').datagrid('getRows')[editIndex]['數量'] = number;
        $('#magazineGrid').datagrid('endEdit', editIndex);
        $('#magazineGrid').datagrid('selectRow', editIndex);
        editIndex = undefined;
        return true;
    } else {
        return false;
    }
}

 

列格式化輸出 formatter

在列的配種中設置formatter

formatter: function (value, row, index) {
    if (row.user) {
        return row.user.name;
    } else {
        return value;
    }
}

 

使用工具欄

toolbar: [{
    text: 'Add',
    iconCls: 'icon-add',
    handler: function () { alert('add') }
}, {
    text: 'Cut',
    iconCls: 'icon-cut',
    handler: function () { alert('cut') }
}, '-', {
    text: 'Save',
    iconCls: 'icon-save',
    handler: function () { alert('save') }
}],

 

使用CardView效果

cardView效果是這樣的:

image

cardView的代碼:

var cardview = $.extend({}, $.fn.datagrid.defaults.view, {
    renderRow: function (target, fields, frozen, rowIndex, rowData) {
        var cc = [];
        cc.push('<td colspan=' + fields.length + ' style="padding:10px 5px;border:0;">');
        if (!frozen) {
            var aa = rowData.itemid.split('-');
            var img = 'shirt' + aa[1] + '.gif';
            cc.push('<img src="images/' + img + '" style="width:150px;float:left">');
            cc.push('<div style="float:left;margin-left:20px;">');
            for (var i = 0; i < fields.length; i++) {
                var copts = $(target).datagrid('getColumnOption', fields[i]);
                cc.push('<p><span class="c-label">' + copts.title + ':</span> ' + rowData[fields[i]] + '</p>');
            }
            cc.push('</div>');
        }
        cc.push('</td>');
        return cc.join('');
    }
});
$(function () {
    $('#tt').datagrid({
        view: cardview
    });
});

cardView其實是使用了datagrid的view配置,重寫了其默認的renderRow方法。基於這種實現,我們可以顯示更多樣式的view。











網絡示例三:

Datagride的初始化方式

方式1 :class類型創建,這個創建方式比較簡單,如果在已知表格內容的情況下可以使用,還是挺漂亮的

[html] view plain copy
 print?
  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>    

方式2:通過JavaScript方式創建,這種方式優勢在於與後臺的交互比較方便

1:生明一個Table

[html] view plain copy
 print?
  1. <table id="dg">  
  2. </table>  

2:在Js中實現

[javascript] view plain copy
 print?
  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. });   
上邊的只是參考幫助文檔的創建方式,下面將結合前後臺對具體的內容進行實現

項目的後臺使用的是SpringMvc,數據庫是Mybaits

加載Url與Colum

1:前臺JS

[html] view plain copy
 print?
  1. datagrid=$("#dg").datagrid({  
  2.             url:"/Test3/ModuleBeanController/getAll.do",//加載的URL  
  3.                 isField:"id",  
  4.             pagination:true,//顯示分頁  
  5.             pageSize:5,//分頁大小  
  6.             pageList:[5,10,15,20],//每頁的個數  
  7.             fit:true,//自動補全  
  8.             fitColumns:true,  
  9.             iconCls:"icon-save",//圖標  
  10.             title:"用戶管理",  
  11.             columns:[[      //每個列具體內容  
  12.                       {  
  13.                           field:'id',  
  14.                           title:'id',  
  15.                           width:100,  
  16.                      },     
  17.                       {field:'pid',title:'pid',width:100},     
  18.                       {field:'text',title:'text',width:100}     
  19.                   ]]  
  20. })  

2:後臺的controller層

getAll.do

[java] view plain copy
 print?
  1. @RequestMapping(value="/getAll")  
  2. @ResponseBody  
  3. public List<ModuleBean> getAll(String page,String rows,String text) {  
  4.   
  5.     return moduleBeanService.getAll(page,rows,text);  
  6. }  

介紹一下幾個參數

page:頁數

rows:每頁行數

Text:在以後的通過用戶名查詢時使用

3:service 層

getall()

[java] view plain copy
 print?
  1. @Override  
  2. public List<ModuleBean> getAll(String page,String rows,String text) {  
  3.     // TODO Auto-generated method stub  
  4.     page = (page==null?"1":page);  
  5.     rows = (rows==null?"5":rows);  
  6.     return modulebeanmapper.getAll(PageUtil.getRowNum(Integer.parseInt(page), Integer.parseInt(rows),text));  
  7. }  

pageUtil相關代碼

[java] view plain copy
 print?
  1. package com.sc.util;  
  2.   
  3. import java.util.HashMap;  
  4. import java.util.Map;  
  5.   
  6. public class PageUtil {  
  7.   
  8.     public static Map<String,Object> getRowNum(int curPage,int pageSize,String text)  
  9.     {  
  10.         Map<String,Object> map=new HashMap<String,Object>();  
  11.         map.put("curRow", (curPage-1)*pageSize);  
  12.         map.put("pageSize", pageSize);  
  13.         if(text!=null)  
  14.         {  
  15.         map.put("text""%"+text+"%");  
  16.         }  
  17.         else  
  18.         {  
  19.             map.put("text""%%");  
  20.         }  
  21.           
  22.               
  23.         return map;  
  24.     }  
  25. }  


4:mapper層

getall()

[html] view plain copy
 print?
  1. <select id="getAll" resultMap="BaseResultMap" parameterType="map">  
  2.  select * from tbl_sys_module  
  3.  <if test="#{text} != '%%'">  
  4.     where TEXT like #{text,jdbcType=VARCHAR}  
  5. </if>  
  6. limit #{curRow},#{pageSize}   
  7.   
  8. </select>  

就是一個查詢語句select * from 表 where Text like #{text} limit rows,page

通過map返回

我的js的全部內容

[javascript] view plain copy
 print?
  1. var datagrid;  
  2. var rowEditor=undefined;  
  3. $(function(){  
  4.     datagrid=$("#dg").datagrid({  
  5.         url:"/Test3/ModuleBeanController/getAll.do",//加載的URL  
  6.         isField:"id",  
  7.         pagination:true,//顯示分頁  
  8.         pageSize:5,//分頁大小  
  9.         pageList:[5,10,15,20],//每頁的個數  
  10.         fit:true,//自動補全  
  11.         fitColumns:true,  
  12.         iconCls:"icon-save",//圖標  
  13.         title:"用戶管理",  
  14.         columns:[[      //每個列具體內容  
  15.                   {  
  16.                       field:'id',  
  17.                       title:'id',  
  18.                       width:100,  
  19.                       editor : {//是否可編輯  
  20.                             type : 'validatebox',  
  21.                             options : {//必須校驗  
  22.                                 required : true  
  23.                             }  
  24.                         }  
  25.                  },     
  26.                   {field:'pid',title:'pid',width:100,editor : {  
  27.                         type : 'validatebox',  
  28.                         options : {  
  29.                             required : true  
  30.                         }  
  31.                     }},     
  32.                   {field:'text',title:'text',width:100,editor : {  
  33.                         type : 'validatebox',  
  34.                         options : {  
  35.                             required : true  
  36.                         }  
  37.                     }}     
  38.               ]],  
  39.         toolbar:[              //工具條  
  40.                 {text:"增加",iconCls:"icon-add",handler:function(){//回調函數  
  41.                     if(rowEditor==undefined)  
  42.                     {  
  43.                         datagrid.datagrid('insertRow',{//如果處於未被點擊狀態,在第一行開啓編輯  
  44.                             index: 0,     
  45.                             row: {  
  46.                             }  
  47.                         });  
  48.                         rowEditor=0;  
  49.                         datagrid.datagrid('beginEdit',rowEditor);//沒有這行,即使開啓了也不編輯  
  50.                           
  51.                     }  
  52.                   
  53.   
  54.                 }},  
  55.                 {text:"刪除",iconCls:"icon-remove",handler:function(){  
  56.                     var rows=datagrid.datagrid('getSelections');  
  57.             
  58.                     if(rows.length<=0)  
  59.                     {  
  60.                         $.messager.alert('警告','您沒有選擇','error');  
  61.                     }  
  62.                     else if(rows.length>1)  
  63.                     {  
  64.                         $.messager.alert('警告','不支持批量刪除','error');  
  65.                     }  
  66.                     else  
  67.                     {  
  68.                         $.messager.confirm('確定','您確定要刪除嗎',function(t){  
  69.                             if(t)  
  70.                             {  
  71.                                   
  72.                                 $.ajax({  
  73.                                     url : '/Test3/ModuleBeanController/deletecustomer.do',  
  74.                                     data : rows[0],  
  75.                                     dataType : 'json',  
  76.                                     success : function(r) {  
  77.                                         if (r.success) {  
  78.                                             datagrid.datagrid('acceptChanges');  
  79.                                             $.messager.show({  
  80.                                                 msg : r.msg,  
  81.                                                 title : '成功'  
  82.                                             });  
  83.                                             editRow = undefined;  
  84.                                             datagrid.datagrid('reload');  
  85.                                         } else {  
  86.                                             /*datagrid.datagrid('rejectChanges');*/  
  87.                                             datagrid.datagrid('beginEdit', editRow);  
  88.                                             $.messager.alert('錯誤', r.msg, 'error');  
  89.                                         }  
  90.                                         datagrid.datagrid('unselectAll');  
  91.                                     }  
  92.                                 });  
  93.                               
  94.                             }  
  95.                         })  
  96.                     }  
  97.                       
  98.                       
  99.                 }},  
  100.                 {text:"修改",iconCls:"icon-edit",handler:function(){  
  101.                     var rows=datagrid.datagrid('getSelections');  
  102.                     if(rows.length==1)  
  103.                     {  
  104.                         if(rowEditor==undefined)  
  105.                         {  
  106.                             var index=datagrid.datagrid('getRowIndex',rows[0]);  
  107.                              rowEditor=index;  
  108.                             datagrid.datagrid('unselectAll');  
  109.                             datagrid.datagrid('beginEdit',index);  
  110.                               
  111.                         }  
  112.                     }  
  113.                 }},  
  114.                 {text:"查詢",iconCls:"icon-search",handler:function(){}},  
  115.                 {text:"保存",iconCls:"icon-save",handler:function(){  
  116.                       
  117.                     datagrid.datagrid('endEdit',rowEditor);  
  118.                     rowEditor=undefined;  
  119.                 }},  
  120.                 {text:"取消編輯",iconCls:"icon-redo",handler:function(){  
  121.                     rowEditor=undefined;  
  122.                     datagrid.datagrid('rejectChanges')  
  123.                 }}  
  124.                 ],  
  125.         onAfterEdit:function(rowIndex, rowData, changes){  
  126.             var inserted = datagrid.datagrid('getChanges''inserted');  
  127.             var updated = datagrid.datagrid('getChanges''updated');  
  128.             if (inserted.length < 1 && updated.length < 1) {  
  129.                 editRow = undefined;  
  130.                 datagrid.datagrid('unselectAll');  
  131.                 return;  
  132.             }  
  133.   
  134.             var url = '';  
  135.             if (inserted.length > 0) {  
  136.                 url = '/Test3/ModuleBeanController/addcustomer.do';  
  137.             }  
  138.             if (updated.length > 0) {  
  139.                 url = '/Test3/ModuleBeanController/addcustomer.do';  
  140.             }  
  141.   
  142.             $.ajax({  
  143.                 url : url,  
  144.                 data : rowData,  
  145.                 dataType : 'json',  
  146.                 success : function(r) {  
  147.                     if (r.success) {  
  148.                         datagrid.datagrid('acceptChanges');  
  149.                         $.messager.show({  
  150.                             msg : r.msg,  
  151.                             title : '成功'  
  152.                         });  
  153.                         editRow = undefined;  
  154.                         datagrid.datagrid('reload');  
  155.                     } else {  
  156.                         /*datagrid.datagrid('rejectChanges');*/  
  157.                         datagrid.datagrid('beginEdit', editRow);  
  158.                         $.messager.alert('錯誤', r.msg, 'error');  
  159.                     }  
  160.                     datagrid.datagrid('unselectAll');  
  161.                 }  
  162.             });  
  163.               
  164.         },  
  165.         onDblClickCell:function(rowIndex, field, value){  
  166.             if(rowEditor==undefined)  
  167.             {  
  168.                 datagrid.datagrid('beginEdit',rowIndex);  
  169.                 rowEditor=rowIndex;  
  170.             }  
  171.               
  172.         }  
  173.     });  
  174.     $("#search").click(function(){  
  175.         datagrid.datagrid('load',{  
  176.             text:$("#text").val()  
  177.         });  
  178.   
  179.     });  
  180.       
  181. })  

2:controller層全部

[java] view plain copy
 print?
  1. package com.sc.controller;  
  2.   
  3. import java.util.HashMap;  
  4. import java.util.List;  
  5. import java.util.Map;  
  6.   
  7. import javax.servlet.http.HttpServletRequest;  
  8.   
  9. import org.springframework.beans.factory.annotation.Autowired;  
  10. import org.springframework.stereotype.Controller;  
  11. import org.springframework.web.bind.annotation.PathVariable;  
  12. import org.springframework.web.bind.annotation.RequestMapping;  
  13. import org.springframework.web.bind.annotation.ResponseBody;  
  14.   
  15. import com.sc.myservice.ModuleBeanService;  
  16. import com.sc.po.Menu;  
  17. import com.sc.po.ModuleBean;  
  18.   
  19. @Controller  
  20. @RequestMapping("ModuleBeanController")  
  21. public class ModuleBeanController {  
  22. private ModuleBeanService moduleBeanService;  
  23.       
  24.   
  25.     public ModuleBeanService getModuleBeanService() {  
  26.         return moduleBeanService;  
  27.     }  
  28.   
  29.     @Autowired  
  30.     public void setModuleBeanService(ModuleBeanService moduleBeanService) {  
  31.         this.moduleBeanService = moduleBeanService;  
  32.     }  
  33.     @RequestMapping(value="/{id}/showModuleBean" ,params="json")  
  34.     @ResponseBody  
  35.     public ModuleBean showModuleBean(@PathVariable String id) {  
  36.         Integer key=Integer.parseInt(id);  
  37.         ModuleBean moduleBean=moduleBeanService.searchByPrimaryKey(key);  
  38.         return moduleBean;  
  39.     }  
  40.       
  41.     @RequestMapping(value="/getAll")  
  42.     @ResponseBody  
  43.     public List<ModuleBean> getAll(String page,String rows,String text) {  
  44.       
  45.         return moduleBeanService.getAll(page,rows,text);  
  46.     }  
  47.       
  48.     @RequestMapping(value="/getMenu")  
  49.     @ResponseBody  
  50.     public List<Menu> getMenu(String id) {  
  51.         if(id==null)  
  52.             return moduleBeanService.searchByPrimaryPid(-1);  
  53.         else  
  54.           return moduleBeanService.searchByPrimaryPid(Integer.parseInt(id));  
  55.     }  
  56.     @RequestMapping("/addcustomer")  
  57.     @ResponseBody  
  58.     public Map<String,Object> addCustomer(ModuleBean moduleBean) {  
  59.           
  60.         Map<String,Object> map = new HashMap<String,Object>();  
  61.         int result = moduleBeanService.save(moduleBean);  
  62.         map.put("success", result);  
  63.         return map;  
  64.     }  
  65.     @RequestMapping("/upadatacustomer")  
  66.     @ResponseBody  
  67.     public Map<String,Object> upadataCustomer(ModuleBean moduleBean) {  
  68.           
  69.         Map<String,Object> map = new HashMap<String,Object>();  
  70.         int result = moduleBeanService.updateByPrimaryKey(moduleBean);  
  71.         map.put("success", result);  
  72.         return map;  
  73.     }  
  74.     @RequestMapping("/deletecustomer")  
  75.     @ResponseBody  
  76.     public Map<String,Object> deleteCustomer(String ids) {  
  77.           
  78.         Map<String,Object> map = new HashMap<String,Object>();  
  79.         int result = moduleBeanService.deleteByPrimaryKey(Integer.parseInt(ids));  
  80.           
  81.         map.put("success", result);  
  82.           
  83.         return map;  
  84.     }  
  85.       
  86.   
  87.   
  88. }  

service層實現

[java] view plain copy
 print?
  1. package com.sc.myservice.impl;  
  2.   
  3. import java.util.ArrayList;  
  4. import java.util.List;  
  5.   
  6. import org.springframework.beans.BeanUtils;  
  7. import org.springframework.beans.factory.annotation.Autowired;  
  8. import org.springframework.stereotype.Service;  
  9.   
  10. import com.sc.dao.ModuleBeanMapper;  
  11. import com.sc.myservice.ModuleBeanService;  
  12. import com.sc.po.Menu;  
  13. import com.sc.po.ModuleBean;  
  14. import com.sc.util.PageUtil;  
  15. @Service("moduleBeanService")  
  16. public class ModuleBeanServiceImpl implements ModuleBeanService {  
  17.     private ModuleBeanMapper modulebeanmapper;  
  18.       
  19.   
  20.     public ModuleBeanMapper getModulebeanmapper() {  
  21.         return modulebeanmapper;  
  22.     }  
  23.   
  24.     @Autowired  
  25.     public void setModulebeanmapper(ModuleBeanMapper modulebeanmapper) {  
  26.         this.modulebeanmapper = modulebeanmapper;  
  27.     }  
  28.   
  29.     @Override  
  30.     public ModuleBean searchByPrimaryKey(int kay) {  
  31.          ModuleBean moduleBean=modulebeanmapper.selectByPrimaryKey(kay);  
  32.             // TODO Auto-generated method stub  
  33.             return  moduleBean;  
  34.     }  
  35.   
  36.     @Override  
  37.     public int save(ModuleBean moduleBean) {  
  38.         // TODO Auto-generated method stub  
  39.         return modulebeanmapper.insert(moduleBean);  
  40.     }  
  41.   
  42.     @Override  
  43.     public List<ModuleBean> getAll(String page,String rows,String text) {  
  44.         // TODO Auto-generated method stub  
  45.         page = (page==null?"1":page);  
  46.         rows = (rows==null?"5":rows);  
  47.         return modulebeanmapper.getAll(PageUtil.getRowNum(Integer.parseInt(page), Integer.parseInt(rows),text));  
  48.     }  
  49.   
  50.     @Override  
  51.     public int updateByPrimaryKey(ModuleBean record) {  
  52.         // TODO Auto-generated method stub  
  53.         return modulebeanmapper.updateByPrimaryKey(record);  
  54.     }  
  55.   
  56.     @Override  
  57.     public int deleteByPrimaryKey(Integer id) {  
  58.         // TODO Auto-generated method stub  
  59.         return modulebeanmapper.deleteByPrimaryKey(id);  
  60.     }  
  61.   
  62.     @Override  
  63.     public List<Menu> searchByPrimaryPid(int pid) {  
  64.         // TODO Auto-generated method stub  
  65.         List<Menu> menulist=new ArrayList<Menu>();  
  66.         List<ModuleBean> beanlist=modulebeanmapper.selectByPrimaryPid(pid);  
  67.         if(beanlist!=null)  
  68.         {  
  69.             Menu menu=new Menu();  
  70.             for(ModuleBean b:beanlist)  
  71.             {  
  72.                 BeanUtils.copyProperties(b, menu);  
  73.                 if(b.getState()==1)  
  74.                 {  
  75.                     menu.setState("closed");  
  76.                 }  
  77.                 menulist.add(menu);  
  78.             }  
  79.               
  80.         }  
  81.         return menulist;  
  82.     }  
  83.   
  84.       
  85.       
  86.   
  87. }  

mapper層

[html] view plain copy
 print?
  1. <?xml version="1.0" encoding="UTF-8" ?>  
  2. <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >  
  3. <mapper namespace="com.sc.dao.ModuleBeanMapper" >  
  4.   <resultMap id="BaseResultMap" type="com.sc.po.ModuleBean" >  
  5.     <id column="ID" property="id" jdbcType="INTEGER" />  
  6.     <result column="PID" property="pid" jdbcType="INTEGER" />  
  7.     <result column="TEXT" property="text" jdbcType="VARCHAR" />  
  8.     <result column="ICONCLS" property="iconcls" jdbcType="VARCHAR" />  
  9.     <result column="SRC" property="src" jdbcType="VARCHAR" />  
  10.     <result column="SEQ" property="seq" jdbcType="INTEGER" />  
  11.     <result column="IS_MENU" property="isMenu" jdbcType="INTEGER" />  
  12.     <result column="STATE" property="state" jdbcType="INTEGER" />  
  13.   </resultMap>  
  14.   <sql id="Base_Column_List" >  
  15.     ID, PID, TEXT, ICONCLS, SRC, SEQ, IS_MENU, STATE  
  16.   </sql>  
  17.   <select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.Integer" >  
  18.     select   
  19.     <include refid="Base_Column_List" />  
  20.     from tbl_sys_module  
  21.     where ID = #{id,jdbcType=INTEGER}  
  22.   </select>  
  23.    <select id="selectByPrimaryPid" resultMap="BaseResultMap" parameterType="java.lang.Integer" >  
  24.     select * from tbl_sys_module  
  25.     where PID = #{pid,jdbcType=INTEGER}  
  26.   </select>  
  27.   <delete id="deleteByPrimaryKey" parameterType="java.lang.Integer" >  
  28.     delete from tbl_sys_module  
  29.     where ID = #{id,jdbcType=INTEGER}  
  30.   </delete>  
  31.   <insert id="insert" parameterType="com.sc.po.ModuleBean" >  
  32.     insert into tbl_sys_module (ID, PID, TEXT,   
  33.       ICONCLS, SRC, SEQ,   
  34.       IS_MENU, STATE)  
  35.     values (#{id,jdbcType=INTEGER}, #{pid,jdbcType=INTEGER}, #{text,jdbcType=VARCHAR},   
  36.       #{iconcls,jdbcType=VARCHAR}, #{src,jdbcType=VARCHAR}, #{seq,jdbcType=INTEGER},   
  37.       #{isMenu,jdbcType=INTEGER}, #{state,jdbcType=INTEGER})  
  38.   </insert>  
  39.   <insert id="insertSelective" parameterType="com.sc.po.ModuleBean" >  
  40.     insert into tbl_sys_module  
  41.     <trim prefix="(" suffix=")" suffixOverrides="," >  
  42.       <if test="id != null" >  
  43.         ID,  
  44.       </if>  
  45.       <if test="pid != null" >  
  46.         PID,  
  47.       </if>  
  48.       <if test="text != null" >  
  49.         TEXT,  
  50.       </if>  
  51.       <if test="iconcls != null" >  
  52.         ICONCLS,  
  53.       </if>  
  54.       <if test="src != null" >  
  55.         SRC,  
  56.       </if>  
  57.       <if test="seq != null" >  
  58.         SEQ,  
  59.       </if>  
  60.       <if test="isMenu != null" >  
  61.         IS_MENU,  
  62.       </if>  
  63.       <if test="state != null" >  
  64.         STATE,  
  65.       </if>  
  66.     </trim>  
  67.     <trim prefix="values (" suffix=")" suffixOverrides="," >  
  68.       <if test="id != null" >  
  69.         #{id,jdbcType=INTEGER},  
  70.       </if>  
  71.       <if test="pid != null" >  
  72.         #{pid,jdbcType=INTEGER},  
  73.       </if>  
  74.       <if test="text != null" >  
  75.         #{text,jdbcType=VARCHAR},  
  76.       </if>  
  77.       <if test="iconcls != null" >  
  78.         #{iconcls,jdbcType=VARCHAR},  
  79.       </if>  
  80.       <if test="src != null" >  
  81.         #{src,jdbcType=VARCHAR},  
  82.       </if>  
  83.       <if test="seq != null" >  
  84.         #{seq,jdbcType=INTEGER},  
  85.       </if>  
  86.       <if test="isMenu != null" >  
  87.         #{isMenu,jdbcType=INTEGER},  
  88.       </if>  
  89.       <if test="state != null" >  
  90.         #{state,jdbcType=INTEGER},  
  91.       </if>  
  92.     </trim>  
  93.   </insert>  
  94.   <update id="updateByPrimaryKeySelective" parameterType="com.sc.po.ModuleBean" >  
  95.     update tbl_sys_module  
  96.     <set >  
  97.       <if test="pid != null" >  
  98.         PID = #{pid,jdbcType=INTEGER},  
  99.       </if>  
  100.       <if test="text != null" >  
  101.         TEXT = #{text,jdbcType=VARCHAR},  
  102.       </if>  
  103.       <if test="iconcls != null" >  
  104.         ICONCLS = #{iconcls,jdbcType=VARCHAR},  
  105.       </if>  
  106.       <if test="src != null" >  
  107.         SRC = #{src,jdbcType=VARCHAR},  
  108.       </if>  
  109.       <if test="seq != null" >  
  110.         SEQ = #{seq,jdbcType=INTEGER},  
  111.       </if>  
  112.       <if test="isMenu != null" >  
  113.         IS_MENU = #{isMenu,jdbcType=INTEGER},  
  114.       </if>  
  115.       <if test="state != null" >  
  116.         STATE = #{state,jdbcType=INTEGER},  
  117.       </if>  
  118.     </set>  
  119.     where ID = #{id,jdbcType=INTEGER}  
  120.   </update>  
  121.   <update id="updateByPrimaryKey" parameterType="com.sc.po.ModuleBean" >  
  122.     update tbl_sys_module  
  123.     set PID = #{pid,jdbcType=INTEGER},  
  124.       TEXT = #{text,jdbcType=VARCHAR},  
  125.       ICONCLS = #{iconcls,jdbcType=VARCHAR},  
  126.       SRC = #{src,jdbcType=VARCHAR},  
  127.       SEQ = #{seq,jdbcType=INTEGER},  
  128.       IS_MENU = #{isMenu,jdbcType=INTEGER},  
  129.       STATE = #{state,jdbcType=INTEGER}  
  130.     where ID = #{id,jdbcType=INTEGER}  
  131.   </update>  
  132.   <select id="getAll" resultMap="BaseResultMap" parameterType="map">  
  133.      select * from tbl_sys_module  
  134.    <if test="#{text} != '%%'">  
  135.     where TEXT like #{text,jdbcType=VARCHAR}  
  136.   </if>  
  137.   limit #{curRow},#{pageSize}   
  138.    
  139.   </select>  
  140. </mapper>  


效果截圖







發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章