質問

dojox データグリッドの選択セルの編集を無効または有効にする方法、つまり

データ グリッドに 2 つの列 (A、B) があると想像してください。B の列の値を A 列の値に基づいて編集できるようにしたいと考えています。私は、DOJO バージョンに固有のスタック オーバーフローの解決策を 1 つ見てきました。上記の目的を達成できる API があるかどうか知りたいです。

役に立ちましたか?

解決

私の推奨する方法は、

canEdit: function(inCell, inRowIndex)

データグリッドのメソッド。そこから、アイテムを取得できます。

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, '&amp;').replace(/</g, '&lt;') : 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を追加することができ、それを修正することができます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top