Nano Hash - криптовалюты, майнинг, программирование

Как установить «id» элемента ComboBox в другой столбец в сетке при выборе?

У нас есть магазин с полями в модели следующим образом:

fields: ["name_id", "name"]

У нас есть сетка с такими столбцами:

me.columns = [
    {
       header:"Name", 
       dataIndex:"name_id", 
       hide: true
    },
    {
       header:"Name", 
       dataIndex:"name", 
       xtype: 'combocolumn',
       editor: {
          xtype:'NameCombo',
          dataIndex:"name_id"
       },
       filter: true
    },
]

Где xtype NameCombo определяется как:

Ext.define("NameCombo",{
    extend: "Ext.form.ComboBox",

    triggerAction: 'all',
    displayField: 'name', 
    valueField: 'id',
    lazyRender: true,
    editable: false,
    store: "Store",
    alias: ['widget.NameCombo'],
});

Кто может сказать, как я могу установить «id» элемента ComboBox в другой столбец, который я установил в конфигурации с помощью «dataIndex: «name_id»» внутри NameCombo?

02.10.2012

Ответы:


1

У меня есть одно решение.

Если мы изменим виджет NameCombo, как показано ниже, мы можем установить «id» в другое поле записи.

Ext.define("NameCombo",{
    extend: "Ext.form.ComboBox",

    displayField: 'name', 
    valueField: 'name',
    keyField: 'id',

    triggerAction: 'all',
    lazyRender: true,
    editable: false,
    store: "Store",
    alias: ['widget.NameCombo'],

    initComponent: function(){
        var me = this;

        me.listeners = {
            select: me.itemChanged
        };

        this.callParent();
    },

    itemChanged: function(combo, records, eOpts)
    {
        var me = this;

        Ext.Array.each(records, function(record) {
            if (me.dataIndex) {
                var grid = me.scope;
                var sm = grid.getSelectionModel();
                var lastRow = sm.getLastSelected();                 
                var columns = me.scope.columns,
                    i, columnsLength, column;           
                var id = record.data[me.keyField];

                lastRow.set(me.dataIndex,id);

                //TODO: Is there any simple way to update the value in the column of the grid?
                for (i = 0, columnsLength = columns.length; i < columnsLength; i++) {
                    column = columns[i];
                    if (column.dataIndex === me.dataIndex) {
                        column.getEditor().setValue(id);
                    }
                }
            }
        })

});

Есть ли еще лучшее решение?

04.10.2012
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..