Первичный ключ Infragistics Jquery Grid

Я пытаюсь сделать выбор строки в своей сетке, но борюсь либо с настройкой, либо с получением значений ключей данных, поскольку я не могу найти никакой документации по ней.

$("#divGrid").igGrid({
            columns: [
                { headerText: "@Manage.gridColumnEmployeeNumber", key: "EmployeeNumber" },
            ],
            dataKeyFields: "EmployeeNumber",  //Is this how you set the dataKeys?
            autoGenerateColumns: false,
            dataSource: jsonp,
            features: [
                {
                    name: "Selection",
                    rowSelectionChanging: rowSelectionChanging
                }
            ]
        });
    });

Это вообще не работает. Как мне получить доступ к моему ключу данных (primaryKey) в этом разделе кода?

    function rowSelectionChanging(evt, ui) {
        if (confirm) {
            var rows = ui.getSelectedRows();
            var selectedRow = rows.getItem(0);
            var selectedDataKey = selectedRow.get_dataKey();

            alert(selectedDataKey);
        } else {
            return false;
        }
    }

person Boone    schedule 20.08.2012    source источник


Ответы (2)


[...] dataKeyFields: "EmployeeNumber", // Это то, как вы устанавливаете dataKeys? [...]

Достаточно близко. На самом деле это «primaryKey»:

[...]
primaryKey: "НомерСотрудника",
[...]

И для второй части, я думаю, это не очевидно сразу, однако строка, которую вы передаете в качестве аргумента, является фактическим выбираемым элементом DOM TR, и вы можете (как предполагает ваша текущая настройка) просто выбрать ключ из его ячеек, например так:

var rowKey = $(ui.row.element).children().eq(0).text(); //may need to parse if int

Примечание. Метод eq() принимает нулевой индекс, и с точки зрения структуры дочерними элементами строки являются ячейки. В вашем случае столбец первичного ключа является первым (и единственным) и поэтому имеет индекс 0.

Другой подход, который я считаю более удобным для программирования, заключается в том, чтобы получить ключ прямо из источника данных (более понятный для чтения и не требующий синтаксического анализа):

var rowKey = ui.owner.grid.dataSource.dataView()[ui.row.index].EmployeeNumber;

Примечание. «Владелец» — это фактический виджет, отвечающий за событие (Выбор), и он имеет ссылку на вашу «сетку», откуда вы можете получить доступ к источнику данных. Чтобы получить записи, используйте «.data()» или «.dataView()» — последний содержит только фактические видимые строки, на которых основан индекс, и должен использоваться, если включены какие-либо дополнительные функции (разбиение по страницам, сортировка, фильтрация). ..).

Вот страница документации, которая (внизу) описывает, что предоставляют события выбора — http://help.infragistics.com/NetAdvantage/jQuery/2012.1/CLR4.0?page=igGrid_Selection_Overview.html

А вот полный справочник по API: http://help.infragistics.com/jQuery/2012.1/ui.iggridselection#events — отсюда вы можете копаться в API любой сетки/функции сетки/источника данных, а для событий есть образцы фрагментов со всеми перечисленными полезными параметрами.

P.S. Если целью не является управление выбором пользователей, рассмотрите возможность использования события «-ed», как в «rowSelectionChanged» — доступные параметры идентичны. Разница в том, что '-ing' срабатывает в середине выбора и блокирует пользовательский интерфейс, что может привести к не очень отзывчивому приложению, если вы добавите более сложную логику.

person Damyan Petev    schedule 21.08.2012
comment
Также здесь приведен пример API выбора, который может оказаться полезным. - person Damyan Petev; 21.08.2012

попробуйте var rowKey = ui.owner.grid.options.primaryKeyValue;

person user1829896    schedule 20.08.2015