如何在当前行的jqgrid中为添加表单设置默认字段值

And*_*rus 5 jqgrid

添加工具栏按钮用于向jqgrid添加新行.添加显示的表单包含所有提交的项目空白.如何设置从发布添加命令时当前/选中的行的列值添加表单字段值?使用json远程数据.或者,如果这更简单,如何调用服务器方法传递当前/选定的行来检索从服务器添加表单的默认值?

jqgrid还包含隐藏的列.如果保存添加表单,则还应发送来自当前行的隐藏列的可能值以添加控制器.

更新

我尝试使用Oleg很好的建议

         afterShowForm: function(formID) {
           var selRowData, 
               rowid = grid.jqGrid('getGridParam', 'selrow');
           if (rowid === null) {
             // todo: how to cancel add command here
             alert('Please select row');
             return;
             }

           selRowData = grid.jqGrid('getRowData', rowid);
           if (selRowData === null) {
             alert('something unexpected happened');
             return;
             }

           $('#' + 'Baas' + '.FormElement', formID).val(selRowData.Baas);
           }
Run Code Online (Sandbox Code Playgroud)

应用程序保存后保持添加表单.首先保存Baas字段为空.它看起来像afterShowForm事件只运行一次,而不是每次保存后.如何解决这个问题,以便可以在不关闭添加表单的情况下添加具有默认值的多行?如果没有选中的行,如何取消或不允许添加命令?

Ole*_*leg 4

如果您只需要为添加表单进行一些初始化操作,您可以使用至少两种方法:

  • 将属性用作editoptionsdefaultValue内部的函数。回调函数可以根据所选行的数据为添加表单的相应字段提供值。出于优化目的,您可以在beforeInitData回调/事件中读取当前所选行的数据。您可以直接读取您需要的数据,也可以同步调用服务器来获取您需要的信息。使用属性的唯一缺点是它使用jQuery.val方法为 Add 表单的所有字段设置默认值,但 'checkbox' 除外。对于 jqGrid的复选框,设置、、或在属性返回的值中未找到的复选框的选中属性。因此该方法不适用于其他编辑类型。例如,自定义编辑类型可能会失败。defaultValuedefaultValueedittypefalse0nooffundefineddefaultValue
  • beforeShowFormafterShowForm的用法。在回调函数内部,您可以设置表单的任何值。name通过字段的id可以找到网格对应列的字段,该字段的id与对应列的属性值相同。

就像您已经知道的那样,您可以获取当前所选行的 id 并getGridParam从所选行中获取数据

var selRowData, rowid = grid.jqGrid('getGridParam', 'selrow');
if (rowid !== null) {
    // a row of grid is selected and we can get the data from the row
    // which includes the data from all visible and hidden columns
    selRowData= grid.jqGrid('getGridParam', 'selrow');
}
Run Code Online (Sandbox Code Playgroud)

其中gridjQuery 对象就像它选择网格的$('#list')主要元素。<table>

演示中,您可以看到上述第一种方法的工作原理。