嘿所有人(我看着你奥列格),
我正在寻找类似于View表单的dataInit / editoptions / colModel选项的东西。
目前,我在jqGrid的几个列中返回一些加密数据,例如出生日期和SSN#。
然后,当用户选择编辑行时,我会解密数据,以便他们可以编辑解密的数据版本。
我使用的代码片段如下。
editoptions:{date:true,size:"35",dataInit:function(element) {
$.ajax({
url: "/server/borrowers.cfc?method=decryptString",
data: {"dataType":"dob","userId":jQuery('#borrowersGrid').jqGrid('getGridParam', 'selrow'),"encryptedValue":$(element).val().trim()},
method: "POST",
success: function(data) {
if (data.length > 1000) {
$(element).val("");
}
else {
$(element).val(data.trim());
}
}
});
$(element).datepicker({dateFormat: 'mm/dd/yy',changeMonth:'true',changeYear:'true',yearRange:"-120:+0"});
}}
此代码运行良好,但是,用户无法编辑此特定网格中的每一行。如果他们的权限不足以编辑行,则可以选择查看每行的数据。
不幸的是,在初始化View Form时,上面的代码段将不会被调用,我正在寻找类似于View Form的实现...
在jqGrid中为视图表格实施解密数据的AJAX调用的最佳方法是什么?
答案 0 :(得分:0)
好的,似乎jqGrid 3.6.3中唯一现有的可行解决方案是在导航器的viewoptions部分中使用beforeShowForm事件...
总之,将AJAX调用移到代码的这一部分,在jqGrid的定义下面。
请注意,有一些细微的变化... $(元素)的引用现在已经更改为视图表单的正确选择器,在我的情况下$(" #v_dob span") 。对于其他人来说,它将是$(" v_fieldName span")。
$("#borrowersGrid").navGrid('#borrowersPager', { //navigator options }, { //edit options }, { //add options }, { //delete options },
{beforeShowForm:function(form) {
$.ajax({
url: "/server/borrowers.cfc?method=decryptString",
data: {"dataType":"dob","userId":jQuery('#borrowersGrid').jqGrid('getGridParam', 'selrow'),"encryptedValue":$("#v_dob span").html()},
method: "POST",
success: function(data) {
if (data.length > 1000) {
$("#v_dob span").html("");
}
else {
$("#v_dob span").html(data.trim());
}
}
});
} // view options
);