0

我正在尝试将返回的数据从数据源绑定到网格,但问题是我的数据源函数没有被调用......

transactionHistoryGridDS: new kendo.data.DataSource({
    error: function () {
        alert("erroe")
    },
    complete: function () {
        alert("completed")
    },
    success: function () {
        alert("success");
    },
    transport: {
        read: {
            dataType: "json",
            type: 'POST',
            url: args.TransactionHistoryUrl,
            data: {
                id: function () {return vm.transactionHistoryParams.id },
                originBranch: function () {return vm.transactionHistoryParams.originBranch },
                take: function () {return vm.transactionHistoryParams.take },
                skip: function () {return vm.transactionHistoryParams.skip }
            }
        },
        schema: {
            parse: function (data) {
                alert("hey...")
                return data;
            },
            data: "data",
            total: "total",
        },
        pageSize: 20,
        serverPaging: false
    }
}),

当我通过下面的代码调用读取数据源时

 vm.transactionHistoryGridDS.read();

调用Ajax请求并成功从服务器返回数据,但未调用包括successanderrorcompleteand在内的函数parse,因此数据未绑定到网格。

4

1 回答 1

1

我可以看到一些需要修复的错误,然后您的网格才能工作。

首先,schema, pageSize,serverPaging在错误的缩进级别上,它应该与transport不在它内部的级别相同。

transport: {...},
schema: {...},
serverPaging: ...,
pageSize: ...

每个网格都应该有 dataSource 属性,读取将被自动调用并填充数据,您不需要将数据设置为网格或调用read()函数:

$('#grid').kendoGrid({
    dataSource: {
        transport: {
            read: {...}
        }
    }
});

在您的情况下,我假设 vm 是一个网格,因此您需要在下面设置dataSource:transactionHistoryGridDS,检查示例链接

如果您需要使用请求发送数据,请使用parameterMap

$('#grid').kendoGrid({
    resizable: true,
    filterable: true,
    sortable: true,
    pageable: {
        pageSize: 10,
        refresh: true,
        pageSizes: [5, 10, 20, 100, 500, 1000]
    },
    dataSource: {
        pageSize: 10,
        serverPaging: true,
        serverFiltering: true,
        transport: {
            read: {
                url: 'url',
                type: 'POST',
                dataType: 'JSON',
                contentType: 'application/json'
            },
            update: {...},
            destroy: {...},
            parameterMap(data, type) {
                switch (type) {
                    case 'read':
                        let request = {};
                        request.page = data.page - 1;
                        request.page_size = data.pageSize;
                        request.sort = data.sort;
                        request.filter = data.filter;

                        return JSON.stringify(request);
                    case 'destroy':
                        return kendo.stringify(data);
                    default:
                        break;
                }
            }
        }
    }
});

从 kendodataSource请求中获取数据有两种方法,第一种complete是在请求和响应完成时调用的函数。第二个是对每个数据源请求的承诺。

第一个例子:完成调用

第二个例子:promise call

于 2020-03-28T12:06:05.397 回答