2009-11-02 174 views
53

有沒有什麼方法可以隱藏jqGrid表中的列,但在表格編輯器模式對話框中編輯行時,它顯示爲只讀狀態?jqGrid中的隱藏列

回答

38

我只是想擴大queen3的建議下,應用以下的伎倆:

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> 
+0

高超的解釋與情景..! +1 – 2012-01-24 09:30:03

21

您可以使用下面的代碼隱藏表列..

JQuery("tableName").hideCol("colName"); 

你也可以使用下面的代碼來再次顯示它。

JQuery("tableName").showCol("colName"); 

對於你的問題,你可以調用上的document.ready()的hideCol()代碼,您可以綁定在該對話框的編輯showCol()代碼/單擊事件。

+0

您還可能想在對應於編輯完成的事件中,或者在用戶/編輯器正在編輯時綁定hideCol()代碼。 – 2009-11-02 15:17:36

78

此功能內置於jqGrid中。

設置您的網格功能如下。

$('#myGrid').jqGrid({ 
    ... 
    colNames: ['Manager', 'Name', 'HiddenSalary'], 
    colModel: [    
       { name: 'Manager', editable: true }, 
       { name: 'Price', editable: true }, 
       { name: 'HiddenSalary', hidden: true , editable: true, 
        editrules: {edithidden:true} 
       } 
      ], 
    ... 
}; 

有可以應用,但這些基本設置會躲在經理在網格視圖的收入,而且將允許編輯被顯示在編輯表單當其他editrules。

+0

這就是我正在尋找的東西,除非我不希望它在編輯表單中可編輯。我想沒有辦法做到這一點。 – maxpower47 2009-11-17 12:32:06

+0

所以你希望它在編輯窗體中可見,但只讀? – 2009-11-17 16:42:08

+0

yep --------------- – maxpower47 2009-11-20 16:01:06

1

嘗試使用edithidden:真實,也做

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

還是看的jqGrid維基自定義編輯,您可以設置任意輸入類型,甚至標籤,我認爲。

7

這個線程是我猜想的很老,但萬一別人絆倒這個問題... 我不得不從表格的選定行中獲取一個值,但我不想顯示列排是從。我使用了hideCol,但是和Andy看起來很混亂的問題一樣。要修復它(稱之爲黑客攻擊),我只需重新設置網格的寬度即可。

jQuery(document).ready(function() { 

     jQuery("#ItemGrid").jqGrid({ 
       ..., 
       width: 700, 
       ... 
     }).hideCol('StoreId').setGridWidth(700) 

由於我的行寬度自動的,當我重置表的寬度將其重置列寬,但不包括隱藏的一個,所以它們填充在間隙中。

+1

與jqgrid的4.0版本完美結合。 – 2011-07-07 20:01:47

+0

嘗試[此方法](http://www.trirand.com/blog/?page_id=393/help/recall-and-set-column-widths/)用於事後調整列的大小。 – WEFX 2012-02-27 22:11:28

0

要隱藏網格列

jQuery("#validGrid").jqGrid('hideCol',str); 
0

這是一個有點老了,這個帖子。但這是我的代碼來顯示/隱藏列。我使用內置函數來顯示列並將它們標記出來。

顯示列顯示/隱藏列的功能。 #jqGrid是我的網格的名稱,columnChooser是jqGrid列選擇器。

function showHideColumns() { 
     $('#jqGrid').jqGrid('columnChooser', { 
      width: 250, 
      dialog_opts: { 
       modal: true, 
       minWidth: 250, 
       height: 300, 
       show: 'blind', 
       hide: 'explode', 
       dividerLocation: 0.5 
      } });