Javascript 一列的jqgrid自定义编辑行为

Javascript 一列的jqgrid自定义编辑行为,javascript,jquery,jqgrid,Javascript,Jquery,Jqgrid,我想得到一个jqGrid,对于某一列,它不是将单元格变成文本框,而是弹出一个需要填写的表单。关闭表单时,输入的数据将保存到单元格中。用户永远无法直接与单元格交互,以免损坏数据 如图所示,我有一个要与之交互的用户表。在某个地方碰巧有一张书桌。当用户单击fav_books列时,会出现一个弹出窗口,由book table填充。用户选择一些书籍,单击“确定”,这些书籍的id将保存到单元格中 现在,我只关心如何显示一个弹出窗口custom_元素和custom_值没有帮助,因为它们将单元格转换为要返回的D

我想得到一个jqGrid,对于某一列,它不是将单元格变成文本框,而是弹出一个需要填写的表单。关闭表单时,输入的数据将保存到单元格中。用户永远无法直接与单元格交互,以免损坏数据

如图所示,我有一个要与之交互的用户表。在某个地方碰巧有一张书桌。当用户单击fav_books列时,会出现一个弹出窗口,由book table填充。用户选择一些书籍,单击“确定”,这些书籍的id将保存到单元格中

现在,我只关心如何显示一个弹出窗口
custom_元素
custom_值
没有帮助,因为它们将单元格转换为要返回的DOM元素。我尝试像这样使用
afterEditCell
(只是为了证明概念),但无法保存单元格:

grid.jqGrid({
...
afterEditCell: function(rowid, name,val,iRow,iCol){
    if(name=='fav_books'){
        alert("see my table?");
        //which one saves (edits?) the cell?
        //grid.jqGrid('setRowData',rowid,{fav_books: 'hi'});
        //grid.jqGrid('setCell',rowid, 'fav_books','hi',null,null,false);
        //grid.jqGrid('saveCell',iRow,iCol);
    }
},
...
});

我是否可以在afterEditCell内部完成编辑单元格的过程,或者是否需要为afterEditCell之后的每个事件提供自定义函数?在回答您的直接问题之前,我建议您从jqGrid中查看一下,有没有什么方法可以做到这一点(而我只是让自己的生活变得艰难?

)。而且也是关于同一个主题


<> P> >我的建议是考虑使用<代码>倍数:<代码> >编辑选项>代码> >与<代码> EdType:“选择”< /代码>和<代码>格式化程序:“选择”< /代码>。这样,您就可以非常轻松地实现您的需求,而且实现的方式也非常接近您的需求。

这样做是可行的,只是为了简化问题,我没有传达这样一个事实,即弹出窗口中显示的表是一个更满的表。用户需要看到多个列才能做出决定。@Andrea:您在问题中所写的内容提醒我jQuery UI日期选择器。连接datepicker所需的只是在特定操作中使用:对话框等等。在操作列表中,您可以将原始的
框设置为只读,以便用户只能对对话框进行更改。但dataInit发生在该框变为可编辑之前。在我的对话框关闭后,这个框会不会变成一个输入框?@Andrea:不客气!对不起,我今天没有看到你最后的评论。在
dataInit
内部,输入元素存在,但它仍然是断开连接的(没有
jQuery.append
etc)。因此,我们经常使用
setTimeout
setTimeout
内部初始化控件,如
autocomplete
datepicker
。无论如何,你的问题已经解决了,这是好事。