【问题标题】:struts 2 use jqGrid to get row data before formatstruts 2 使用 jqGrid 获取格式化前的行数据
【发布时间】:2016-02-07 08:40:07
【问题描述】:
我想在加载后获取 jGrid 数据。
有些列有格式化程序,但我想在格式化之前获取它们的原始数据。
网格列是:
<sjg:gridColumn name="accountNo" formatter="linkBulider" />
<sjg:gridColumn name="amount" />
我用下面的js:
var allRowsInGrid = $('#gridtable').jqGrid('getRowData');
for (i = 0; i < allRowsInGrid.length; i++) {
//For accountNo I get the formmated value
allRowsInGrid[i].accountNo;
//The amount is ok as it is unformated
allRowsInGrid[i].amount;
}
【问题讨论】:
标签:
jquery
struts2
jqgrid
struts2-jquery-plugin
struts2-jquery-grid
【解决方案1】:
根据wiki getRowData 不会从网格返回实际数据。
返回一个数组,其中包含所请求的id = rowid 的数据。返回的
数组的类型为name:value,其中名称是来自colModel 的名称
以及该行中相关列的值。它返回一个
如果找不到rowid,则为空数组。
- 在编辑行或单元格时不要使用此方法。这将返回单元格内容,而不是输入的实际值
元素。
-
这种方法的性能成为一个问题。不使用
这个方法在“for”和“when”的正文中。 (当调用这个
方法,它会计算一次行数据。)
如果rowid 是
未设置方法返回数组中网格中的所有数据
使用custom formatter 选项格式化单元格内容后,您需要一个选项来取消格式化数据。
问题是:如果我们使用自定义的formatter 函数和
如果我们使用编辑或方法,希望恢复原始值
getRowData 和 getCell?
答案是:可以使用自己自定义的unformatter函数来做
那。这个函数可以在colModel中使用。
此时您可以检查sjg:gridColumn 是否可以设置一个属性来定义unformat 函数。不幸的是,根据 TLD,您不能这样做。
但是,您可以在加载后修改网格。
$(document).ready(function(){
$("#gridtable").jqGrid('setColProp', 'accountNo',{
unformat: unformatFunc
}).trigger("reloadGrid");
});