Syncfusion TreeGrid 和 Grid with WebAPI 在删除时不起作用



我已经设置了一个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

最新更新