来自asp.net mvc控制器的AngularJS绑定错误的KendoUI Grid。成功不是功能错误

时间:2017-08-08 15:27:48

标签: angularjs asp.net-mvc kendo-ui-grid

我尝试在asp.new mvc应用程序中使用AngndoJS的KendoUI网格执行简单任务。它是从mvc控制器到网格的绑定数据。

asp.net mvc控制器方法:

public ActionResult GetCdcReport()
{
    var testJson =
        @"{ProductID:'1',ProductName:'Chai',UnitPrice:'18',UnitsInStock:'39',Discontinued:'false'}";

    var json = JObject.Parse(testJson);
    return new JSONNetResult(json);
}

angularjs服务功能:

    function getImportResultReport() {
        return httpPost('getCdcReport');
    }

数据绑定组件的代码:

$scope.mainGridOptions = {
    columns: [
        { field: "ProductID", title: "ID" },
        { field: "ProductName", title: "Product Name" },
        { command: [{ template: "<button class='k-button' ng-click='showDetails(dataItem)'>Show details</button>" }] },
    ],
    pageable: true,
    dataSource: {
        pageSize: 5,
        transport: {
            read: function (e) {
                dataservice.getImportResultReport().
                success(function (data) {
                        e.success(data);
                    }).
                error(function (data, status) {
                        alert('something went wrong');
                    console.log(status);
                });
            }
        }
    }
};

我看到调用了服务器方法,但在控制台中我遇到了以下客户端错误:

  

dataservice.getImportResultReport(...)。success不是函数

在类似的问题中,我读到了:

  

$ http遗留承诺方法成功与错误   弃用。请改用标准方法。

我替换了以下的绑定代码:

$scope.mainGridOptions = {
    columns: [
        { field: "ProductID", title: "ID" },
        { field: "ProductName", title: "Product Name" },
        { command: [{ template: "<button class='k-button' ng-click='showDetails(dataItem)'>Show details</button>" }] },
    ],
    pageable: true,
    dataSource: {
        pageSize: 5,
        transport: {
            read: function (e) {
                dataservice.getImportResultReport().
                then(function (data) {
                        return data;
                    });
            }
        }
    }
};

之后我没有收到此错误,但网格没有数据。

我也试过这样做:

vm.mainGridOptions = {
            columns: [
                { field: "ProductID", title: "ID" },
                { field: "ProductName", title: "Product Name" },
                { command: [{ template: "<button class='k-button' ng-click='showDetails(dataItem)'>Show details</button>" }] },
            ],
            pageable: true
        };

$scope.mainGridOptions.DataSource = dataservice.getImportResultReport();

它也不起作用。

我做错了什么?

来自telerik网站的例子。如果绑定逻辑在dataservice.getImportResultReport()上重新$http.jsonp('URL FROM EXAMPLE'),则可以正常工作。

0 个答案:

没有答案