9
jQuery("#CustomerDetailsGrid").jqGrid({
    //ignore other properties
    colModel: [
    { name: 'AccountNumber', index: 'AccountNumber', hidden: true, viewable: true }
],
    viewrecords: true        
});

我需要在网格视图中隐藏“帐号”列,但在表单视图中显示它。(不编辑表单

4

4 回答 4

13

最好的方法是只添加 editrules:{editithidden:true} 选项。

colModel: [{ name: 'AccountNumber', index: 'AccountNumber', hidden: true, viewable: true,editrules:{edithidden:true} }]
于 2011-07-28T13:05:26.897 回答
11

如果将创建视图对话框,它将填充有关放置在行中的每一列的信息。行的 id(<tr>元素的 id)将由前缀“trv_”和相应列的名称构成。重要的是要理解,在表单中将填充有关所有列的信息,包括隐藏列,但隐藏列<tr>的元素将被隐藏(有 style="display: none;")。jQuery.show()因此,为了使信息可见,调用相应<tr>元素的函数就足够了。

我准备了一个小演示来演示这一点。在演示id列中是隐藏的,但我使信息在 View 选项的内部beforeShowFormafterclickPgButtons事件处理程序中可见:

$("#list").jqGrid('navGrid','#pager',
                  {add:false,edit:false,del:false,view:true,search:false},
                  {}, // edit options
                  {}, // add options
                  {}, // del options
                  {}, // search options
                  {   // vew options
                      beforeShowForm: function(form) {
                          $("tr#trv_id",form[0]).show();
                      },
                      afterclickPgButtons: function(whichbutton, form, rowid) {
                          $("tr#trv_id",form[0]).show();
                      }
                  });
于 2011-01-10T21:12:34.253 回答
3

为了跟进J_的建议,应用以下方法可以解决问题:

editoptions: { dataInit: function(element) { $(element).attr("readonly", "readonly"); } }

场景#1

  • 字段必须在网格中可见
  • 字段必须在表单中可见
  • 字段必须是只读的

解决方案

colModel:[
   {name:'providerUserId',index:'providerUserId', width:100,editable:true, editrules:{required:true}, editoptions:{ dataInit: function(element) { jq(element).attr("readonly", "readonly"); } }},
],

providerUserId 在网格中可见,并且在编辑表单时可见。但是您不能编辑内容。


场景#2

  • 字段不能在网格中可见
  • 字段必须在表单中可见
  • 字段必须是只读的

解决方案

colModel:[
    {name:'providerUserId',index:'providerUserId', width:100,editable:true, editrules:{required:true, edithidden:true}, hidden:true, editoptions:{ dataInit: function(element) { jq(element).attr("readonly", "readonly"); } }},
]

请注意,在这两种情况下,我都使用 jq 来引用 jquery,而不是通常的 $。在我的 HTML 中,我有以下脚本来修改 jQuery 使用的变量:

<script type="text/javascript">
    var jq = jQuery.noConflict();
</script>
于 2011-05-08T07:40:12.230 回答
1

隐藏网格列

jQuery("#GridId").jqGrid('hideCol','colName');
于 2012-12-14T09:02:38.617 回答