Я установил treeGrid (такая же сетка), чтобы получать данные через ASP.NET WebAPI с помощью их DataManager:
var categoryID=15;
var dataManager = ej.DataManager({
url: "/API/myrecords?categoryID=" + categoryID,
adaptor: new ej.WebApiAdaptor()
});
$("#treeGridContainer").ejTreeGrid({
dataSource: dataManager,
childMapping: "Children",
treeColumnIndex: 1,
isResponsive: true,
contextMenuSettings: {
showContextMenu: true,
contextMenuItems: ["add", "edit", "delete"]
},
contextMenuOpen: contextMenuOpen,
editSettings: { allowEditing: true, allowAdding: true, allowDeleting: true, mode: 'Normal', editMode: "rowEditing" },
columns: [
{ field: "RecordID", headerText: "ID", allowEditing: false, width: 20, isPrimaryKey: true },
{ field: "RecordName", headerText: "Name", editType: "stringedit" },
],
actionBegin: function (args) {
console.log('ActionBegin: ', args);
if (args.requestType === "add") {
//add new record, managed manually...
var parentID = 0;
if (args.level != 0) {
parentID = args.parentItem.TaxonomyID;
}
args.data.TaxonomyID = 0;
addNewRecord(domainID, parentID, args.data, args.model.selectedRowIndex);
}
}
});
GET работает отлично.
PUT работает нормально, так как я управляю им вручную, потому что он вообще не вызывается из DataManager, и в любом случае я хочу управлять обновлением записей в TreeGrid.
Проблема связана с DELETE, который вызывается DataManager, когда я нажимаю Удалить в контекстном меню над элементом в TreeGrid.
Звонит по следующему URL:
http://localhost:50604/API/myrecords?categoryID=15/undefined
и, очевидно, я получаю 405 (метод не разрешен)
Проблема связана с параметрами categoryID, которые нарушают схему RESTful, а DataManager не может понять, что параметр существует.
Возможным решением может быть отправка этого параметра в качестве переменной POST, но DataManager не может это сделать.
Кто-нибудь знает, как это решить? это обычный сценарий в реальных приложениях.