最近增加一个需求,在datagrid中,新增行时,点击编辑某一个单元格时增加点击事件。
解决过程:
1.首先想到对datagrid中的columns增加formatter,在返回的input里面增加onclick,由于columns是从后台传过来的,先采用后台拼接然后存入到map中,前台进行赋值,该方案施行后,结果发现在编辑时并没有增加onclick,但是编辑完后若再次点击单元格有点击事件。 因此该方案不适用。
2.经查阅官方文档,结果发现columns在编辑时是由editor控制,最终采用重写editor类型实现。
官方例子为:
官方以text作为示例,由于自己页面中,有其他单元格也需使用text类型,但并不需要点击事件,因此我自定义了一个类型inclick,并将需要点击事件的设为该类型。
$.extend($.fn.datagrid.defaults.editors, {
inclick: {
init: function (container, options) {
var input=$('<input type="text" class="datagrid-editable-input" onclick="uploadImage(this)">').appendTo(container);
return input;
},
destroy: function(target){
$(target).remove();
},
getValue: function(target){
return $(target).val();
},
setValue: function(target, value){
$(target).val(value);
},
resize: function(target, width){
$(target)._outerWidth(width);
}
}
});
至此,该需求得到解决。