Не удается прочитать свойство 'sort' из null - PullRequest
0 голосов
/ 30 января 2020

У меня есть один шаблон для сетки, который я использовал в двух местах, и сетки, конечно, имеют разные идентификаторы.

@(Html.Kendo().Grid(Model.Equipment)

        .Name(string.Format("equipmentGridReview-{0}", DateTime.Now.Ticks))
        .Columns(columns =>
        {
            columns.Bound(c => c.Quantity).Title("Qty");
            columns.Bound(c => c.ItemName).Title("Item / Billing Code");
            columns.Bound(c => c.ItemId).Title("Item#");
            columns.Bound(c => c.Disposition).Title("Disposition");
            columns.Bound(c => c.InvLoc).Title("Inv Loc");
            columns.Bound(c => c.EqLoc).Title("Eq Loc");
            columns.Bound(c => c.UnitPrice).Title("Unit Price").Format("{0:c}");
            columns.Bound(c => c.Completed).Title("Completed");
        })
        .Sortable()
        .Resizable(resize => resize.Columns(true))
        .Events(e => e.DataBound("someModule.onDataBoundToGrid"))
        .Reorderable(reorder => reorder.Columns(true))
        .Selectable()
        .DataSource(dataSource => dataSource
            .Ajax()
            .ServerOperation(false)
      )
)

Вот мой js модуль

function getEquipmentGrids() {
        var grids = [];

        $.each($("[id|='equipmentGridReview']"), function(idx, element) {
            grids.push($(element).data("kendoGrid"));
        });

        return grids;
    }

    function onDataBoundToGrid() {
            setCommonDateSource(this);
        }

    function setCommonDateSource(newGrid) {
            $.each(getEquipmentGrids(), function(idx, grid) {
                if (grid !== newGrid && grid.dataSource !== newGrid.dataSource) {
                    newGrid.setDataSource(grid.dataSource);
                }
            });
        }

И когда я переключаюсь между ними, я получаю ошибку. Первый массив (1), который я получаю при первой загрузке вкладки, второй - [init, init] - при переключении между вкладками. enter image description here

1 Ответ

0 голосов
/ 03 февраля 2020

Кажется, вы устанавливаете источник данных второй сетки в первом событии dataBound. Это может привести к непреднамеренному поведению.

Хорошая новость заключается в том, что вам не нужно делать ничего особенного для двух компонентов для совместного использования источника данных. Как видно из примера на https://demos.telerik.com/aspnet-mvc/datasource/shared-datasource, сетка и автозаполнение просто передаются в один и тот же источник данных, и он просто работает. Оба будут динамически отражать любые изменения, внесенные в данные. То же самое будет работать для двух сеток или любых двух виджетов, которые имеют линейные данные.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...