$.extend($.fn.datagrid.methods,{
getTr:function(jq,index){
let opts=$.data(jq[0],'datagrid').options;
return opts.finder.getTr(jq[0],index);
},
getSelectedTr:function(jq){
let opts=$.datagrid(jq[0],'datagrid').options;
return opts.finder.getTr(jq[0],null,'selected')
},
updateCell:function(jq,option){
let tr=jq.datagrid("getTr",option.index);
let td=tr.find("td[field="+option.field+"]>div.datagrid-cell");
td.text(option.value);
},
unMergeCell:function(jq,options){
return jq.each(function(){
let tr=jq.datagrid("getTr",options.index);
let td=tr.find('td[field='+options.field+']');
let rowspan=td.attr("rowspan")||1;
td.attr('rowspan',1);
while(rowspan--){
tr=tr.next();
tr.find('td[field='+options.field+']').show();
}
})
},
autoMergeCellsGroup:function(jq,param){
return jq.each(function(){
let target=$(this),
fields=params.fields,
filterObj=param.filterObj,
spareB=param.spareB;
if(!fields){
fields=target.datagrid('getColumnFields');
}
let rows=target.datagrid('getRows');
let group=filterObj||target.datagrid("options").group;
let temp={}
rows.forEach(function(item,index){
if(spareB&&item.spareB!=spareB){
return;
}
if(filterObj&&item[filterObj.field]!=filterObj.fieldValue){
return;
}
fields.forEach(function(field){
if(!temp[field]){
item._index=index;
temp[field]=[[item]];
return false;
}
let len=temp[field].length;
let arr=temp[field][len-1];
let last=arr[arr.length-1];
if(last&&last[group[field]]==item[group[field]]&&last[field]==item[field]){
arr.push(item)
}else{
item._index=index;
temp[field].push([item])
}
})
});
$.each(temp,function(field,column){
column.forEach(function(arr){
let last=arr[0];
let len=arr.length;
target.datagrid('mergeCells',{
index:last._index,
field:field,
rowspan:len
});
})
})
})
},
bind:function(jq,options){
let event=option.length==3?option[2]:'click';
let selector=option[0];
let fn=option[1];
jq.parent().on(event,selector,function(e){
let rowIndex=$(this).closest('tr').index();
let row=jq.datagrid('getRows')[rowIndex];
fn.call(this,row,rowIndex,e);
})
}
})