jqgrid编辑组合列和绑定数据
问题描述:
我有一个jqgrid,我用custom_element来格式化显示。jqgrid编辑组合列和绑定数据
{
name: 'PDTime', index: 'PDTime', width: 60, editable: true, formatter: timeSpanHMFormatter, edittype: 'text', editoptions: {
custom_element: function (value, options) {
var elemStr = '<div> <select id="UTTime" name="UTTime" >'
for (var i = 0; i < 24; i++) {
elemStr = elemStr + '<option value="' + i + '">' + i + '</option>'
}
elemStr = elemStr + "</select> </div>";
return $(elemStr)[0];
},
custom_value: function (elem, operation, value) {
console.log(elem);
}
}
},
格式化器是表示小时和分钟的时间跨度显示。值“PDTime”是一个具有小时和分钟属性的对象。
function timeSpanHMFormatter(cellvalue, options, rowObject) {
if (cellvalue.Hours == 0 && cellvalue.Minutes == 0)
return "";
var value = "00:00";
if (cellvalue.Hours.toString().length == 1)
value = "0" + cellvalue.Hours
else
value = cellvalue.Hours
if (cellvalue.Minutes.toString().length == 1)
value = value + ":0" + cellvalue.Minutes
else
value = value + ":" + cellvalue.Minutes
return value;
}
在视图模式下,单元看起来像02:30等,具体取决于值。我想在编辑模式下将值绑定到此PDTime对象,我不知道如何去做。
custom_element现在创建一个小时下拉菜单,我试图将下拉选定的值绑定到PDTime.Hours
。我怎样才能做到这一点 ?
答
从自定义元素的Guriddo Documentation here可以看出,需要定义一个custom_value函数并将操作设置为get。
这里的诀窍是,这个事件应该在操作得到时返回对象。 下面是一个exsmple:
custom_value: function (elem, oper) {
if(oper==='get') {
var hour = $("#UTTime", elem).val();
// get the minutes according to your definition
var time = $("#UTTime", elem).val();
return {"Hours" : hour, "Minutes": time};
}
},
注意,当数据被发送到服务器PDTime是一个对象。您可以简化后返回使用serializeRowData事件(look here)这个事件一个一个或多个值是jqGrid的事件,你可以做这样的:
...jqGrid({
....
serializeRowData : function(postdata) {
var hours = postdata.PDTime.Hours;
var minutes postdata.PDTime.Minutes;
posdata.PDTime = hours+":"+minutes;
// or what you want data combination
return postdata;
},
...
哎呀,edittype:“自定义”中没有'text'题。 – user3462433
您能更详细地说明您的意思:“在编辑模式下将值绑定到此PDTime对象”。使用了什么编辑模块 - 内联,格式化的单元格? –
我正在使用内联编辑。我的意思是,当我输入PDTime的值时,我希望能够将它分配给PDTime.hours和分钟。例如,如果在两个下拉列表中选择两个值,一个绑定到PDTimr.hours,另一个分钟,所以当我回复保存时,我可以访问PDTimr对象。 – user3462433