Javascript 外部存储返回错误记录
我有一个ExtJS存储,它作为一个代码列表工作,并包含带有标签和值的记录。此外,我还有一个网格列,其列渲染器使用存储的方法findRecord(field,value)查找存储中的值,然后显示相应的标签:Javascript 外部存储返回错误记录,javascript,extjs,Javascript,Extjs,我有一个ExtJS存储,它作为一个代码列表工作,并包含带有标签和值的记录。此外,我还有一个网格列,其列渲染器使用存储的方法findRecord(field,value)查找存储中的值,然后显示相应的标签: renderer: function(value, metaData, record, rowIndex, colIndex, store, view){ var columnName = view.panel.columns[colIndex].name; var display =
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;
}
但是,在某些情况下,网格中会显示错误的标签。例如,如果我有两条记录(9,‘标签A’)和(99,‘标签B’),网格将显示原始值为9的‘标签B’
我的第一个猜测是,该值是逐令牌查找的,并且只要在记录的值中找到搜索令牌,就返回标签,不管它是否完全匹配(即,99中的前9个将满足搜索过程,以便返回相应的记录)。但是,将同一存储分配给一个组合框,该组合框显示相同值的正确标签
这种行为让我感到困惑,我想知道为什么列渲染器无法查找正确的标签,而组合框却无法。更重要的是,我想解决这个问题,但不知道什么可能导致问题。关于Ext.Store,我缺少什么可以解释这种奇怪的行为吗?不确定您使用的是哪个版本的ExtJS,但第六个参数是
exactMatch
,因为至少是ExtJS 4.2。如果将该参数设置为true,它应该可以工作
var rec = cl.findRecord("value", value, undefined, undefined, undefined, true);
非常感谢。几分钟前我自己刚找到的,也许我应该更简洁地阅读文档。。。