在jqGrid中内联编辑行时出现排序列问题
我对网格的使用涉及排序,同时在内联编辑模式下有几行 问题是:在jqGrid中内联编辑行时出现排序列问题,jqgrid,Jqgrid,我对网格的使用涉及排序,同时在内联编辑模式下有几行 问题是: 在内联编辑一行或多行时,是否有执行排序的方法 如果没有,是否存在在内联编辑一行或多行时单击列标题时将跳转的事件?(在对内容排序之前,我可以删除编辑的事件) 谢谢,Catalin如果您想尝试选项2,您可以连接到onSortCol事件。在这里,您可以取消所有行的编辑模式,然后允许执行排序。只需确保不要返回“stop”,否则根本不会进行排序 在单击可排序列之后和排序数据之前立即引发 您可以获得所有文档。一个有趣的问题+从我这里得到1 编辑行
谢谢,Catalin如果您想尝试选项2,您可以连接到
onSortCol
事件。在这里,您可以取消所有行的编辑模式,然后允许执行排序。只需确保不要返回“stop”
,否则根本不会进行排序
在单击可排序列之后和排序数据之前立即引发
您可以获得所有文档。一个有趣的问题+从我这里得到1 编辑行或单元格排序的问题在于访问编辑单元格的内容。jqGrid的当前代码不执行此操作,因此在列标题上的
单击事件处理程序中,会测试网格中是否有任何编辑行。如果存在一些编辑行,则排序将停止,无需调用onSortCol
回调
因此,只有第二种方法可以在排序之前保存或恢复编辑单元格。要实现这一点,有一个小问题。如果一个绑定附加单击列标题上的
事件,它将在jqGrid的上一个绑定标准处理程序之后调用。因此,在处理单击事件之前,无法保存或放弃更改的编辑。有两种方法可以解决此问题:一种是从新事件处理程序调用的sortData
函数,另一种是更改click
事件的绑定顺序。以下代码演示了第二种方法:
$.each($grid[0].grid.headers,函数(){
var$th=$(this.el),i,l,clickHandler,clickHandler=[],
currentHandlers=$th.data('events'),
clickBinding=currentHandlers.click;
如果($.isArray(单击绑定)){
对于(i=0,l=clickBinding.length;i0){
//单元格编辑或内联编辑中有行
如果(p.cellEdit){
//savedRow的格式为{id:iRow,ic:iCol,name:nm,v:value}
//我们可以叫restoreCell或saveCell
//$grid.jqGrid(“restoreCell”,savedRow[0].id,savedRow[0].ic);
$grid.jqGrid(“saveCell”,savedRow[0].id,savedRow[0].ic);
}否则{
//内联编辑
对于(j=len-1;j>=0;j--){
//调用restoreRow或saveRow
//$grid.jqGrid(“restoreRow”,savedRow[j].id);
$grid.jqGrid(“saveRow”,savedRow[j].id);
}
}
}
});
l=长度;
如果(l>0){
对于(i=0;i
其中$grid
定义为var$grid=$(“#列表”)
。您可以实时查看它的工作原理。@Oleg,我正在尝试您的解决方案,但没有成功,currentHandlers
在clickBinding=currentHandlers中未定义。单击。。。也许你有个提示?@eklam:你使用哪个版本的jQuery来“子类化”事件句柄?如果使用jQuery 1.8版或更高版本,则应使用$。\u数据($th[0],“events”)
而不是$th.data('events')
。感谢您更新该Oleg,我很惊讶这个修复程序不在JQGrid中,因为这个答案。@Oleg:在免费的JQGrid 4.14中可以工作吗?我试过了,但运气不好。@SKumar:那你的演示呢?您使用哪个版本的jQuery?您是否使用了$th.data('events')
或$。\u数据($th[0],“events”)
(请参见前面的注释)?