2016-12-17 45 views
3

我使用的Infragistics igGrid其中I有多個主鍵:更新Infragistics的複合primaryKeys igGrid 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 
       } 
      ] 
     }); 

網格不會有任何數據最初。當用戶點擊添加行按鈕時,它會調用另一個函數在網格中添加新行。以下是添加行的代碼工作正常:

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

不知道這是否是正確的方法。任何建議我在這裏做錯了。

回答

3

當前igGrid不支持組合主鍵。 您可以將不同列中的值組合到一個字段中,並將其用作主鍵。 例如:

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

而且你可以基於複合值更新相關行:

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

您可以參考以下的jsfiddle這裏舉例: http://jsfiddle.net/2uf32hm3/2/

+0

我知道這個選項是最後的解決方案,但我期待一些更優雅的方式來做到這一點。無論如何感謝您的建議。我會等待其他一些評論。 – sarojanand

相關問題