dojox データ グリッドで選択セルの編集を無効または有効にする方法
データ グリッドに 2 つの列 (A、B) があるとします。列 A の値に基づいて B の列の値を編集できるようにします。DOJO バージョンに固有のスタック オーバーフローの解決策を 1 つ確認しました。上記の目的を達成できる API があるかどうかを知りたいです。
dojox データ グリッドで選択セルの編集を無効または有効にする方法
データ グリッドに 2 つの列 (A、B) があるとします。列 A の値に基づいて B の列の値を編集できるようにします。DOJO バージョンに固有のスタック オーバーフローの解決策を 1 つ確認しました。上記の目的を達成できる API があるかどうかを知りたいです。
私の好みの方法は、
canEdit: function(inCell, inRowIndex)
DataGridのメソッド。それから、あなたはアイテムを得ることができます:
this.getItem(inRowIndex)
次に、編集可能かどうかを判断し、true/falseを返します。
ただし、これは列の編集可能なフラグを上書きするため、必要に応じてそれを使用して何かを行う必要があります。
そのような API はありません。最近も同様の要件がありましたが、これを実装する方法は次のとおりです。
1) グリッドの [フィールド] セクションで作成したため、最初は列 B が編集可能です。 2) onRowClick を使用して、行のレンダリングをキャプチャします。このようなことをする必要があります
dojo.connect(grid, "onRowClick", grid, function(evt){
var idx = evt.rowIndex,
item = this.getItem(idx);
// get a value out of the item
msname = this.store.getValue(item, "msname");
if(msname != null &U& (trim(msname) == trim(offsetName))) {
dojox.grid.cells._Base.prototype.format(idx, item);
}
});
次のメソッドは、必要な列のインライン編集を禁止します。行インデックスと列インデックスを次の関数に渡します。
dojox.grid.cells._Base.prototype.format = function(inRowIndex, inItem){
var f, i=grid.edit.info, d=this.get ? this.get(inRowIndex, inItem) : (this.value || this.defaultValue);
d = (d && d.replace && grid.escapeHTMLInData) ? d.replace(/&/g, '&').replace(/</g, '<') : d;
//Check inRowIndex and inItem to determine whether to be editable for this row here.
if(this.editable && (this.alwaysEditing || (i.rowIndex==inRowIndex && i.cell==this))){
return this.formatEditing(d, inRowIndex);
}else{
return this._defaultFormat(d, [d, inRowIndex, this]);
}
}
それが役立つことを願っています。おそらく、jsfiddle を追加して、修正を試みることができます。