easyui datagrid 获取数据后,编辑,其实就相当于表格的修改界面
说下遇到的问题
1)表格中有几个combobox ,当其中一个combobox变化的时候,触发另外一个combobox变化
2)combobox的值只能初始化的时候,加载进来,因此当其中一个combobox变化的时候,触发另外一个combobox变化,第二个combobox的初始值,有问题,只能全部加载进来
3)当编辑的时候遇到第一个combobox的值不显示了,就是不编辑有数据,一旦编辑触发没有数据,很是郁闷,就是editorJbfl.target.combobox这个造成的,没办法通过
var comboboxJbfl = $('#demowells').datagrid('getEditor', {index:rowIndex,field:'jbdm'});
$(comboboxJbfl.target).combobox('setValue',rowData.jbdm);设置了值,
不知道为什么要使用$(comboboxJbfl.target),原因是通过console.log()是能看到下一步是target
4)这两个问题弄了一个下午
onBeginEdit : function(rowIndex, rowData){
var rowdata = $("#demowells").datagrid("getEditors",rowIndex);
var comboboxJbfl = $('#demowells').datagrid('getEditor', {index:rowIndex,field:'jbdm'});
var editorJbfl = rowdata[2];
var editorOther = rowdata[3];
var editorwell = rowdata[4];
editorJbfl.target.combobox({
onSelect:function(obj){
editorOther.target.textbox('setValue',obj.jbdm);
// editorwell.target.combobox('reload',"/wzdemo/findWellByJb/"+obj.jbdm);//use POST ,not use,这个是datagrid 没有写method:GET
getWellsByJb(obj.jbdm);
editorwell.target.combobox({
valueField:'wellId',
textField:'jm',
data:wells,
required:true
});
}
});
$(comboboxJbfl.target).combobox('setValue',rowData.jbdm);
}
全部代码
var jbfldms =[];
var wells = [];
function getJbfldms(){
$.ajax({
type:"GET",
url:"/wzdemo/findAllJbfl" ,
dataType:"json",
async:false,
success:function(data){
jbfldms = data;
}
});
}
function getAllWells(){
$.ajax({
type:"GET",
url:"/wzdemo/findAllWell" ,
dataType:"json",
async:false,
success:function(data){
wells = data;
}
});
}
function getWellsByJb(jbdm){
$.ajax({
type:"GET",
url:"/wzdemo/findWellByJb/"+jbdm ,
dataType:"json",
async:false,
success:function(data){
wells = data;
}
});
}
$(function(){
getAllWells();
getJbfldms();
$("#demowells").datagrid({
method:"GET",
url:"/wzdemo/demodatalist",
iconCls:'icon-edit',
width:660,
height:250,
singleSelect:true,
idField:'demoId',
columns:[[
{field:'demoId',title:'demoId',width:100,editor:'text'},
{field:'demoName',title:'demoName',width:100,editor:'text'},
{field:'jbdm',title:'demoJbName',width:100,
formatter:function(value){
for(var i=0; i<jbfldms.length; i++){
if (jbfldms[i].jbdm == value){
return jbfldms[i].jb;
}else{
}
}
return value;
},
editor:{
type:'combobox',
options:{
valueField:'jbdm',
textField:'jb',
data:jbfldms,
required:true
}
}
},
{field:'demoOther',title:'demoOther',width:100,align:'right',editor:'textbox'},
{field:'wellId',title:'wellName',width:100,
formatter:function(value){
for(var i=0; i<wells.length; i++){
if (wells[i].wellId == value) return wells[i].jm;
}
return value;
},
editor:{
type:'combobox',
options:{
type:'GET',
valueField:'wellId',
textField:'jm',
data:wells,
required:true
}
}
},
{field:'action',title:'Action',width:80,align:'center',
formatter:function(value,row,index){
// console.log(row);
// console.log(index);
if (row.editing){
var s = '<a href="#" οnclick="saverow(this)">Save</a> ';
var c = '<a href="#" οnclick="cancelrow(this)">Cancel</a>';
return s+c;
} else {
var e = '<a href="#" οnclick="editrow(this)">Edit</a> ';
var d = '<a href="#" οnclick="deleterow(this)">Delete</a>';
return e+d;
}
}
}
]],
loadFilter: function(data) {
console.log(data);
var rows = [];
if(data.rows!=null){
for(var i = 0; i < data.rows.length; i++) {
var demo = {};
demo.demoId=data.rows[i].demoId;
demo.demoName=data.rows[i].demoName;
demo.jbdm=data.rows[i].demoJb;
demo.demoOther=data.rows[i].demoOther;
demo.wellId=data.rows[i].demoWellid;
rows.push(demo);
}
return {total: data.total, rows: rows};
}else{
return {total: 0, rows: rows};
}
},
pagination:true,
onBeforeEdit:function(index,row){
row.editing = true;
updateActions(index);
},
onAfterEdit:function(index,row){
row.editing = false;
updateActions(index);
},
onCancelEdit:function(index,row){
row.editing = false;
updateActions(index);
},
onClickRow:function(rowIndex, rowData){
},
onClickCell:function(rowIndex, field, value){
},
onBeginEdit : function(rowIndex, rowData){
var rowdata = $("#demowells").datagrid("getEditors",rowIndex);
var comboboxJbfl = $('#demowells').datagrid('getEditor', {index:rowIndex,field:'jbdm'});
var editorJbfl = rowdata[2];
var editorOther = rowdata[3];
var editorwell = rowdata[4];
editorJbfl.target.combobox({
onSelect:function(obj){
editorOther.target.textbox('setValue',obj.jbdm);
// editorwell.target.combobox('reload',"/wzdemo/findWellByJb/"+obj.jbdm);//use POST ,not use
getWellsByJb(obj.jbdm);
editorwell.target.combobox({
valueField:'wellId',
textField:'jm',
data:wells,
required:true
});
}
});
$(comboboxJbfl.target).combobox('setValue',rowData.jbdm);
}
});
});
var editIndex = -1;
function endEditing(){
if (editIndex == -1){
return true;
}else{
return false;
}
if ($('#demowells').datagrid('validateRow', editIndex)){
editIndex = -1;
return true;
} else {
return false;
}
}
function getRowIndex(target){
var tr = $(target).closest('tr.datagrid-row');
return parseInt(tr.attr('datagrid-row-index'));
}
function editrow(target){
if(endEditing()){
$('#demowells').datagrid('beginEdit', getRowIndex(target));
// var rowIndex = getRowIndex(target);
// var pp = $('#demowells').datagrid('getEditors',rowIndex);
// console.log(pp);
}else{
showMessage("请先对已经存在的编辑行,保存");
}
}
function deleterow(target){
$.messager.confirm('Confirm','Are you sure?',function(r){
if (r){
$('#demowells').datagrid('deleteRow', getRowIndex(target));
editIndex = -1;
// $('#demowells').datagrid('deleteSelectedRow');
}
});
}
function saverow(target){
$('#demowells').datagrid('endEdit', getRowIndex(target));
editIndex = -1;
}
function cancelrow(target){
$('#demowells').datagrid('cancelEdit', getRowIndex(target));
editIndex = -1;
}
function updateActions(index){
$('#demowells').datagrid('updateRow',{
index: index,
row:{}
});
}
function insert(){
var flag = endEditing();
if(!endEditing())return;
var row = $('#demowells').datagrid('getSelected');
if (row){
var index = $('#demowells').datagrid('getRowIndex', row);
} else {
index = 0;
}
$('#demowells').datagrid('insertRow', {
index: index,
row:{
// status:'P'
}
});
$('#demowells').datagrid('selectRow',index);
$('#demowells').datagrid('beginEdit',index);
editIndex = index;
}
function saveall(){
if(editIndex!=-1){
alert("请对每一行进行保存");
return;
}
var rows = $("#demowells").datagrid("getRows");
var datas = [];
for(var i=0;i<rows.length;i++){
var data = {};
// data.demoId = rows[i].demoId;
data.demoName = rows[i].demoName;
data.demoJb = rows[i].demoJbid;
data.demoOther = rows[i].demoOther;
data.demoWellid = rows[i].wellId;
datas.push(data);
}
parent.$.messager.progress({
title : '提示',
text : '数据处理中,请稍后....'
});
$.post("/wzdemo/adddemodata/"+JSON.stringify(datas),function(result){
parent.$.messager.progress('close');
if(result.result=="success"){
showMessage("保存ok");
$.messager.show({
title:'操作提示',
msg:'操作成功,两秒钟后窗口自动关闭',
showType:'slide',
style:{
right:'',
bottom:''
}
});
window.setTimeout(function(){
window.parent.PIMS.Tool.closeTab("表格新增");
}, 2000);
}else{
showMessage("保存失败");
}
});
}
转个博客 http://blog.csdn.net/donggua3694857/article/details/51433882,下面是他的内容
最近有个需求就是当你打开datagrid的编辑状态时,要根据行数据的不同对应的combobox的下拉选项也不同。同时为了美观,打开编辑状态的时候combobox为我默认选择数据。我的实现思路是,原有的editor的data不动,重写onBeginEdit方法,在里面获取到要修改的editor,判断rowData的值,当需要修改时再进行操作。废话不多说,具体代码贴上:
onBeginEdit:function(index, rowData){
//统计方法下拉框
var smEditor = $('#FoTable').datagrid('getEditor', {
index : index,
field : 'statisticMethod'
});
$(smEditor.target).combobox({
onLoadSuccess: function () {
$(smEditor.target).combobox('setValue', rowData.statisticMethod);
},
onShowPanel: function(){ //下拉展开时动态修改options
//datatype处理统计方法
if(rowData.dataType == 'string' || rowData.dataType == 'date'){
var data = [];
data.push({'key':'','value':'请选择'},
{'key':'count','value':'计数'},
{'key':'min','value':'最小'},
{'key':'max','value':'最大'},
{'key':'mode','value':'众数'});
$(smEditor.target).combobox("loadData", data);
}
//设置值
$(smEditor.target).combobox('setValue', rowData.statisticMethod);
}
});
//分组排序下拉框
var goEditor = $('#FoTable').datagrid('getEditor', {
index : index,
field : 'groupOrder'
});
$(goEditor.target).combobox({
onLoadSuccess: function () {
$(goEditor.target).combobox('setValue', rowData.groupOrder);
},
onShowPanel: function(){ //下拉展开时动态修改options
//datatype处理统计方法
if(rowData.groupOrder == 0){
var data = [];
data.push({'key':'0','value':'无'},
{'key':'1','value':'升序'},
{'key':'-1','value':'降序'});
$(goEditor.target).combobox("loadData", data);
}
//设置值
$(goEditor.target).combobox('setValue', rowData.groupOrder);
}
});
}