kendo Datasource返回自定义值

时间:2013-05-15 08:58:02

标签: kendo-ui kendo-grid

我有一个这样的远程数据源,

var datasource = new kendo.data.DataSource({
    autoSync: false,
    batch: true,
    transport: {
        read: {
            url: "some_url",
            dataType: "json"
        }
    },
    serverFiltering: true,
    serverGrouping: true,
    serverPaging: false,
    page: 1,
    pageSize: 10,
    schema: {
        data: "results",
        total: "total",
        model: {
            id: "id"
        }
    }    
});

我想从服务器端获得一个额外的值,就像这样。

    $response = array(
        'results' => $product_alerts,
        'total'   => $total,
        'total_approved_products'  => 27
    );
    echo json_encode($response);
    exit;   

无论如何,我可以在ClientSide中获得total_approved_products的价值吗?

非常感谢

2 个答案:

答案 0 :(得分:4)

schema定义中添加parse函数,您可以在其中提取total_approved_products以及您想要的任何内容。例如:

schema         : {
    data : "results",
    total: "total",
    model: {
        id: "id"
    },
    parse: function (d) {
        // Get total_approved_products and display alert.
        alert(d.total_approved_products);
        // Return data in order to be included in the `DataSource.data`
        return d;
    }
}

答案 1 :(得分:2)

@ OnaBai解决方案的替代方案如下。这两种解决方案都不完美,但是如果你已经实现了read / update / create / delete,那么在解析时拾取额外的对象是危险的,它们的响应对象也会进行解析,你的total_approved_products很可能不存在。我建议在数据源读取时使用完整事件。

read: {
                    dataType: "json",
                    type: "POST",
                    contentType: "application/json; charset=utf-8",
                    url: _op.serviceBaseUrl + "ReadX",
                    complete: function (jqXhr, textStatus) {
                            var result = jQuery.parseJSON(jqXhr.responseText);
                            alert(result.d.total_approved_products);
                     }
        }