我已经设置了一个treegrid(网格相同(,以通过其datamanager通过ASP.NET WebAPI获取数据:
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完美工作。
我手动管理它,因为它根本不是从datamanager中调用它的,并且无论如何我都想管理TreeGrid中的记录的更新。
问题与删除有关,当我单击TreeGrid中的"上下文菜单"中的delete时,datamanager调用了。
它呼叫以下URL:
http://localhost:50604/API/myrecords?categoryID=15/undefined
显然,我得到 405(不允许的方法(
问题由打破静止架构的类别参数给出,并且datamanager无法理解有一个参数。
可能的解决方案可能是将此参数作为邮政变量发送,但DataManager无法做到。
有人知道如何解决它吗?这是现实世界应用中的常见情况。
在使用ejdatamanger填充树网格数据时,将使用内置帖子(insert(,put(update(,删除requestType处理CRUD操作,而与Crud URL无关。因此,无需绑定"删除"以删除记录。
和,在提供的代码示例中,参数在URL中传递以获取数据,因此报告的问题发生。使用Ejquery的AddParams方法,我们可以在URL中传递参数。您可以找到使用树网格加载事件传递参数的代码示例,并且使用DataManager在服务器端检索参数。
[html]
var dataManager = ej.DataManager({
url: "api/Values",
adaptor: new ej.WebApiAdaptor()
});
$("#treeGridContainer").ejTreeGrid({
load: function (args) {
// to pass parameter on load time
args.model.query.addParams("keyId", 48);
},
});
[controller]
public object Get()
{
var queryString = HttpContext.Current.Request.QueryString;
// here we can get the parameter during load time
int num = Convert.ToInt32(queryString["keyId"]);
//..
return new {Items = DataList, Count = DataList.Count() };
}
您可以在此处找到示例以供您参考。
问:
SyncFusion Team