Easyui表格擴充套件子網格的使用、全程式碼
阿新 • • 發佈:2018-12-31
#關於easyui子網格的官方文件介紹:
easyui建立子網格
<div id="expressManageDialog" class="easyui-dialog" style="width:50%;height:100%;overflow:auto;" data-options="title:'快遞公司資訊管理',modal:true, closed:true,onClose:function() {}">
<table id="carriageGrid"></table>
</div>
//js
var editIndex=undefined;
$ (document).ready(function() {
loadExpressManageGrid();
loadDetailView();
}
function loadExpressManageGrid(){
carriageGrid = $('#carriageGrid').datagrid({
url : ctp + "/cloud/carriageManage/carriageNewInfo",
cache : false,
fit : true,
striped : true,//隔行變色
nowrap : false,
fitColumns : true,
checkOnSelect : true,
singleSelect:true,
pagination : true,
pageSize : 50,
pageList : [ 20, 50, 100 ],
loadMsg : '正在載入資料...',
showHeader : true,
method : 'get',
toolbar : [ {
iconCls : 'icon-add',
handler : function() {
addExpress();
},
text : "新增快遞公司"
},
'-',
{
iconCls : 'icon-edit',
handler : function() {
var rows = carriageGrid.datagrid('getChecked');
if (rows.length != 1) {
$.messager.alert('提示', '請選擇一條記錄進行修改', 'info');
return;
}
var index = carriageGrid.datagrid('getRowIndex', rows[0]);
editExpress(index);
},
text : "修改"
},
'-',
{
iconCls : 'icon-remove',
handler : function() {
var rows = carriageGrid.datagrid('getChecked');
if (rows.length < 1) {
$.messager.alert('提示', '請選擇一條記錄', 'info');
return;
}
var ids = [];
for (var i = 0; i < rows.length; i++) {
ids.push(rows[i].carrId);
}
removeExpress(ids.join());
},
text : "刪除"
}
],
columns : [ [
{
field : 'carrId',
title : '',
width : 0,
align : 'center',
checkbox : true
},
{
field : 'carrName',
title : '快遞公司',
width : '25%',
align : 'center'
},
{
field : 'carrDesc',
title : '快遞描述',
width : '25%',
align : 'left'
},
{
field : 'carrPrice',
title : '首重價格(CNY)',
width : '25%',
align : 'center'
},
{
field : 'carrPriceAdd',
title : '續重價格(CNY)',
width : '25%',
align : 'center'
}
] ],
onLoadSuccess : function() {
$(this).datagrid("fixRowHeight");
//$('#carriageGrid').datagrid('fixDetailRowHeight',index);
}
});
}
//載入子網格
function loadDetailView() {
$('#carriageGrid').datagrid({
view : detailview,
detailFormatter : function(index, row) {
return '<div><table class="expandRowTb"></table></div>';
},
onExpandRow : function(index, row) {
var ddv = $(this).datagrid('getRowDetail',index).find('table.expandRowTb');
ddv.datagrid({
url : ctp + "/cloud/carriageManage/carriageDetailViewInfo?expressId=" + row.carrId,
fitColumns : true,
singleSelect : true,
rownumbers : true,
loadMsg : '',
height : 'auto',
toolbar:[{
text:'儲存',
iconCls:'icon-save',
handler:function(){
endEditing(ddv);
//var expandRowTb = $('#carriageGrid').datagrid('getRowDetail',index).find('table.expandRowTb');
//alert(ddv);
var expandRowTbChanges = ddv.datagrid('getChanges');
//alert('expandRowTbChanges:'+expandRowTbChanges);
var params = {
expandRowTbChanges:expandRowTbChanges
};
$.ajax({
url : getCommonUrl('/cloud/carriageManage/saveExpandRowTbChanges'),
type : 'POST',
data : JSON.stringify(params),
contentType : "application/json; charset=utf-8",
dataType : 'json',
success : function(obj) {
$.messager.progress('close');
}
});
}
}],
columns : [ [
{
field : 'areaName',
title : '省份',
width : 100
},
{
field : 'firstPrice',
title : '首重價格(CNY)',
width : 100,
editor:{
type:'numberbox',
options:{
precision:2
},
required:true
}
},
{
field : 'addPrice',
title : '續重價格(CNY)',
width : 100,
editor:{
type:'numberbox',
options:{
precision:2
},
required:true
}
}
] ],
onResize : function() {
$('#carriageGrid').datagrid('fixDetailRowHeight', index);
},
onLoadSuccess : function() {
setTimeout(function() {
$('#carriageGrid').datagrid('fixDetailRowHeight', index);
}, 0);
editIndex = undefined;//主網格換行
},
onClickRow:function(index1,row1){
if (editIndex != index1){
if (endEditing(ddv)){
ddv.datagrid('selectRow', index1)
.datagrid('beginEdit', index1);
editIndex = index1;
} else {
ddv.datagrid('selectRow', editIndex);
}
}
}
});
$('#carriageGrid').datagrid('fixDetailRowHeight', index);
}
});
}
function endEditing(ddv){
var changes = ddv.datagrid('getChanges');
if (editIndex == undefined){return true}
if (ddv.datagrid('validateRow', editIndex)){//驗證前一行
//返回編輯器,結束編輯
ddv.datagrid('endEdit', editIndex);
editIndex = undefined;
return true;
} else {
return false;
}
}
以上程式碼經測試無bug,請根據具體需求修改使用