【问题标题】:Update infragistics igGrid with composite primaryKeys in jQuery使用 jQuery 中的复合主键更新基础架构 igGrid
【发布时间】:2017-05-02 20:24:44
【问题描述】:

我正在使用 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 Row 的代码,可以正常工作:

//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);
}

不知道这是否是正确的方法。任何建议我在这里做错了什么。

【问题讨论】:

    标签: jquery infragistics composite-primary-key ignite-ui iggrid


    【解决方案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/

    【讨论】:

    • 我知道这个选项是最后的解决方案,但我期待一些更优雅的方法。无论如何感谢您的建议。我会在上面等待一些其他的cmets。
    猜你喜欢
    • 1970-01-01
    • 2019-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-16
    相关资源
    最近更新 更多