添加工具栏按钮用于向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事件只运行一次,而不是每次保存后。如何解决这个问题,以便可以在不关闭添加表单的情况下添加具有默认值的多行? 如果没有选定的行,如何取消或不允许添加命令?
答案 0 :(得分:4)
如果您只需要为添加表单进行一些初始化操作,则可以使用至少两种方法:
defaultValue
属性作为函数。回调函数defaultValue
可以根据所选行的数据为Add表单的相应字段提供值。出于优化目的,您可以在beforeInitData回调/事件中读取当前所选行的数据。您只需读取所需的数据或与服务器进行同步调用即可获取所需的信息。使用defaultValue
属性的唯一缺点是它使用jQuery.val方法为添加表单的所有字段设置默认值,异常为'checkbox'edittype
。对于false
复选框的jqGrid set checked属性,0
,no
,off
或undefined
在{{返回的值中找不到1}}属性。因此该方法不适用于其他编辑类型。例如,custom编辑类型可能会失败。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中,您可以看到上述第一种方法的工作原理。