本文介绍了jquery easyui之datagrid使用,具体如下:
创建datagrid
在页面上添加一个div或table标签,然后用jquery获取这个标签,并初始化一个datagrid。代码如下:
js代码:
},onLoadError: function () {
},onClickCell: function (rowIndex,field,value) {
}
});
ajax请求返回的数据格式
datagrid在创建完成后会根据url请求数据,这是通过ajax来完成的。服务器在完成请求处理后应返回带有rows属性的数据,如果用到分页,还需要有total属性:
说到ajax请求,难免需要在请求的时候传入一些查询条件,我通常是在onBeforeLoad事件中添加查询条件的:
分页处理
如果要启用分页,在datagrid配置中,首先要加入如下配置:
这个时侯,datagrid在请求数据的时候会自动的添加分页的信息:
在服务器端获取到这两个参数值,然后通过获取数据库中的总数据行数来完成数据处理。
关于checkBox列
上面的js代码创建的datagrid本身已经添加了checkBox列,就是第一列。checkBox列将会自适应宽度。
关于rownumber列
rownumber列的配置是在全局设置的,如果设置为true则会添加一列来显示行号。
行编辑功能的实现
datagrid本身提供了行编辑的功能。只需要两个步骤:
1.设置列的editor属性
2.手动触发编辑
第一步,我们需要在column配置中指明editor,editor有两个属性,type和options,有效的type字符串有:
text,textarea,checkBox,numberBox,validateBox,dateBox,comboBox,combotree
options则对应这些控件的具体配置,包括事件等。
如果不需要特殊的options配置,直接将type字符串赋给editor即可。
第二步,我们需要监听datagrid的onRowClick事件,或者onCellClick事件,我更愿意监听onCellClick事件,可以根据点击不同的字段来进入编辑模式,并设置单元格编辑控件的focus。
if (rowIndex != editIndex) {
if (endEditing()) {
$('#magazineGrid').datagrid('beginEdit',rowIndex);
editIndex = rowIndex;
var ed = $('#magazineGrid').datagrid('getEditor',{ index: rowIndex,field: '<a href="/tag/shuliang/" target="_blank" class="keywords">数量</a>' });
$(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
使用工具栏
使用CardView效果
cardView效果是这样的:
cardView的代码: