当前位置: 首页 > 知识库问答 >
问题:

如何为网格中的每个单元格组合框编辑器定义不同的存储?

缪远
2023-03-14

我需要使用extjs 4.2.1实现一个网格。这个网格将有细胞编辑插件,在列中我将有许多文本字段和组合框。

我的问题是针对特定情况的。我有一列国家/地区(例如)。列编辑器将是带有国家/地区商店的组合框。下一个组合框将是同一行索引中所选国家/地区的城市。当我定义该商店时,此列将保留在同一商店中,我不知道这一点。

在第 0 行中,我选择美国,我必须在下一个组合中加载美国城市。在第 1 行中,我选择英国国家/地区,我必须加载英国城市,但如果返回第 0 行并选择美国城市,我想看到美国城市而不是英国城市。

如何为每个组合单元格定义不同的存储?

共有2个答案

越景天
2023-03-14

你必须像这样定义你的商店


Ext.define('MyApp.city.Store',{
   extend:'Ext.data.Store',
   //all properties which you need
});

您应该为城市单元格创建它的实例,例如


cityStore = Ext.create('MyApp.city.Store');
凤明朗
2023-03-14

您需要使用Ext.grid.plugin.CellEdting插件设置网格,启用网格单元格编辑。作为城市列编辑器,您将使用Ext.form.field.ComboBox。当用户在城市列的单元格上进入编辑模式时,您将过滤编辑器组合框的存储。您从编辑行记录中获得的过滤城市组合框所需的选定国家/地区的信息。

>

  • 首先,您必须使用Ext.form.field.ComboBox实例设置城市列编辑器,该实例将用于编辑:

    var comboCities = Ext.create('Ext.form.field.ComboBox', {
        store: storeCities,
        queryMode: 'local',
        displayField: 'name',
        valueField: 'name'
    });
    

    在网格列定义中:

    columns: [
       ...
       {
           header: 'City', 
           dataIndex: 'city', 
           editor: comboCities,                                        
        },
        ...
    ]
    

    其次,您必须为< code>beforeedit事件添加< code > ext . grid . plugin . cell editing 插件配置监听器。在这个监听器中,您可以决定从哪一列开始编辑。如果编辑列是城市列,你可以从编辑行中获得关于所选国家的记录信息,并过滤< code>comboCities商店。因此,在过滤商店将只有所选国家的城市。

    例如,网格配置中的插件配置应该是:

    {
        ...
        plugins: [
            Ext.create('Ext.grid.plugin.CellEditing', {
                clicksToEdit: 1,
                listeners: {
                    beforeedit: function(editor, e) {
                        // detrmine which column start editing
                        if (e.colIdx == 2) {
                            // get information about selected country from editin row record
                            var selectedCountry = e.record.get('country');
    
                            // filter store with cities
                            storeCities.clearFilter();
                            storeCities.filter('country', selectedCountry);
                        }
                    }
                }
            })
        ],
        ...
    }
    

    看看配置示例:https://fiddle.sencha.com/#fiddle/2bj

  •  类似资料:
    • 我正试图将每个列单元格具有不同值的组合框加载到我的JTable中,但我找不到任何实现这一点的方法。第一列的代码如下: 根据返回的系列名称,将执行一个新的查询,以获取每个系列的所有插曲。所以他们都是不同的。下面的图片让我们了解一下我的意思: 第二列现在应该包含根据第一列的系列的剧集,但它们都是相同的。

    • 问题内容: 嗨,我正在使用GXT 2.2.3创建可编辑网格。我创建了如下列: 现在,我想根据eventCombo框值的值,将checkinDate,CheckIntime,CheckOutDate和CheckOutTime列单元格设置为不可编辑或禁用。 如何在eventCombo的侦听器框中进行此操作。请提出建议。 我是GXT的新手。 更新 我尝试了下面的代码来禁用和启用单元格,但是它禁用了单元格

    • 我有一个剑道网格,根据第一列中的值,COR ABA编号可以编辑也可以不编辑。因此,如果NOC代码=='C01',则COR ABA编号可编辑,否则不可编辑。 我通过在列和编辑处理程序中添加编辑事件来实现这一点,在不允许编辑的情况下,禁用HTML输入Kendo创建。(在栅格定义中,我有可编辑(true)开始)。我希望通过在网格的数据绑定事件中执行逻辑检查来实现这一点。也就是说,在绑定所有数据后,迭代数

    • 我创建了一个带有自定义表格呈现和自定义单元格编辑器的JTable,它在图像中给出结果 我使用一个扩展JPanel的单独类创建了第一个表格单元格中显示的面板。并将表值添加为, 这是我的表格自定义类来创建这个表格, 我的问题是认为面板如我预期的那样显示,我不能在文本字段中键入或更改复选框或单击按钮。请告诉我如何解决这个问题。

    • 问题内容: 我想将jFileChooser设置为表的单个单元格的编辑器(不使用该表的整个列,因为将使用诸如comboBox等各种其他编辑器)。有什么建议或示例代码吗?(我已经在这里研究了这些样本,如何使用Oracle的表 问题答案: 该教程的做法是正确的。请参见此示例,该示例使用未经修饰的方法来调用实际的编辑器。取而代之的是,您将使用。 附录:要应用编辑器中的任何单元格单独,覆盖了所需的行和列

    • 问题内容: 我想使用jqGrid 双击 打开一个单元格编辑器,因此我的代码包括以下部分: 可以正常工作,但是当用户单击edit元素之外或按 ESC , TAB , ENTER 等时,我不知道如何(自动)关闭单元格编辑器。 问题答案: 问题是您尝试在不支持的双击上执行单元格编辑。您当前的代码不能工作,因为如果用户按,或键,,或将真的叫,但是这些方法测试是否内部参数。 为了展示如何解决该问题,我创建了