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

时间:2011-10-30 08:20:27

标签: 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);
           }

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

1 个答案:

答案 0 :(得分:4)

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

  • editoptions内使用defaultValue属性作为函数。回调函数defaultValue可以根据所选行的数据为Add表单的相应字段提供值。出于优化目的,您可以在beforeInitData回调/事件中读取当前所选行的数据。您只需读取所需的数据或与服务器进行同步调用即可获取所需的信息。使用defaultValue属性的唯一缺点是它使用jQuery.val方法为添加表单的所有字段设置默认值,异常为'checkbox'edittype。对于false复选框的jqGrid set checked属性,0nooffundefined在{{返回的值中找不到1}}属性。因此该方法不适用于其他编辑类型。例如,custom编辑类型可能会失败。
  • beforeShowFormafterShowForm的使用情况。在回调函数内部,您可以设置表单的任何值。您可以通过字段的id找到网格对应列的字段,该字段与相应列的defaultValue属性的值相同。

就像你已经知道的那样,你可以得到name当前所选行的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'); } 是jQuery对象,如grid,它选择网格的主$('#list')元素。

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