0

次の方法で、データグリッドの特定の行を無効にしたい:

1) 1 つの行を別の色で強調表示する

2)その行のチェックボックス/ラジオボタンの選択を無効にします

3) その行にあるセルのインライン編集を無効にしますが、他の行のインライン編集は許可します。

お願いします。アイデアがあれば助けてください。

4

2 に答える 2

1

次の関数の組み合わせを使用して、ものを抽出できます

// as example, one of youre items uses identifier:'id' and 'id:10'
var identifier = '10'; 
var item = store._arrayOfTopLevelItems[10]; // you probably have this allready
var index = grid.getItemIndex(item);   // find which index it has in grid
var rowNode = grid.getRowNode(index);  // find a DOM element at that index

<div>asがあり、rowNodeセルを含むテーブルが含まれています(列の数だけ)。その設定background-color

チェックボックスのことで、どのセルインデックスがあるかがわかります

var cellNode = dojo.query('td[idx='+cellIndex+']', rowNode)[0];
// with cellType Bool, td contains an input
var checkbox = cellNode.firstChild;

編集は本当に別のストアです..フォーカスハンドラーで機能します。それをオーバーライドするには、編集可能にしたくない行の配列のように保持する必要があります (ただし、セル. editable == true)。

function inarray(arr, testVal) {
    return dojo.some(arr, function(val) { return val == testVal }).length > 0
}
grid.setNonEditable = function (rowIndex) {
    if(! inarray(this.nonEditable,rowIndex) ) 
           this.nonEditable.push(rowIndex);
}
grid.setEditable = function (rowIndex) {
    this.nonEditable = dojo.filter(this.nonEditable, function(val) { return val != rowIndex; });
}
var originalApply = grid.onApplyEdit
grid.onApplyEdit = function(inValue, inRowIndex) {
   if(! inarray(this.nonEditable,inRowIndex) )
        originalApply.apply(this, arguments);
}
于 2012-08-29T17:43:40.763 に答える
0

dojox.grid.DataGrid を使用している場合は、canEdit 関数を使用して、行の編集またはセルの編集を無効にすることができます。

grid = new dojox.grid.DataGrid({
    canEdit: function(inCell, inRowIndex) {
        var item = this.getItem(inRowIndex);
        var value = this.store.getValue(item, "name");
        return value == null; // allow edit if value is null
    }
}
于 2014-04-30T09:04:48.070 に答える