JqG​​rid在添加时更新网格

时间:2010-02-04 03:12:39

标签: jquery jquery-ui jquery-plugins jqgrid

方案

我的网格中有三列,但只有一列是可编辑的,另外两列是在服务器端填写的。我正在使用jqGrid的内置添加功能,而不是在成功添加时刷新网格。我希望将行添加到网格中,就像它自动添加一样,但是我想自己添加它,因为它只添加了一个标记为“可编辑”的列。我似乎无法找到阻止行自动添加到网格的方法,或者是一种覆盖网格中内置添加功能的方法。我的想法是自己添加行,因为我将在提交时收回完整行的数据。

问题

  1. 当我不想要网格刷新时,有没有办法阻止网格自动添加行,以便我可以手动添加该行的所有数据?

  2. 是否可以使用内置的添加按钮并覆盖onClick,而无需挖掘并直接确定jqGrid调用按钮的内容?

  3. 关于如何从服务器端获取行添加到网格中的任何更好的想法,而不是手动完成所有操作...即。创建我自己的添加按钮,然后弹出一个对话框并处理所有提交功能?

  4. 修改

    如果我可以阻止网格自动添加行,那会有什么帮助...我可以自己处理。

2 个答案:

答案 0 :(得分:0)

这是一个解决方案。使用事件 afterComplete 描述here

afterComplete : function (response, postdata, formid) {…}

在这种情况下,您可以从服务器获取响应数据。由于该行已更新/插入,您可以使用响应数据更新其他行单元格。您可以从 postdata 获取行ID,如果没有,请使用 afterSubmit 事件 - 它将允许您告诉jqGrid什么是新的行ID(再次从服务器响应) ),因此你就会知道价值。

答案 1 :(得分:0)

不是你想要的答案,但我选择简单地将onClick事件绑定到按钮并以这种方式添加行。

var dummyRow;  // you can trick the addRowData method into simply adding a row without 
               // index by passing an undefined value.

jQuery('#addRow').click( function () {
    jQuery('#grid').jqGrid('addRowData', dummyRow, {"name":"New Name","val":"","other":"No"});
});

我很想知道其他人是否有其他选择,因为要求Navigator的Add Row方法专门用于ajax调用似乎很荒谬。