如何使saveRow函数等待jqGrid中的editRow函数

时间:2016-04-06 07:23:18

标签: javascript jquery jqgrid

我试图将jqGrid添加功能用于我自己的目的。我有navButton,我想做一个特定的行为:

  1. 当用户点击该按钮时,在编辑模式中出现新行 网格。
  2. 当用户键入数据,然后单击“输入”时,将发送数据     服务器
  3. 现在,我的代码看起来像这样:

     .navButtonAdd("#${pagerId}", {
                    caption: "${resolveMessage('assign')}", 
                    buttonicon: "ui-icon-add", 
                    onClickButton: function() {
                     if (assignMode == false){
                        assignMode = true;
                        $('#${tableId}').jqGrid('addRowData', 0, {});
                        $('#${tableId}').jqGrid('editRow', 0);
                        $('#${tableId}').jqGrid('saveRow', 0, function(){ assignMode = false; }, "${assignURL}"); 
                     }
                    },
                    position:"last"
                })
    

    我的问题是saveRow函数没有等待editRow的结束。立即单击按钮后,它会向服务器发送空数据。如何使saveRow等待输入数据?

1 个答案:

答案 0 :(得分:1)

我建议您使用inlineNav而不是自己重新实现相同的功能。例如,您当前的代码,例如对每个添加的行使用相同的rowid 0,这是非常糟糕的。此外,您在没有任何其他选项的情况下致电editRow,然后在 saveRow之后立即致电editRow ,这会强制保存空行,可能包含错误的数据。验证期间保存可能会失败。

此外,我建议您考虑在MIT或GNU GPLv2许可下免费使用free jqGrid,而不是使用商业Guriddo jqGrid JS(参见价格here)。我从2014年底开始开发免费的jqGrid fork(the post之后的短片),并且已经在每个已发布的版本wiki articles的自述文件中实现了很多修复,改进和新功能以及关于steckoverflow的答案我当时发布的。