首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >无法在动态数据表中读取Kendo Pivot Grid MVC中未定义的属性'value‘

无法在动态数据表中读取Kendo Pivot Grid MVC中未定义的属性'value‘
EN

Stack Overflow用户
提问于 2019-06-20 14:55:57
回答 1查看 523关注 0票数 0

我在PivotGrid中遇到了一个问题,网格抛出了一个错误:“无法读取属性”值“在Kendo Pivot grid MVC中未定义”。这种行为并不是每次都会发生。我设置了一个超时函数,认为数据可能还没有发送过来。我试着重写我所有的javascript。似乎什么都不起作用。

你们有什么建议吗?谢谢

PivotGrid的声明:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 @(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"))
                                    )
            )

包含动态字段的数据表:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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
        });

用于添加行的函数:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$('#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);

当用户点击'Fetch‘按钮时,这个函数就会被触发。它获取一些参数并将其提供给pivot网格的数据源。这有时是有效的,但不是每次都有效。如果我更改了月份、日期选择器或一些下拉列表,它可能会停止工作,但并不一致。

Javascript:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$('#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);
                    }
                });
            }

        });

当错误被触发时:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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)

这个人似乎有完全相同的问题,但没有人发布答案:Cannot read property 'value' of undefined in Kendo Pivot Grid MVC

EN

回答 1

Stack Overflow用户

发布于 2019-11-21 03:05:04

pivotUsda.dataSource.read(data);之前添加此pivotUsda.dataSource.trigger("stateReset");

所以就像这样:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
if (prodId && startMonth && endMonth) {
  $("#pivotPurchasePrices").data("kendoPivotGrid").dataSource.data([]);
  $("#pivotUsdaData").data("kendoPivotGrid").dataSource.data([]);

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

  var pivotUsda = $("#pivotUsdaData").data("kendoPivotGrid");
  pivotUsda.dataSource.trigger("stateReset");
  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);
      }
  });
}

经过反复试验和反复研究,我终于在KendoUI文档here中找到了解决方案

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56688724

复制
相关文章

相似问题

领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文