場景:datagrid 中用編輯框修改數據,有一個列使用的combobox 在可編輯的時候需要動態綁定數據,這個數據是在根據其他條件可變的
思路:在每次開啟編輯框的時候動態綁定數據,
datagrid開啟
onClickCell: onClickCell//點擊觸發
onAfterEdit:onAfterEdit//編輯完單元格之后觸發的事件
$.extend($.fn.datagrid.methods, { editCell: function (jq, param) { return jq.each(function () { var opts = $(this).datagrid('options'); var fields = $(this).datagrid('getColumnFields', true).concat($(this).datagrid('getColumnFields')); for (var i = 0; i < fields.length; i++) { var col = $(this).datagrid('getColumnOption', fields[i]); col.editor1 = col.editor; if (fields[i] != param.field) { col.editor = null; } } $(this).datagrid('beginEdit', param.index); for (var i = 0; i < fields.length; i++) { var col = $(this).datagrid('getColumnOption', fields[i]); col.editor = col.editor1; } }); } }); var editIndex = undefined; //判斷是否編輯結束 function endEditing() { if (editIndex == undefined) { return true } if ($('#subDg').datagrid('validateRow', editIndex)) { $('#subDg').datagrid('endEdit', editIndex); editIndex = undefined; return true; } else { return false; } } //點擊單元格觸發的事件 function onClickCell(index, field) { if (endEditing()) { $('#subDg').datagrid('selectRow', index) .datagrid('editCell', { index: index, field: field }); editIndex = index; } var taskLevelsData =$("#taskLevels").val(); if(field=="taskLevel" && taskLevelsData){//下拉編輯列時觸發 var editors = $('#subDg').datagrid('getEditors', index);//取當前的編輯器 var row = $('#subDg').datagrid('getRows')[index]; var smEditor = editors[0]; $(smEditor.target).combobox({ onLoadSuccess: function () { }, onShowPanel: function(){ //下拉展開時動態修改options //debugger var data = []; $.each(taskLevelsData.split(","),function(i,e){ var obj={}; obj.id=e; obj.text=e; data.push(obj); }) $(smEditor.target).combobox("loadData", data); //設置值 $(smEditor.target).combobox('setValue', row.taskLevel); //row的屬性賦值 } }); } } //編輯完單元格之后觸發的事件 function onAfterEdit(index, row, changes) { var d = {}; d.id= row.id; //編輯內容進行修改數據 if(row.hasOwnProperty('bidRequire')){ d.bidRequire=row.bidRequire; }if(row.hasOwnProperty('meaRequire')){ d.meaRequire=row.meaRequire; }if(row.hasOwnProperty('requireDate')){ d.requireDate=row.requireDate.split(' ')[0] ; }if(row.hasOwnProperty('quaRequire')){ d.quaRequire=row.quaRequire; }if(row.hasOwnProperty('taskLevel')){ d.taskLevel=row.taskLevel; } //console.log(d); //console.log(changes); if(JSON.stringify(changes) != "{}"){ //console.log("tijiao") $.post('${pmsmanager}/pms/mtrl_plan/mtrl_plan_detail/update.do?sessionId=${(sessionId)!""}',d,function(data){ }) } }