87,910
社区成员
发帖
与我相关
我的任务
分享
jquery.easyui.min.js:12881 Uncaught TypeError: Cannot read property 'panel' of undefined
_9a5 @ jquery.easyui.min.js:12881
(anonymous function) @ jquery.easyui.min.js:13007
m.extend.each @ jquery.min.js:2
m.fn.m.each @ jquery.min.js:2
$.fn.combo.methods.hidePanel @ jquery.easyui.min.js:13006
$.fn.combo @ jquery.easyui.min.js:12965
(anonymous function) @ jquery.easyui.min.js:13322
m.event.dispatch @ jquery.min.js:4
r.handle @ jquery.min.js:4
如果开启多个单元格可以在onSelect里实现也是可以的[/quote]
你把文件打个包发给我吧,我周末看看
redlz2500@163.com
jquery.easyui.min.js:12881 Uncaught TypeError: Cannot read property 'panel' of undefined
_9a5 @ jquery.easyui.min.js:12881
(anonymous function) @ jquery.easyui.min.js:13007
m.extend.each @ jquery.min.js:2
m.fn.m.each @ jquery.min.js:2
$.fn.combo.methods.hidePanel @ jquery.easyui.min.js:13006
$.fn.combo @ jquery.easyui.min.js:12965
(anonymous function) @ jquery.easyui.min.js:13322
m.event.dispatch @ jquery.min.js:4
r.handle @ jquery.min.js:4
如果开启多个单元格可以在onSelect里实现也是可以的 $.extend($.fn.datagrid.methods, {
editSpecialRow: function(jq,param){
return jq.each(function(){
var opts = $(this).datagrid('options');
var fields = $(this).datagrid('getColumnFields',true).concat($(this).datagrid('getColumnFields'));
var row=$(this).datagrid('getSelected');
//检查获得签字的位置,以及是否有数据,有无数据通过changes来进行判断
var field_name;
//var break_points=[];
var disable_index=-1;
for(var i=0;i<fields.length;i++){
field_name=fields[i].split('_');
if(field_name[0]=='u'){
// break_points.push({
// index:i,value:row[fields[i]],changes:row.changes[fields[i]]
// });
if(
!row[fields[i]] || row[fields[i]]==999999 ||
(row[fields[i]] && row.changes && typeof(row.changes[fields[i]])!='undefined' )
){
//并未提供清空功能的
}else{
disable_index=i+1;//在此以及其之前的都不能编辑
}
}
}
//因为修改后就会变化,但是由于没有原始数据的记录,因此在客户端的检查方式为:
//如果value有效且changes有数据,或者value无效则认为可以编辑
// if(disable_index==-1){
// //disable_index=fields.length;
// }
for(var i=0;i<disable_index;i++){
var col = $(this).datagrid('getColumnOption', fields[i]);
col.editor1 = col.editor;
col.editor = null;
}
// 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);
// var ed = $(this).datagrid('getEditor', param);
// if (ed){
// if ($(ed.target).hasClass('textbox-f')){
// $(ed.target).textbox('textbox').focus();
// } else {
// $(ed.target).focus();
// }
// }
for(var i=0; i<fields.length; i++){
var col = $(this).datagrid('getColumnOption', fields[i]);
if(col.editor1){
col.editor = col.editor1;
}
}
});
},
//下面是用于hijack的代码,封装了editIndex,将其修改,用click来返回是否允许修改,false是禁止。
enableSpecialRowEditing: function(jq){
return jq.each(function(){
var dg = $(this);
var opts = dg.datagrid('options');
opts.oldOnClickCell = opts.onClickCell;
opts.onClickCell = function(index, field){
if (opts.editIndex != undefined){
if (dg.datagrid('validateRow', opts.editIndex)){
//允许同一行多个编辑
if(opts.editIndex!=index){
dg.datagrid('endEdit', opts.editIndex);
opts.editIndex = undefined;
}
} else {
return;
}
}
if(!opts.oldOnClickCell.call(this, index, field)){
return;
}
dg.datagrid('selectRow', index).datagrid('editSpecialRow', {
index: index
});
opts.editIndex = index;
//opts.oldOnClickCell.call(this, index, field);
}
});
}
});
我又想了下,editcell自己本身是会将默认的editor全部替换为editor1,用这样的方式来调用原本的beginedit来处理的,你看是不是你的代码调用了editcell后,在没有endedit前原来配置的editor全部都丢失了的缘故
function getPosList() {
var posName = $('#dg').datagrid('getEditor', {index: editIndex, field: 'posName'});
if (!posName) {
return;
}
posName = posName.target;
var dicname = $(posName).combobox("getValue");
$(posName).combobox({
valueField: 'posname',
textField: 'posname',
disabled: false,
panelHeight: 'auto',
onShowPanel: function () {
var lList = [];
for (var i = 0; i < 30; i++) {
if (i != editIndex && $('#dg').datagrid('getRows')[i]['posId']) {
lList.push($('#dg').datagrid('getRows')[i]['posId']);
}
}
$.ajax({
url: formUrl + '/tposComInfoAdjust/getPosList.do?lList=' + lList + '&instId=' + instId + '&zposId=' + zposId,
success: function (data) {
$(posName).combobox('loadData', data);
}
});
},
onSelect: function (data) {
$('#dg').datagrid('endEdit', editIndex);
$('#dg').datagrid('beginEdit', editIndex);
$('#dg').datagrid('getRows')[editIndex]['posId'] = data.id;
findDgTD('signcode', editIndex).text((data.signcode && data.signcode != 1 ) ? data.signcode : "");
writeDgTextbox('posMobile', data.posMobile);
writeDgTextbox('posShort', data.posShort);
writeDgTextbox('posPhone', data.posPhone);
writeDgTextbox('fax', data.fax);
writeDgTextbox('posMail', data.posMail);
writeDgTextbox('posQq', data.posQq);
getPosList();
}
});
if (dicname) {
$(posName).combobox("setValue", dicname);
}
}
function onClickRow(index) {
if (!canEdit || !instId) {
return;
}
//点击一行,关闭之前开启的行
if (editIndex != index) {
if (editIndex != undefined) {
$('#dg').datagrid('endEdit', editIndex);
}
$('#dg').datagrid('beginEdit', index);
editIndex = index;
if (!$('#dg').datagrid('getRows')[editIndex]['posId']) {
$('#dg').datagrid('endEdit', editIndex);
$('#dg').datagrid('editCell', {index: editIndex, field: 'posName'});
}
getPosList();
}
$('#dg').datagrid('uncheckAll');
}
开始点击行这样都可以,点击后的就报错