jqGrid查看表单DataInit

时间:2014-10-30 20:07:43

标签: jquery encryption jqgrid

嘿所有人(我看着你奥列格),

我正在寻找类似于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调用的最佳方法是什么?

1 个答案:

答案 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
);