【发布时间】:2021-09-24 06:23:49
【问题描述】:
我正在使用 ExtJS 6(尽管据我所知它也适用于 7.4 版),并且我有一个带有 booleancolumn xtype 的网格。对于那个布尔列,我想使用过滤器列表选项。是的,我知道有一个布尔过滤器选项,但是我不喜欢它使用单选按钮的工作方式。我希望能够使用复选框选择是或否,但是我发现只有值为 true 的选项才有效。这是我的专栏配置:
{
header: 'Active'
, dataIndex: 'inactive'
, xtype: 'booleancolumn'
, trueText: 'No'
, falseText: 'Yes'
, filter:{
type: 'list',
options: [[true,"No"],[false, "Yes"]]
}
}
当排除 'options' 属性并让它从存储中获取数据时,这不起作用。查看代码后,我发现它采用“选项”配置并使用它作为数据创建自己的 Ext.Data.Store。在这里查看一个简单的示例,可以运行它会遇到相同的问题:
var teststore = new Ext.data.Store({
fields: [
'id',
'text'
],
data: [[true,"No"],[false, "Yes"]]
});
问题在于“false”布尔值已更改并被动态创建的通用 ID 替换。我发现问题在于以下行的“Ext.data.Model”的构造函数:
if (!(me.id = id = data[idProperty]) && id !== 0) {
如果该行的计算结果为 true,它将用生成的 id 替换 id。为了解决这个问题,我刚刚在 if 语句的末尾添加了“&& id !== false”,这就解决了这个问题。
我尚未对此进行全面测试,但逻辑似乎是合理的,并且看起来 '0' 的值发生了相同类型的问题,因此 ' && id !==0'。由于我们是从 sencha 论坛指导的,因此我想提出这一点,以防它对某人有所帮助。
【问题讨论】:
标签: extjs