次の方法で、データグリッドの特定の行を無効にしたい:
1) 1 つの行を別の色で強調表示する
2)その行のチェックボックス/ラジオボタンの選択を無効にします
3) その行にあるセルのインライン編集を無効にしますが、他の行のインライン編集は許可します。
お願いします。アイデアがあれば助けてください。
次の方法で、データグリッドの特定の行を無効にしたい:
1) 1 つの行を別の色で強調表示する
2)その行のチェックボックス/ラジオボタンの選択を無効にします
3) その行にあるセルのインライン編集を無効にしますが、他の行のインライン編集は許可します。
お願いします。アイデアがあれば助けてください。
次の関数の組み合わせを使用して、ものを抽出できます
// 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);
}
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
}
}