詳解jquery easyui之datagrid使用參考
本文介紹了jquery easyui之datagrid使用,具體如下:
創(chuàng)建datagrid
在頁(yè)面上添加一個(gè)div或table標(biāo)簽,然后用jquery獲取這個(gè)標(biāo)簽,并初始化一個(gè)datagrid。代碼如下:
頁(yè)面上的div標(biāo)簽:
<div id="magazineGrid"> </div>
js代碼:
$('#magazineGrid').datagrid({
height: 340,
url: 'url',
method: 'POST',
queryParams: { 'id': id },
idField: '產(chǎn)品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: '價(jià)格', title: '價(jià)格', width: 100, align: 'right' },
{ field: '訂閱數(shù)', title: '訂閱數(shù)', width: 100, align: 'right' },
{ field: '庫(kù)存數(shù)', title: '庫(kù)存數(shù)', width: 100, align: 'right' },
{ field: '郵寄方式', title: '郵寄方式', width: 80, align: 'left' },
{ field: '數(shù)量', title: '數(shù)量', 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請(qǐng)求返回的數(shù)據(jù)格式
datagrid在創(chuàng)建完成后會(huì)根據(jù)url請(qǐng)求數(shù)據(jù),這是通過(guò)ajax來(lái)完成的。服務(wù)器在完成請(qǐng)求處理后應(yīng)返回帶有rows屬性的數(shù)據(jù),如果用到分頁(yè),還需要有total屬性:
var rst = new { total = iTotalCount, rows = entityList };
說(shuō)到ajax請(qǐng)求,難免需要在請(qǐng)求的時(shí)候傳入一些查詢條件,我通常是在onBeforeLoad事件中添加查詢條件的:
onBeforeLoad: function (param) {
var bId = $("#txtBId").val();
var AllSearchKey = $("#txtAllSearchKey").val();
param.bId = bId;
param.AllSearchKey = AllSearchKey;
}
分頁(yè)處理
如果要啟用分頁(yè),在datagrid配置中,首先要加入如下配置:
pagination: true,
這樣一來(lái)我們的datagrid底部就會(huì)出現(xiàn)一個(gè)分頁(yè)工具欄。
這個(gè)時(shí)侯,datagrid在請(qǐng)求數(shù)據(jù)的時(shí)候會(huì)自動(dòng)的添加分頁(yè)的信息:
- page:當(dāng)前請(qǐng)求的頁(yè)碼
- rows:每頁(yè)要顯示的行數(shù)
在服務(wù)器端獲取到這兩個(gè)參數(shù)值,然后通過(guò)獲取數(shù)據(jù)庫(kù)中的總數(shù)據(jù)行數(shù)來(lái)完成數(shù)據(jù)處理。
關(guān)于checkbox列
上面的js代碼創(chuàng)建的datagrid本身已經(jīng)添加了checkbox列,就是第一列。checkbox列將會(huì)自適應(yīng)寬度。
{ field: 'ck', checkbox: true },
關(guān)于rownumber列
rownumber列的配置是在全局設(shè)置的,如果設(shè)置為true則會(huì)添加一列來(lái)顯示行號(hào)。
rownumbers: true
行編輯功能的實(shí)現(xiàn)
datagrid本身提供了行編輯的功能。只需要兩個(gè)步驟:
1.設(shè)置列的editor屬性
2.手動(dòng)觸發(fā)編輯
第一步,我們需要在column配置中指明editor,editor有兩個(gè)屬性,type和options,有效的type字符串有:
text,textarea,checkbox,numberbox,validatebox,datebox,combobox,combotree
options則對(duì)應(yīng)這些控件的具體配置,包括事件等。
editor: {
type: 'numberbox',
options: {
min: 0,
precision: 0
}
}
如果不需要特殊的options配置,直接將type字符串賦給editor即可。
editor:'text'
第二步,我們需要監(jiān)聽(tīng)datagrid的onRowClick事件,或者onCellClick事件,我更愿意監(jiān)聽(tīng)onCellClick事件,可以根據(jù)點(diǎn)擊不同的字段來(lái)進(jìn)入編輯模式,并設(shè)置單元格編輯控件的focus。
onClickCell: function (rowIndex, field, value) {
beginEditing(rowIndex, field, value)
}
這里調(diào)用了beginEditing方法:
var editIndex = undefined;
var beginEditing = function (rowIndex, field, value) {
if (field != "數(shù)量")
return;
if (rowIndex != editIndex) {
if (endEditing()) {
$('#magazineGrid').datagrid('beginEdit', rowIndex);
editIndex = rowIndex;
var ed = $('#magazineGrid').datagrid('getEditor', { index: rowIndex, field: '數(shù)量' });
$(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: '數(shù)量' });
var number = $(ed.target).numberbox('getValue');
$('#magazineGrid').datagrid('getRows')[editIndex]['數(shù)量'] = number;
$('#magazineGrid').datagrid('endEdit', editIndex);
$('#magazineGrid').datagrid('selectRow', editIndex);
editIndex = undefined;
return true;
} else {
return false;
}
}
列格式化輸出 formatter
在列的配種中設(shè)置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效果是這樣的:

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其實(shí)是使用了datagrid的view配置,重寫(xiě)了其默認(rèn)的renderRow方法?;谶@種實(shí)現(xiàn),我們可以顯示更多樣式的view。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
jQuery實(shí)現(xiàn)的Div窗口震動(dòng)特效
這篇文章主要介紹了jQuery實(shí)現(xiàn)的Div窗口震動(dòng)特效 ,需要的朋友可以參考下2014-06-06
jquery簡(jiǎn)單實(shí)現(xiàn)幻燈片的方法
這篇文章主要介紹了jquery簡(jiǎn)單實(shí)現(xiàn)幻燈片的方法,核心的js代碼只有9行即可實(shí)現(xiàn)幻燈切換效果,非常簡(jiǎn)單實(shí)用,需要的朋友可以參考下2015-08-08
jQuery.extend 函數(shù)的詳細(xì)用法
jQuery.extend 函數(shù)的詳細(xì)用法,學(xué)習(xí)jquery的朋友可以參考下2012-06-06
jquery分頁(yè)插件jpaginate在IE中不兼容問(wèn)題
這篇文章主要介紹了jquery分頁(yè)插件jpaginate不兼容ie的問(wèn)題,需要的朋友可以參考下2014-04-04
jQuery select自動(dòng)選中功能實(shí)現(xiàn)方法分析
這篇文章主要介紹了jQuery select自動(dòng)選中功能,結(jié)合實(shí)例形式分析了jQuery實(shí)現(xiàn)select響應(yīng)與級(jí)聯(lián)菜單顯示相關(guān)功能與操作技巧,需要的朋友可以參考下2016-11-11
jQuery實(shí)現(xiàn)背景彈性滾動(dòng)的導(dǎo)航效果
這篇文章主要介紹了jQuery實(shí)現(xiàn)背景彈性滾動(dòng)導(dǎo)航效果的方法,涉及jQuery動(dòng)態(tài)操作頁(yè)面元素樣式的相關(guān)技巧,需要的朋友可以參考下2016-06-06
jQuery 學(xué)習(xí)第六課 實(shí)現(xiàn)一個(gè)Ajax的TreeView
TreeView是asp.net自帶的控件,不過(guò)自帶的控件在靈活性上有諸多限制。在jQuery的幫助下,自己實(shí)現(xiàn)一個(gè)TreeView也不困難。本文是前幾篇文章所講內(nèi)容的一個(gè)綜合演練。2010-05-05
jquery獲取復(fù)選框checkbox的值實(shí)現(xiàn)方法
下面小編就為大家?guī)?lái)一篇jquery獲取復(fù)選框checkbox的值實(shí)現(xiàn)方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-05-05
jquery.mousewheel實(shí)現(xiàn)整屏翻屏效果
jQuery Mousewheel 用于添加跨瀏覽器的鼠標(biāo)滾輪支持。 mousewheel事件的處理函數(shù)有一點(diǎn)小小的變化,它除了第一個(gè)參數(shù)event 外,還接收到第二個(gè)參數(shù)delta。通過(guò)參數(shù)delta可以獲取鼠標(biāo)滾輪的方向和速度。2015-08-08

