2012-07-31 201 views
0

我正在尋找一種方法來禁用編輯jqGrid行,其中isPosted列的值爲true。如何禁用jqgrid中發佈的行的內聯和表單編輯

使用格式化或雙擊行的格式和內聯編輯。 需要禁用各種編輯。 我在jqGrid loadcomplete中嘗試了下面的代碼。

這不會禁用表單編輯。同時雙擊已發佈的行顯示保存和取消按鈕(所有列都處於只讀模式)。

如何禁用發佈行的所有類型的行編輯? jqGrid從遠程jqson數據填充。

loadCompete: function() { 
    var 
     postedCol = getColumnIndexByName($grid, 'isPosted'), 
     cRows = $grid[0].rows.length, 
     iRow, 
     row, 
     className, 
     isPosted, 
     cm = $grid.jqGrid('getGridParam', 'colModel'), 
     l, 
     iActionsCol = getColumnIndexByName($grid, '_actions'); 

    l = cm.length; 
    for (iRow = 0; iRow < cRows; iRow = iRow + 1) { 
      row = $grid[0].rows[iRow]; 
      className = row.className; 
      isPosted = false; 
      if ($.inArray('jqgrow', className.split(' ')) > 0) { 
       isPosted = $(row.cells[postedCol]).find(">div>input:checked").length > 0; 
       if (isPosted) { 
        if ($.inArray('jqgrid-postedrow', className.split(' ')) === -1) { 
         // todo: how to disable row editing and inline edit actions buttons. 
         // why those two lines do not disable 
         row.className = className + ' jqgrid-postedrow not-editable-row'; 
         $(row.cells[iActionsCol]).attr('editable', '0'); 
         $(row.cells[iActionsCol]).find(">div>div.ui-inline-del").hide(); 
         $(row.cells[iActionsCol]).find(">div>div.ui-inline-edit").hide(); 
        } 
       } 
      } 
     } 


css file: 

.jqgrid-postedrow 
{ 
    background-color: #FFFFD0; 
    background-image: none; 
} 

回答

0

@Andrus,那麼你可以在gridComplete或LoadComplete查看關於isPosted的價值,如果這是真的只是隱藏使用jQuery的編輯按鈕,你可以得到使用的開發工具右這些按鈕的id?

我有一個類似的要求,在一些行中,我不得不顯示編輯按鈕,在一些行中,我不得不根據jqgrid中的數據來隱藏它們。

所以我得到了那些使用開發人員工具的按鈕的id和loadComlete我檢查了所有行的值並隱藏了按鈕。我認爲這也可以爲你解決。並討論onSelectRow或onDblClickRow檢查isPosted的值,如果它是真的,你應該從你的函數返回false,否則用類似這樣的東西去正常編輯

jQuery(「#grid_id」)。editRow(id,properties) ;

相關問題