Kendoui DataSource odata $扩展无法正常工作

时间:2013-07-21 02:42:50

标签: kendo-ui datasource odata

我有一个移动列表视图绑定到指向odata服务的kendoui数据源。我在数据源配置中有一个$ expand提示来扩展“Claim”对象的“Patient”属性,但是查看odata查询的url,kendoui数据源不会在查询字符串中生成$ expand代码。如何让kendoui数据源在查询字符串上生成正确的$ expand指令?

OData query string genereated: http://localhost:1839/OData.svc/Claim?$callback=jQuery20207924230222124606_1374374358450&%24inlinecount=allpages&%24format=json&%24top=10

<script>
    $(function () {
        var app = new kendo.mobile.Application(document.body, {
            transition: 'slide'
        });

        OData.defaultHttpClient.enableJsonpCallback = true;


        var data = new kendo.data.DataSource({
            type: "odata", // specifies data protocol
            pageSize: 10,  // limits result set
            transport: {
                read: "http://localhost:1839/OData.svc/Claim",
                dataType: "json",
                data: {
                    $expand: "Patient"
                }
            },
            schema: {
                model: {id: "Id"},
                data: function (data) {
                    return data.d.results;
                },
                total: function (data) {
                    return data.d.__count;

                }
            },
            pageSize: 10,
            serverPaging: true,
            serverFiltering: true,
            serverSorting: true
        });

        $("#lst").kendoMobileListView(
        {
            template: "<strong>${data.ClaimNumber}</strong><br/>",
            filterable: {
                field: "ClaimNumber",
                operator: "contains"
            },
            dataSource: data
        });
    });
</script>

3 个答案:

答案 0 :(得分:3)

数据和$ expand属于读取对象。你的答案越来越近了。

var dataSource = new kendo.data.HierarchicalDataSource({
    type: "odata",
    transport: {
        read: {
            // See http://www.odata.org/documentation/odata-v2-documentation/uri-conventions/ for OData URI conventions
            // OData: ~/api/Users?$inlinecount=allpages&top=2
            // OData: ~/api/Users?$inlinecount=allpages - includes odata.count
            // OData: inline filtering: ~/api/Users?$filter=USERNAME eq 'asgro'
            // to include hierarchical data, use the OData /api/UserGroups?$expand=USER
            // To reduce the payload sice, the query ~/api/UserGroups will only include the USERGROUP entities, and not any navigation property content


            url: "/api/UserGroups",
            data: {
                $expand: "USERS"
            },
            dataType: "json"                                // the default result type is JSONP, but WebAPI does not support JSONP
        },

答案 1 :(得分:1)

我在transport / read / url中添加了此权限,而不是单独的数据:

    var dataSource = new kendo.data.HierarchicalDataSource({
        type: "odata",
        transport: {
            read: {
                // See http://www.odata.org/documentation/odata-v2-documentation/uri-conventions/ for OData URI conventions
                // OData: ~/api/Users?$inlinecount=allpages&top=2
                // OData: ~/api/Users?$inlinecount=allpages - includes odata.count
                // OData: inline filtering: ~/api/Users?$filter=USERNAME eq 'asgro'
                // to include hierarchical data, use the OData /api/UserGroups?$expand=USER
                // To reduce the payload sice, the query ~/api/UserGroups will only include the USERGROUP entities, and not any navigation property content


                url: "/api/UserGroups?$expand=USERS",
                dataType: "json"                                // the default result type is JSONP, but WebAPI does not support JSONP
            },
.
.
.

答案 2 :(得分:0)

read: {
    url: "http://localhost:1839/OData.svc/Claim",
    dataType: "json",
    data: {
        $expand: "Patient"
    }
}

仅数据读取选项。