2017-06-14 17 views
-1

私はコードリストとして機能し、属性ラベルのレコードを含むExtJS Storeを持っています。特定のケースでは、しかしExt.Storeが間違ったレコードを返す

renderer: function(value, metaData, record, rowIndex, colIndex, store, view){ 
    var columnName = view.panel.columns[colIndex].name; 
    var display = value; 
    if(columnName){ 
    var clString = "cl_t_cl_" + columnName; 
    var cl = Ext.getStore(clString); 
    if(cl){ 
     var rec = cl.findRecord("value", value); 
     display = rec ? rec.get("label") : value; 
    } 
    } else if(record.get("label") !== undefined) { 
    display = record.get("label"); 
    } 
    return display; 
} 

:また、私は、その列のレンダラー使用しています店のメソッドfindRecord(フィールド、値)は、店舗内の値を検索し、対応するラベルを表示するグリッド列を持っています間違ったラベルがグリッドに表示されます。たとえば、2つのレコード(9、 'ラベルA')と(99、 'ラベルB')がある場合、グリッドは生の値9の 'ラベルB'を表示します。

私の最初の推測では、トークンによってトークンで検索され、ラベルが正確に一致するかどうかに関係なく、検索トークンがレコードの値に見つかるとすぐにラベルが返される(つまり、99の最初の9文字が検索手順を満たして対応するレコードを返します)。ただし、同じ値の正しいラベルを示すコンボボックスには同じストアが割り当てられます。

この動作は混乱しています。なぜ、コンボボックスが正しく表示されないのはなぜですか。ずっと私はこの問題を修正したいが、何が問題を引き起こすか分からない。この変な振る舞いを説明するExt.Storeについて私が見逃していることはありますか?

答えて

0

お使いのExtJSのバージョンを確認しますが、findRecord第6パラメータは、少なくともExtJSに4.2以降exactMatchではありません。このパラメータをtrueに設定すると、それが機能するはずです。

var rec = cl.findRecord("value", value, undefined, undefined, undefined, true); 
+0

ありがとうございます!私はちょうど数分前にそれを見つけました、多分私は文書をより簡潔に読むべきでした... – TobsenB

関連する問題