以下是我的要求:
这是我的Jqgrid,在这里我可以添加行,但不能使用自动生成的id,并且在失去行焦点或输入键后无法调用控制器方法。
发布于 2013-11-26 10:33:14
jqGrid包括inlineNav方法,它允许添加到导航条(由navGrid
创建,通常使用add: false, edit: false
选项调用,请参见答案)添加、编辑、保存和取消按钮。如果用户单击按钮中的一个按钮,则将调用相应的内联编辑方法。可以使用editParams
和addParams.addRowParams
来指定内联编辑方法的任何其他选项(例如,请参见这里 )。
当前代码直接使用addRow
。第二个选项(parameters =
)包含错误的语法。如果您需要生成唯一的id,我建议您使用$.jgrid.randId()
而不是使用n + 1
。addRow
的第一个,也是唯一的参数是带有选项的对象。如果直接使用adRow
,则可以使用rowID
选项指定新添加行的id。如果没有指定rowID
选项,jqGrid将自动使用$.jgrid.randId()
生成新行的唯一rowid。
所有内联编辑按钮的id都是根据网格的id和后缀设置的:"_iladd“、"_iledit”、"_ilsave“、"_ilcancel”。例如,网格有id="list"
,那么保存按钮的id将是"list_ilsave"
。如果需要,您可以通过按其id寻址来禁用任何按钮(例如,$("#list_ilsave").removeClass('ui-state-disabled');
-启用保存按钮和$("#list_ilsave").addClass('ui-state-disabled');
-禁用它)。以同样的方式,您可以使用jQuery.click
模拟单击任何按钮。例如,$("#list_ilsave").click();
将模拟单击Save按钮。
如果用户单击Add按钮,新行(<tr>
)将获得额外的类"jqgrid-new-row"
。您可以使用这个事实来查找addRow
添加的行。
您可以使用editoptions.dataEvents
注册blur
或focusout
。答案和答案可以提供一些可以帮助您的代码片段。
使用成功保存后在DB中生成的值刷新网格的in可能很重要。实现这一点的方法有很多。最简单的方法之一是在成功保存行之后重新加载网格。请参阅答案的代码。另一种方法是从editurl
指定的web方法(代码中的“/TransactionType/GetTotalCount”)返回新id。使用aftersavefunc
回调,您可以获得editurl
的响应,并修改网格中的id。以aftersavefunc
中相对较长的答案代码为例。
https://stackoverflow.com/questions/20212867
复制相似问题