J'utilise Infragistics igGrid où j'ai plusieurs clés primaires:infragistics Mise à jour igGrid avec primaryKeys composites dans jQuery
$("#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
}
]
});
La grille aura pas de données au départ. Lorsque l'utilisateur clique sur le bouton Ajouter une ligne, il appelle une autre fonction pour ajouter une nouvelle ligne dans la grille. Voici le code pour ajouter une ligne qui fonctionne bien:
//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);
};
Le problème vient lorsque j'essaie de mettre à jour la ligne de la grille. Comment puis-je passer les clés primaires. Si j'ai une clé primaire alors ce code fonctionne bien. Je passe plusieurs clés comme { "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);
}
Je ne sais pas si c'est la bonne façon. Toute suggestion de ce que je fais mal ici.
Je sais que cette option est la dernière solution mais je m'attendais à une façon plus élégante de le faire. En tout cas merci pour votre suggestion. J'attendrai d'autres commentaires à ce sujet. – sarojanand