Не удается прочитать свойство 'значение' неопределенного в Kendo Pivot Grid MVC в динамической таблице данных - PullRequest
0 голосов
/ 20 июня 2019

У меня проблема с PivotGrid, когда сетка выдает ошибку: «Не удается прочитать значение свойства» из неопределенного в Kendo Pivot Grid MVC '. Такое поведение не происходит каждый раз. Я установил функцию тайм-аута, думая, что, возможно, данные еще не были отправлены. Я пытался переписать весь мой JavaScript. Кажется, ничего не работает.

У вас есть предложения? Спасибо

Декларация для PivotGrid:

 @(Html.Kendo().PivotGrid<RfpPurchasePrice>()
                                    .Name("pivotPurchasePrices")
                                    //.Events(x => x.DataBound("autoSizePivot"))
                                    .AutoBind(false)
                                    .Excel(excel => excel
                                           .FileName("historialPrices_" + DateTime.Now.ToShortTimeString() + ".xlsx")
                                           )
                                    .ColumnWidth(75)
                                    .Height(315)
                                    .DataSource(dataSource => dataSource
                                        .Ajax()
                                        .Transport(transport => transport.Read("GetRfpPurchasePrices", "RFPCosting"))
                                        .Events(x=>x.Error("pivotError"))
                                        .Schema(schema => schema
                                            .Cube(cube => cube
                                                .Dimensions(dimensions =>
                                                {
                                                    dimensions.Add(model => model.Month).Caption("Month");
                                                    dimensions.Add(model => model.Year).Caption("Year");
                                                    dimensions.Add(model => model.VendorName).Caption("Vendor");
                                                    dimensions.Add(model => model.ProductCost).Caption("ProductCost");
                                                    dimensions.Add(model => model.ReceiveQuantity).Caption("ReceiveQuantity");
                                                })
                                                .Measures(
                                                    measures =>
                                                    {
                                                        measures.Add("CostSum").Format("{0:c}").Aggregate("CalculateCost");
                                                    }
                                                )
                                            ))
                                        .Columns(columns =>
                                        {
                                            columns.Add("Month").Expand(true);
                                        })
                                        .Rows(rows =>
                                        {
                                            rows.Add("Year");
                                            rows.Add("VendorName").Expand(true);
                                        })
                                        .Measures(measures => measures.Values("CostSum"))
                                    )
            )

Доступно для данных с динамическими полями:

var counter = 0;
        //Setup data tables for season input values
        var t = $('#tblAddSeason').DataTable({
            "paging": false,
            "ordering": false,
            "scrollX": true,
            "info": false,
            "searching": false,
            "scrollY": '300px',
            "scrollCollapse": true
        });

Функция добавления строк:

$('#btnAddRow').on('click', function (e) {
            e.preventDefault();

            t.row.add([
                "<input style='width: 115px'  type='text'  id='models[" + counter + "].SeasonStart' name='models[" + counter + "].SeasonStart' />",
                "<input style='width: 115px' type='text' id='models[" + counter + "].SeasonEnd' name='models[" + counter + "].SeasonEnd' />",
                "<input id='models[" + counter + "].GrowingRegion' name='models[" + counter + "].GrowingRegion'/>",
                "<input style='width: 75px'  id='models[" + counter + "].Warehouse' name='models[" + counter + "].Warehouse'/>",
                "<input style='width: 75px'  id='models[" + counter + "].Repack' name='models[" + counter + "].Repack'/>",
                "<input id='models[" + counter + "].InputProduct' name='models[" + counter + "].InputProduct'/>",
                "<input id='models[" + counter + "].OutputProduct' name='models[" + counter + "].OutputProduct'/>",
                "<button class='btn btn-success'>Fetch</button>",
                "<input autocomplete='false'  type='text'  class='form-control cssOverride' id='models[" + counter + "].FobCost' name='models[" + counter + "].FobCost' />",
                "<input autocomplete='false'  type='text'  class='form-control cssOverride' id='models[" + counter + "].InboundFreightCost' name='models[" + counter + "].InboundFreightCost' />",
                "<input autocomplete='false' type='text'  class='form-control cssOverride' id='models[" + counter + "].WHCharge' name='models[" + counter + "].WHCharge' />",
                "<input autocomplete='false' type='text'  class='form-control cssOverride' id='models[" + counter + "].RepackCharge' name='models[" + counter + "].RepackCharge' />",
                "<input autocomplete='false' type='text'  class='form-control cssOverride' id='models[" + counter + "].PackingMaterials' name='models[" + counter + "].PackingMaterials' />",
                "<input autocomplete='false' type='text'  class='form-control cssOverride' id='models[" + counter + "].Shrink' name='models[" + counter + "].Shrink' />"
            ]).draw(false);

Когда пользователь нажимает кнопку «Получить», эта функция активируется. Он получает некоторые параметры и передает их в источник данных сводной сетки. Это работает ИНОГДА, но не каждый раз. Если я изменю указатели даты месяца или выпадаю некоторые выпадающие списки, они МОГУТ перестать работать, но это не соответствует действительности.

Javascript:

$('#tblAddSeason tbody').on('click', 'button', function (e) {
            e.preventDefault();
            //Find row index
            var idx = t.row($(this).parents('tr')).index();
            //Find datepicker season month selection
            var start = t.cell(idx, 0).nodes().to$().find('input').val();
            var end = t.cell(idx, 1).nodes().to$().find('input').val();
            var prodId = t.cell(idx, 5).nodes().to$().find('input').val();
            //Convert month name 'JAN' to integer 1
            startMonth = getMonthFromString(start)
            endMonth = getMonthFromString(end)

            var data = {
                prodId: prodId,
                month1: startMonth,
                month2: endMonth
            }

            if (prodId && startMonth && endMonth) {
                $("#pivotPurchasePrices").data("kendoPivotGrid").dataSource.data([]);
                $("#pivotUsdaData").data("kendoPivotGrid").dataSource.data([]);

                var pivotPrices = $("#pivotPurchasePrices").data("kendoPivotGrid");
                pivotPrices.dataSource.read(data);

                var pivotUsda = $("#pivotUsdaData").data("kendoPivotGrid");
                pivotUsda.dataSource.read(data);


                $("#exportUsda").fadeIn();
                $("#exportHistory").fadeIn();
                $("#pivotPurchasePrices").fadeIn();
                $("#pivotUsdaData").fadeIn();
                $(".pricingHeaders").fadeIn();

                $.ajax({
                    type: "POST",
                    url: "/RFPCosting/GetUSDAProduct",
                    data: data,
                    dataType: "json",
                    success: function (response) {
                        $('#lblUsdaProduct').html(response);
                    }
                });
            }

        });

При возникновении ошибки:

kendo?v=UrrZxjxAYh2OzBW5awHWSPND63FEZBQZyo1oU36iL4Y1:1 Uncaught TypeError: Cannot read property 'value' of undefined
    at init._buildRow (kendo?v=UrrZxjxAYh2OzBW5awHWSPND63FEZBQZyo1oU36iL4Y1:1)
    at init._buildRows (kendo?v=UrrZxjxAYh2OzBW5awHWSPND63FEZBQZyo1oU36iL4Y1:1)
    at init._tbody (kendo?v=UrrZxjxAYh2OzBW5awHWSPND63FEZBQZyo1oU36iL4Y1:1)
    at init.build (kendo?v=UrrZxjxAYh2OzBW5awHWSPND63FEZBQZyo1oU36iL4Y1:1)
    at init.refresh (kendo?v=UrrZxjxAYh2OzBW5awHWSPND63FEZBQZyo1oU36iL4Y1:1)
    at init.f (jquery.min.js:2)
    at init.trigger (kendo?v=UrrZxjxAYh2OzBW5awHWSPND63FEZBQZyo1oU36iL4Y1:1)
    at init._process (kendo?v=UrrZxjxAYh2OzBW5awHWSPND63FEZBQZyo1oU36iL4Y1:1)
    at init.success (kendo?v=UrrZxjxAYh2OzBW5awHWSPND63FEZBQZyo1oU36iL4Y1:1)
    at init.success (kendo?v=UrrZxjxAYh2OzBW5awHWSPND63FEZBQZyo1oU36iL4Y1:1)

У этого парня точно такая же проблема, но никто не написал ответ: Невозможно прочитать свойство 'значение' из неопределенного в Kendo Pivot Grid MVC

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