作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
添加工具栏按钮用于向 jqgrid 添加新行。出现的添加表单包含所有已提交的空值。如何设置从发出添加命令时当前/选定的行的列值添加表单字段值?使用json远程数据。或者,如果这更简单,如何调用传递当前/所选行的服务器方法以从服务器检索添加表单的默认值?
jqgrid 还包含隐藏列。如果可能的话,如果保存添加表单,当前行隐藏列中的值也应该发送到添加 Controller 。
更新
我尝试使用奥列格的伟大建议
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 事件只运行一次,而不是在每次保存后运行。如何解决此问题,以便可以在不关闭添加表单的情况下添加具有默认值的多行?如果没有选定的行,如何取消或不允许添加命令?
最佳答案
如果您只需要为添加表单进行一些初始化操作,您可以使用至少两种方法:
defaultValue
的用法属性作为 editoptions 内部的函数。回调函数defaultValue
可以根据所选行的数据为添加表单的相应字段提供值。出于优化目的,您可以在 beforeInitData 中读取当前所选行的数据一次。回调/事件。您可以直接读取您需要的数据,也可以同步调用服务器来获取您需要的信息。使用 defaultValue
的唯一缺点属性是它使用 jQuery.val方法为添加表单的所有字段设置默认值,但“复选框”异常(exception) edittype
。对于复选框 jqGrid 设置false
复选框的checked属性, 0
, no
, off
或undefined
在 defaultValue
返回的值中找不到属性(property)。因此该方法不适用于其他编辑类型。例如,custom 可能会失败。编辑类型。name
值相同的字段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');
}
哪里grid
是像 $('#list')
这样的 jQuery 对象选择主 <table>
网格的元素。
在 the demo您可以看到上述第一种方法的工作原理。
关于jqgrid - 如何从当前行设置jqgrid中添加表单的默认字段值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7943924/
我是一名优秀的程序员,十分优秀!