在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”)
    (请参见前面的注释)?