kendo-ui - MVVM 绑定(bind)到 Kendo Grid 非常慢?

标签 kendo-ui kendo-grid

我正在尝试将 ViewModel 绑定(bind)到 Kendo 数据源,而 Kendo 数据源又被赋予 Kendo 网格。此时没有什么太花哨的。

它可以工作,但是非常慢!我收到一条警报,通知我在 2 秒内收到了 json 数据(700 行),但随后需要大约 15 秒来更新 View 模型。

我做错了什么?

谢谢

    $(document).ready(function () {

        // create the viewmodel we use as the source for the list
        var viewModel = kendo.observable({
            items: [],
            total: function () {
                return this.get("items").length;
            }
        });

        var dataSource2 = new kendo.data.DataSource({
            data: viewModel,
            pageSize: 50
        });

        // create the grid
        $("#grid").kendoGrid({
            dataSource: dataSource2,
            height: 500,
            scrollable: {
                virtual: true
            },
            columns: [
                { field: "ID_ORDER", title: "ID", width: 80 },
                { field: "CREATION_DATE", title: "Creation Date" },
                { field: "STATUS", title: "STATUS", width: 80 },
                ** more columns (around 10) **
            ]
        });

        // pass this on to initialise
        APPS.View.Orders.Initialise(viewModel);

    });

然后在我的 typescript 中,我正在处理传入 viewModel 的初始化调用:

    module APP.View.Orders {

        export var _Scope: string = "Orders";
        var _viewModelOrders: any;

        export var Initialise = function (viewModelOrders: any) {

            _viewModelOrders = viewModelOrders;

            var orderdetails = {
                userid: APP.Core.userID,
                context: "DEAL"
            };

            // retrieve all orders
            $.getJSON("/api/omsapi/GetOrders", orderdetails, function (mydata) {

                try {

                    alert("item count (1): " + mydata.length);

                    jQuery.each(mydata, function () {

                        var newItem = this;
                        _viewModelOrders.items.push(newItem);

                    });

                    alert("item count (2): " + _viewModelOrders.items.length);

                }
                catch (e) {
                    alert(e.message);
                }
            });
        }
}

最佳答案

尝试构建项目数组,然后将其分配到模型中。

类似于:

// retrieve all orders
$.getJSON("/api/omsapi/GetOrders", orderdetails, function (mydata) {
    try {
        alert("item count (1): " + mydata.length);
        var items = [];
        jQuery.each(mydata, function () {
            items.push(this);
        });
        _viewModelOrders.items = items;
        alert("item count (2): " + _viewModelOrders.items.length);
    }
    catch (e) {
        alert(e.message);
    }
});

关于kendo-ui - MVVM 绑定(bind)到 Kendo Grid 非常慢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14690203/

相关文章:

javascript - KendoUI AutoComplete 小部件在空时不会更新过滤器

javascript - 剑道日历选择日期事件

jquery - 如何制作 3 个以网格列为中心的 Action 图像?

mvvm - Kendo UI Grid创建的数据未发送到 Controller

javascript - Kendo grid - 如何获取 RowSelected 上的行详细信息?

javascript - 响应式调整 Kendo 图表大小(Typescript、Angular)

javascript - Kendo 下拉列表触发更改事件

kendo-ui - 如何右对齐剑道网格数字字段列标题?

javascript - 基于 KendoUI 网格内的服务数据的静态下拉列表值选择

javascript - 如何根据某些条件禁用剑道网格单元内的按钮?