添加工具栏按钮用于向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事件只运行一次,而不是每次保存后.如何解决这个问题,以便可以在不关闭添加表单的情况下添加具有默认值的多行?如果没有选中的行,如何取消或不允许添加命令?
如果您只需要为添加表单进行一些初始化操作,您可以使用至少两种方法:
defaultValue内部的函数。回调函数可以根据所选行的数据为添加表单的相应字段提供值。出于优化目的,您可以在beforeInitData回调/事件中读取当前所选行的数据。您可以直接读取您需要的数据,也可以同步调用服务器来获取您需要的信息。使用属性的唯一缺点是它使用jQuery.val方法为 Add 表单的所有字段设置默认值,但 'checkbox' 除外。对于 jqGrid的复选框,设置、、或在属性返回的值中未找到的复选框的选中属性。因此该方法不适用于其他编辑类型。例如,自定义编辑类型可能会失败。defaultValuedefaultValueedittypefalse0nooffundefineddefaultValuename通过字段的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>
在演示中,您可以看到上述第一种方法的工作原理。
| 归档时间: |
|
| 查看次数: |
14834 次 |
| 最近记录: |