Обновите инфрагистику igGrid с составными первичными ключами в jQuery

Я использую Infragistics igGrid, где у меня есть несколько первичных ключей:

 $("#grid_selector").igGrid({
            autoCommit: true,
            width: "100%",
            height: '500px',
            autoGenerateColumns: false,
            primaryKey: "TrackTrainId,ClassCode",
            columns: [
                { headerText: "Class Code", key: "ClassCode", dataType: "string" },
                { headerText: "Track/Train", key: "TrackTrainId", dataType: "string" },
                { headerText: "Cars", key: "NumberOfCars", dataType: "number" },
                { headerText: "Loads", key: "LoadEquipments", dataType: "string" },
                { headerText: "Empties", key: "EmptyEquipments", dataType: "string" },
                { headerText: "Tons", key: "Tons", dataType: "number" },
                { headerText: "Feet", key: "Feet", dataType: "number" },
            ],
            features: [
                {
                    name: "Updating",
                    editMode: "none",
                    enableAddRow: false,
                    enableDeleteRow: false
                }
            ]
        });

Первоначально в сетке не будет никаких данных. Когда пользователь нажимает кнопку «Добавить строку», он вызывает другую функцию для добавления новой строки в сетку. Ниже приведен код для добавления строки, который отлично работает:

//add rows to the grid to show selected equipments first time
AddRowForEquipmentSelectedGrid = function (track_info, ul_eq) {
var selctd = $('#' + ul_eq + ' li.ui-selected'),
    grid = $("#grid_selector");

var rowObj = {
    "TrackTrainId": track_info.TrackTrainId,
    "ClassCode": track_info.ClassCode,
    "NumberOfCars": track_info.NumberOfCars,
    "LoadEquipments": track_info.LoadEquipments,
    "EmptyEquipments": track_info.EmptyEquipments,
    "Tons": track_info.Tons,
    "Feet": track_info.Feet
};

grid.igGridUpdating("addRow", rowObj);
};

Проблема возникает, когда я пытаюсь обновить строку сетки. Как передать первичные ключи. Если у меня есть какой-либо первичный ключ, этот код работает нормально. Я передаю несколько ключей как { "TrackTrainId": track_id, "ClassCode": class_code }.

//on update equipment
UpdateEquipmentGrid = function (track_id, class_code, total_cars, txt_load, txt_emp, txt_tons, txt_feet) {
var rowObj = {
    "NumberOfCars": total_cars,
    "LoadEquipments": txt_load,
    "EmptyEquipments": txt_emp,
    "Tons": txt_tons,
    "Feet": txt_feet
};
$('#grid_selector').igGridUpdating("updateRow", { "TrackTrainId": track_id, "ClassCode": class_code }, rowObj);
}

Не знаю, правильный ли это путь. Любое предложение, что я делаю неправильно здесь.


person sarojanand    schedule 17.12.2016    source источник


Ответы (1)


В настоящее время igGrid не поддерживает составные первичные ключи. Вы можете объединить значения из разных столбцов в одно поле и использовать его в качестве первичного ключа. Например:

 rowObj.CompositeKey = rowObj.ClassCode + "|" + rowObj.TrackTrainId;

И вы можете обновить связанную строку на основе этого составного значения:

 $("#grid").igGridUpdating("updateRow", "another random string|some random string", { NumberOfCars: 1000 });

Вы можете обратиться к следующему примеру JSFiddle здесь: http://jsfiddle.net/2uf32hm3/2/

person Maya Kirova    schedule 20.12.2016
comment
Я знаю, что этот вариант является последним решением, но я ожидал более элегантного способа сделать это. В любом случае спасибо за ваше предложение. Буду ждать других комментариев по этому поводу. - person sarojanand; 30.12.2016