2015-04-23 53 views
0

對於使用複選框選擇內容的網格,我正在使用Dgrid選擇網格。但是,只有樹的子節點纔會顯示覆選框,因爲父級只是類別,不能被選中。以前我使用過編輯器插件,但它在清除選擇時產生了困難(具體地說,網格的「clearSelection」方法什麼也沒做)。我切換到選擇器插件,所以現在選擇和取消選擇行工作正常,但現在我似乎無法找出一種方法來隱藏某些行而不是其他人的複選框。根據行內容使DGrid選擇器顯示或隱藏

原始代碼

var columns = [ 
    editor({ 
     label: " ", 
     field: "itemSelected", 
     sortable: false, 
     width: 33, 
     canEdit: function(object) { 
      // only add checkboxes for child objects 
      return object.type === "child"; 
     } 
    }, "checkbox"), 
    tree({ 
     label: "Item", 
     field: "shortItemId", 
     width: 150, 
     shouldExpand: function() { 
      return 1; 
     } 
    }), 
    { 
     label: "Grouping Name", 
     field: "groupingName" 
    } 
]; 

var itemGrid = new SelectionGrid({ 
    store: itemStore, 
    style: { 
     width: '99%', 
     height: '99%' 
    }, 
    columns: columns, 
    sort: [{attribute: "shortItemId", descending: false}] 
}); 

我使用的編輯器來隱藏複選框「的Editon」參數,但只選擇插件有「已禁用」參數,它不會隱藏場在所有。

有沒有一種方法可以使用選擇器隱藏複選框,就像我對編輯器所做的那樣?

回答

2

看看dgrid/selector源代碼,似乎輸入總是被創建並添加到DOM,無論它是否被禁用。據推測,這是爲了讓它足夠靈活,可以隨時啓用和禁用複選框,而無需不斷重新創建DOM節點。雖然這是不可能防止這些節點被呈現時,有可能用CSS,隱藏它們由於小區節點被賦予一個類的格式field-{fieldName}(或在該特定情況下,field-itemSelected):

// JavaScript 
var columns = [ 
    selector({ 
     label: " ", 
     field: "itemSelected", 
     sortable: false, 
     width: 33, 
     // Disable any checkbox that is not of type "child" 
     disabled: function (item) { 
      return item.type !== 'child'; 
     } 
    }), 
    ... 
]; 

/* CSS */ 
.field-itemSelected input[disabled] { 
    display: none; 
} 
+0

謝謝。這工作完美。 – mja

相關問題