问题: 如何启用“editable:true”列进行正确排序?
以下链接似乎提供了一个“onclick”处理函数,以允许对可编辑列进行排序。 (https://stackoverflow.com/a/9290716/652078)
但是,即使使用它,当我点击列时收到以下错误:
点击列时出现 'handler' is null or not an object
消息
下面,我提供了我从上面的链接中借用的列定义和“单击”处理程序代码。
- 这个解决方案是否有任何过时的东西会阻止它工作?
- 或者,我的列定义是否阻止这样的“onclick”处理程序工作?
感谢您的帮助!
{
name: 'recType',
label: 'recType',
index: 'recType',
width: 100,
fixed: true,
keys: true,
editable: true,
edittype: "select",
editoptions: {value: rectypelist},
stype: 'select',
formatter: 'select'
},
$(".ui-jqgrid-htable th").click(function() //.on('click', 'th', function(e) //
{
var $grid = contentB1Grid;
$.each($grid[0].grid.headers, function () {
var $th = $(this.el), i, l, clickHandler, clickHandlers = [],
currentHandlers = $._data($th[0], "events"), //$th.data('events'),
clickBinding = currentHandlers.click;
if ($.isArray(clickBinding)) {
for (i = 0, l = clickBinding.length; i < l; i++) {
clickHandler = clickBinding[i].handler;
clickHandlers.push(clickHandler);
$th.unbind('click', clickHandler);
}
}
$th.click(function () {
var p = $grid[0].p, savedRow = p.savedRow, j, len = savedRow.length;
if (len > 0) {
// there are rows in cell editing or inline editing
if (p.cellEdit) {
// savedRow has the form {id:iRow, ic:iCol, name:nm, v:value}
// we can call restoreCell or saveCell
//$grid.jqGrid("restoreCell", savedRow[0].id, savedRow[0].ic);
$grid.jqGrid("saveCell", savedRow[0].id, savedRow[0].ic);
} else {
// inline editing
for (j = len - 1; j >= 0; j--) {
// call restoreRow or saveRow
//$grid.jqGrid("restoreRow", savedRow[j].id);
$grid.jqGrid("saveRow", savedRow[j].id);
}
}
}
});
l = clickHandlers.length;
if (l > 0) {
for (i = 0; i < l; i++) {
$th.bind('click', clickHandlers[i]);
}
}
});
});
答案 0 :(得分:0)
我的可编辑专栏实际上正确排序......
回想一下,要排序的列是可编辑的“下拉列表”(或 列表框 )列。
我跳过箍 - 基于关于无法对“可编辑”列进行排序的各种帖子。这包括我尝试使用Oleg发布的解决此类问题的答案之一的片段。
但是,事实证明,真正的问题是对下拉列表“key”值的字符串值执行排序,而不是显示“value”。 (fwiw,“密钥”恰好是数字代码)。
- 所以,我所尝试的$(".ui-jqgrid-htable th").click(function()
再次与实际问题无关。 (虽然,我仍然不知道为什么我得到“处理程序为空或不是对象”javascript错误)
因此,基本上回答了关于 的问题“为什么这种技术不能使我的”editable:true“列能够正确排序?”
现在,我需要研究这个问题: 如何配置我的可编辑列表框列 - 以便在“显示”值上执行排序,而不是“关键”值?
解决了这个问题(再次回答了我自己的问题)- 无论如何,感谢任何花时间至少查看我之前发布的问题的人。
: - )