在extjs网格中添加只有一行的组合框

Add combobox in extjs grid for only one row

本文关键字:一行 组合 网格 extjs 添加      更新时间:2023-09-26

我有一个extjs网格,显示来自存储的数据。最后一列总是空的,除了存储中的条目,其中标志is_deleted=0(只有一个条目将具有is_deleted=0)。我必须为这个条目显示一个包含值edit和delete的组合框。

我现有的网格代码如下:

Ext.define('TasoDesktop.view.taso.popups.accountComments.AccountCommentsGrid', {
extend: 'Ext.grid.GridPanel',
alias: 'widget.tasoAccountCommentsGrid',
title: 'Previous Comments',
initComponent: function () {
    this.store = 'AccountLevelComments';
    this.columns = [
        { header: 'Date Entered', dataIndex: 'modified_dt', flex: 0},
        { header: 'Comment', dataIndex: 'c_comment', flex: 0 },
        { header: 'Entered by', dataIndex: 'sid', flex: 0 },
        { header: 'Expiry Date', dataIndex: 'valid_until_dt', flex: 0 },
        { header: 'Action', flex: 0 }
    ];
    this.height = 400;
    this.width = 900;
    this.viewConfig = {
        stripeRows: true
    };
    this.autoScroll = true;
    this.callParent(arguments);
}
});

只有一个Action列(存储中is_deleted = 0)应该有组合框。如何根据存储值为其包含组合框?

任何列编辑器都是按列定义的,因此不能为列和行定义编辑器。可以做的是有条件地禁用对不符合条件的行进行编辑。

为此,监听beforeedit事件,如果条件不匹配,则从监听器返回false。

为header为Action的列添加xtype: 'checkcolumn',并为该列分配dataindex属性,您需要从存储中分配值