2011-06-30 1 views
0

だから、ExtJs 4 Grid Panelには2つの列があります。Ext 4 Grid Panelで新しい行のみを有効にするにはどうすればよいですか?

ONEは私がDataStoreをロードするとき、私はFIRSTをしたい、今すぐ数値列

{ 
    allowBlank: false, 
    header: 'Time', 
    dataIndex: 'tedPaidTime', 
    align: 'right', 
    field: { 
    xtype: 'numberfield', 
    allowBlank: false, 
    minValue: 0, 
    maxValue: 100000 
    }, 
    flex: 0.20, 
    selectOnFocus:true 
} 

カスタムレンダラ

Ext.ux.comboBoxRenderer = function(combo) { 
    return function(value) { 
     var idx = combo.store.find(combo.valueField, value); 
     var rec = combo.store.getAt(idx); 

     return (rec == null ? '<img src="/js/extjs4/resources/themes/images/default/grid/loading.gif" />' : rec.get(combo.displayField)); 
    }; 
} 

TWOComboBoxされています列は読み取り専用です。 ReadOnlyフラグを設定すると簡単です。

しかし、NEWレコードを保存するボタンがあり、その新しいレコードに読み取り専用フラグを設定しないようにします。

基本的に、一度列1を変更して保存すると、変更することはできません。新しいレコードが保存される前に変更することができます。

ここでのビジネスルールでは、古いレコードが間違っている場合は削除する必要があります。

ありがとうございました。

答えて

0

私はこれを自分で解決できました。

基本的に、私はselectionchangeイベントでコンボを記録しました。 次に、focusイベントで、ストアから必要なデータキーがあるかどうかを調べました。そうでない場合、私は新しい行を仮定し、以下を実行しました:

focus: function(combo) { 
      var cb = combo; 
      if(newTEDetailRecord) { 
       if(newTEDetailRecord.data["activityKey"] == "") { 
       console.log("newTEDetailRecord", newTEDetailRecord); 
       cb.setEditable(true); 
       cb.setReadOnly(false); 
       cb.focus(); 
       cb.selectText(); 
       } else { 
       cb.setReadOnly(true); 
       } 
      } 
     }, 
関連する問題