1

Map データ構造を表す ExtJs 4 のグリッドを設計しています。グリッドのキー列用のカスタム セル エディターがあります。キーはすべてのキーの中で一意でなければならないという事実を強制したいと思います。どうすればこれを行うことができますか?

現時点では、ユーザーが送信したキー値が dataStore の値と比較して一意であるかどうかをチェックするカスタム バリデーターを備えた特別なテキスト フィールド エディターをセットアップしようとしています。残念ながら、これは dataStore が「現在の」レコードが何であるかを認識していないため、重複をチェックするときにどのレコードを除外するかを認識していないという問題に遭遇します。

^紛らわしいですよね?だからこそ、私のやり方は間違っていると思います。

4

1 に答える 1

1

それは非常に良い質問であり、私はあなたがしていることとほとんど同じことをすることになりました。現在のレコードを処理してルックアップから除外できるようにするために、vtype検証関数に次のようなものを追加しました。

unique: function (val, field) {
  // If field has not been changed - don't care about anything else
  if (field.originalValue === undefined || val === field.originalValue) {
    // _trace('unique - original value has not changed'); 
    return true;
  }

  if (!field.isDirty()) {
    // _trace('unique - field is not dirty'); 
    return true;
  }

  // Check you store here...
},
uniqueText: 'Duplicate'

originalValueもう 1 つ注意してください - ダイアログで同じバリデーターを使用しようとする場合 (グリッド行エディターとは対照的に) -常に適切に設定されないため、さらにチェックを追加する必要があります (少なくとも 4.0.7でこれを行う必要がありました私のアプリケーション)。

于 2012-08-01T12:18:52.830 に答える