我是jqgrid的新手,我有一个编辑类型为自定义的列。
一旦编辑了行数据,我希望行保存在模糊上(当我点击所选行的外部时),为此我使用了dataEvent,但它不起作用。
我正在使用Jqgrid版本4.1。
有人可以帮我解决这个问题。
我在下面附上了一段代码:
{ name: 'Roles', index: 'Roles', align: 'left', editable: true,
edittype: "custom",
editoptions: {custom_element: renderRoleColumn, custom_value: roleColumnValue,
dataEvents: [{ type: 'blur',
fn: function (e) {
alert("roles");
}
}]
}
}
答案 0 :(得分:2)
你是对的。 jqGrid的当前实现不使用dataInit
或dataEvents
(请参阅jqGrid的the source code不要像所有其他编辑类型一样调用options = bindEv(elem,options)
。问题只是因为我不确定这是一个错误。在the documentation的jqGrid中,描述了edittype: "custom"
的所有步骤。
我不认为这是一个问题。您可以在custom_element
内进行任何绑定。您没有发布您使用的renderRoleColumn
和roleColumnValue
的任何代码,但如果您将blur
事件句柄绑定到您返回的自定义元素,它将起作用。
更新:您的自定义格式化程序renderRoleColumn
会将<div>
和<select>
个元素作为子元素返回<input>
。 <div>
无法获得焦点,也不会处理blur
事件。因此,您应该将blur
绑定到子元素<select>
和<input>
。代码可以类似于以下
function renderRoleColumn() {
//... your current code which generate HTML fragment in the roleDiv as string
// create DOM element from the HTML fragment with jQuery wrapper
var $custom = $(roleDiv);
// make binding to children
$custom.find('select,input').blur(function (e) {
alert('blur on ' +
e.target.tagName.toLowerCase() +
' id=' + e.target.id);
});
return $custom[0]; // return roleDiv as DOM element
}