为什么会出现未捕获的TypeError:无法读取未定义的属性'dataSource'

时间:2019-12-11 11:46:23

标签: javascript asp.net-mvc kendo-ui kendo-asp.net-mvc

我删除了这个可怕的错误,我无法前进。当我想单击网格行时,我想打开窗口弹出窗口并尝试显示该行的详细信息。我正在使用LoadContentFrom函数显示细节,但是当我尝试双击row时。我收到此错误Orpac.js:16197 Uncaught TypeError: Cannot read property 'dataSource' of undefined

这是我的主视图

<script type="text/javascript">
$(document).ready(function () {
    currentPageName = "LoyaltyCards";

});
</script>
@{
var columnList = ViewBag.List;

int[] series = new int[3];
series[0] = 50;
series[1] = 100;
series[2] = 200;
}
<script src="../../Scripts/kendo/2018.1.117/kendo.all.min.js" type="text/javascript"></script>
<script src="../../Scripts/kendo/2018.1.117/kendo.aspnetmvc.min.js" type="text/javascript"></script>

<div id="Over" class="k-overlay" style="opacity: 0.5; z-index: 10000; display: none;"></div>
<header><h3><span id="lylheader">@ViewData["LoyaltyCards"]</span></h3></header>

<div class="k-rtl">
@( Html.Kendo().Grid<Orpac.Models.DATA>()
                         .Name("grdLoyaltyCards")
                         .DataSource(ds => ds
                         .Ajax()
                         .Read(r => r.Action("GridLoyaltyCardsBinding", "Loyalty").Type(HttpVerbs.Get)).PageSize(20)
                         )
                         .Columns(columns =>
                         {

                             columns.Bound(e => e.McrKod).Width(90).ClientTemplate("<input type='checkbox' value='#=McrKod#'/>").Title((string)ViewData["Select"]).Filterable(false);
                             columns.Bound(e => e.McrKod).Width(200).Title((string)ViewData["CardNo"]).Encoded(false);
                             columns.Bound(e => e.CrdKod).Width(150).Title((string)ViewData["CardType"]);
                             columns.Bound(e => e.McrStatus).Width(150).Title((string)ViewData["Status"]);
                             columns.Bound(e => e.McrIsim).Width(150).Title((string)ViewData["Name"]);
                             columns.Bound(e => e.McrSoyad).Width(150).Title((string)ViewData["Surname"]);
                             columns.Bound(e => e.McrMail).Width(150).Title((string)ViewData["EMail"]);
                             columns.Bound(e => e.McrGsm).Width(150).Title((string)ViewData["Phone"]);
                             columns.Bound(e => e.McrBasla).Width(200).Title((string)ViewData["StartDate"]).ClientTemplate("#= kendo.toString(McrBasla, 'dd.MM.yyyy HH:mm:ss') #");
                             columns.Bound(e => e.McrBitis).Width(200).Title((string)ViewData["EndDate"]);
                             columns.Bound(e => e.LstCode).Width(150).Title((string)ViewData["CustomerList"]);
                             columns.Bound(e => e.MegCode).Width(150).Title((string)ViewData["PointGroup"]);
                             columns.Bound(e => e.McrKimlikNo).Width(150).Title((string)ViewData["ID"]).Visible(false);

                         })
                                 .Events(events => events.DataBound("onRowDataBoundLoyalty").Change("ongrdLoyaltyRowSelect"))
                                 .ToolBar(toolBar =>
                                 {
                                     toolBar.Excel().HtmlAttributes(new { @class = "btnexcel" }).Text(" ").IconClass("k-i-excel");
                                     toolBar.Custom().Text((string)ViewData["SaveSettings"]).HtmlAttributes(new { @class = "k-button", id = "savegrid", href = "#", onclick = "SaveColumnPosition()" });
                                     toolBar.Custom().Text((string)ViewData["ClearFilter"]).HtmlAttributes(new { @class = "k-button", id = "cleargrid", href = "#", onclick = "clearFiltersLoyalty()" });
                                 }
                         )
                    .Excel(excel => excel.FileName((string)ViewData["LoyaltyCards"] + ".xlsx").AllPages(false).Filterable(true))
                    .Selectable()
                    .Scrollable(scrolling => scrolling.Height("100%"))
                    .Sortable()
                    .Pageable(pageable => pageable
                    .Refresh(true)
                    .PageSizes(series)
                    .ButtonCount(10))
                    .Filterable(filterable => filterable
                    .Extra(false)
                    .Operators(operators => operators
                    .ForString(str => str.Clear()
                        .StartsWith("Starts with")
                        .Contains("Contains")
                    ))
                    )
                    .Groupable()
                    .Resizable(config =>
                    {
                        config.Columns(true);
                    })
                    .Reorderable(config =>
                    {
                        config.Columns(true);
                    })
                    .ColumnMenu()
)

  </div>
  <div class="k-rtl">
   @{ Html.Kendo().Window()
            .Name("LoyaltyWindow")
            .Title((string)ViewData["LoyaltyCards"])
            .Actions(b => b.Close())
            .LoadContentFrom("ContentOfLoyalty", "Loyalty") ////I WANT TO OPEN DETAIL FROM HERE
            .Modal(true)
            .Visible(false)
            .Draggable(true)
            .Resizable()
            .Width(1300)
            .Height(600)
            .Render();
     }
     </div>

    <script>
    $(function () {
        load();

        $('.k-grid-content', this).on('click', function (e) {
            var CategoryVisibility = "@ViewData["CategoryInLoyalty"].ToString()";
            openloyaltywindow(CategoryVisibility); ////HERE MY DOUBLE CLICK FUNCTION...


    $('#grdLoyaltyCards').on('change', ':checkbox', function (e) {
        var $check = $(this);
        if ($check.is(':checked')) {
            selectedLoyaltyCards.push($check.val());
        }
        else {
            selectedLoyaltyCards = $.grep(selectedLoyaltyCards, function (item, index) {
                return item != $check.val();
            });
        }

    });

    $("#grdLoyaltyCards").kendoTooltip({
        filter: "td",
        position: "right",
        content: "@ViewData["Tooltip"].ToString()"
    }).data("kendoTooltip");
})

function SaveColumnPosition() {
    var grid = $("#grdLoyaltyCards").data("kendoGrid");
    localStorage["kendo-grid-options-loyaltycard"] = kendo.stringify(grid.getOptions());
}

function load() {
    var grid = $('#grdLoyaltyCards').data("kendoGrid");
    var toolBar = $("#grdLoyaltyCards .k-grid-toolbar").html();

    var options = localStorage["kendo-grid-options-loyaltycard"];
    if (options) {
        grid.setOptions(JSON.parse(options));
        $("#grdLoyaltyCards .k-grid-toolbar").html(toolBar);
        $("#grdLoyaltyCards .k-grid-toolbar").addClass("k-grid-top");
    }
}

这是我的详细信息视图

@{
var columnList = ViewBag.List;

int[] pageseries = new int[3];
pageseries[0] = 50;
pageseries[1] = 100;
pageseries[2] = 200;
}
@{Html.Kendo().TabStrip().Name("LoyaltyTab").Animation(enable => enable.Open(effects => effects.Expand(ExpandDirection.Vertical)))
              .Events(events => events.Select("selectLoyaltyTab"))
              .Items(item1 =>
              {
                  item1.Add().Text((string)ViewData["Overview"]).HtmlAttributes(new { id = "first" }).Selected(true).Visible((bool)ViewData["ShowOverview"]).Content(@<text>


<h3><b>@ViewData["Overview"]  <span id="daylabel"></span></b></h3>
<div>
    Select Year : @(Html.Kendo().ComboBox().AutoBind(false)
    .Name("cmbyear")
    .DataValueField("YearId")
    .DataTextField("YearText")
    .DataSource(binding => binding.Read(read =>
    {
         read.Action("CmbBindYear", "Loyalty");
              }))
        .Value(ViewData["YearNow"].ToString())
        .Events(e => e.Change("changeloyaltyyear"))
    )
</div>

<h3><b> @ViewData["CustomerInformation"]</b></h3>
<div style=" float:left;">
    <br />
    <h3><b>@ViewData["Questionare"]</b></h3>
    @*<div id="grdQuestionar"></div>*@
    @( Html.Kendo().Grid<DATA>()
                                                              .Name("grdLoyalty")
                                                              .DataSource(ds => ds
                                                              .Ajax()
                                                              .Read(r => r.Action("GridLoyaltyBinding", "Loyalty"))
                                                              )
                                                              .Columns(columns =>
                                                              {
                                                                  columns.Bound(e => e.Question).Title("Question");
                                                                  columns.Bound(e => e.Answer).Title("Answer");
                                                              })
                                                              .AutoBind(false)
                                                              .HtmlAttributes(new { style = "width: 300px; height:100%;" })
                                                              .Selectable()
                                                              .Sortable()
    )

</div>
<div style="float:left;margin-left: 50px;margin-top: -50px;">
    @{Html.Kendo().Chart<Orpac.Models.Mg_Web_LoyaltyTrxCount_Result>()
              .Name("loyaltytrxlist").Title((string)ViewData["TranChart"])
              .Legend(legend => legend
                          .Visible(true).Position(Kendo.Mvc.UI.ChartLegendPosition.Bottom)
                                  .Labels(labels =>
                                  {
                                                      labels.Template("#= text #");
                                                  }
                          )
              ).HtmlAttributes(new { style = "width: 500px; height:300px;" })
              .ChartArea(configurator => configurator.Background("transparent"))
              .DataSource(ds =>
              {
                                  ds.Read(read => read.Action("LoyaltyTransactionsPerYear", "Loyalty", new { year = DateTime.Now.Year }));
                              }).AutoBind(false)
              .Series(series =>
              {
                                  series.Line(data => data.Number_Of_Transactions);
                                  series.Line(data => data.Sum_of_Quantity);
                              })
              .CategoryAxis(axis => axis
                  .Categories(data1 => data1.Monthstr)
              )
              .Theme((string)ViewData["themes"])
              .ValueAxis(axis => axis
                  .Numeric().Labels(labels => labels.Format("{0}"))
              )
              .Tooltip(tooltip => tooltip
                  .Visible(true)
                  .Format("{0}")
              ).Render();
    }
</div>


<div style="clear: both;"></div>

                </text>);

              item1.Add().Text((string)ViewData["Transactions"]).HtmlAttributes(new { id = "third" }).Visible((bool)ViewData["ShowTran"]).Content(@<text>
@( Html.Kendo().Grid<Orpac.Models.Mg_Web_LylHarGet_Result>()
                                            .Name("grdLoyaltyTransaction")
                                    .DataSource(ds => ds
                                    .Ajax()
                                            .Read(r => r.Action("GridLoyaltyTransactionBinding", "Loyalty").Type(HttpVerbs.Get)).PageSize(20).Aggregates(agg =>
                                            {
                                                      agg.Add(a => a.MshTutar).Sum();
                                                      agg.Add(a => a.MshMiktar).Sum();
                                                      agg.Add(a => a.MshIskonto).Sum();
                                                      agg.Add(a => a.PuanBakiye).Sum();
                                                  })
                                    )
                                            .ToolBar(toolBar =>
                                            {
                                                      toolBar.Custom().Text(" ").Url(Url.Action("ExportCsvTranLoyalty", "Loyalty", new { page = 1, pageSize = "~", filter = "~", sort = "~" })).HtmlAttributes(new { @class = "btnexcel" });
                                                      toolBar.Custom().Text("Clear Filter").HtmlAttributes(new { @class = "k-button", id = "cleargrid", href = "#", onclick = "clearFiltersTranLoyalty()" });
                                                  }
                                        )
                                    .Columns(columns =>
                                    {
                                              columns.Bound(e => e.MshIdent).Visible(false);
                                              columns.Bound(e => e.MshTxnTim).Title("Transaction " + (string)ViewData["Date"]).ClientTemplate("#= kendo.toString(MshTxnTim, 'dd.MM.yyyy HH:mm') #").ClientGroupHeaderTemplate("Transaction Date: #=  kendo.toString(value, 'dd.MM.yyyy HH:mm') #");
                                              columns.Bound(e => e.MshMagazaNam).Title((string)ViewData["Station"]);
                                              columns.Bound(e => e.MshStok).Title((string)ViewData["StockNam"]);
                                              columns.Bound(e => e.MshTutar).Title((string)ViewData["Amount"]).ClientTemplate("#= FormatMoney(MshTutar) #").Encoded(true);
                                              columns.Bound(e => e.MshMiktar).Title((string)ViewData["Quantity"]);
                                              columns.Bound(e => e.MshTipName).Title((string)ViewData["Transaction"] + (string)ViewData["Tip"]);
                                              columns.Bound(e => e.iskontotipiName).Title((string)ViewData["Discount"] + (string)ViewData["Tip"]);
                                              columns.Bound(e => e.MshIskonto).Title((string)ViewData["Discount"]).ClientTemplate("#= FormatMoney(MshIskonto) #").Encoded(true);
                                              columns.Bound(e => e.PuanBakiye).Title((string)ViewData["Point"]);
                                              columns.Bound(e => e.MshCmpKod).Title((string)ViewData["Campaign"] + (string)ViewData["Tip"]);
                                              columns.Bound(e => e.MshIdent).Title((string)ViewData["TransactionId"]);
                                              columns.Bound(e => e.MshTarih).Title((string)ViewData["Account"] + (string)ViewData["Date"]).ClientTemplate("#= kendo.toString(MshTarih, 'dd.MM.yyyy') #").ClientGroupHeaderTemplate("Account Date: #=  kendo.toString(value, 'dd.MM.yyyy') #");

                                          })
                                    .AutoBind(false)
                                    .Selectable()
                                .Scrollable(scroll => scroll.Height(600))
                                .Sortable()
                                .Pageable(pageable => pageable
                                .Refresh(true)
                                .PageSizes(pageseries)
                                .ButtonCount(10))
                                .Filterable(filterable => filterable
                                .Extra(false)
                                .Operators(operators => operators
                                .ForString(str => str.Clear()
                                    .StartsWith("Starts with")
                                    .Contains("Contains")
                                ))
                                )
                                .Groupable()
                                .Resizable(config =>
                                {
                                          config.Columns(true);
                                      })
                                .Reorderable(config =>
                                {
                                          config.Columns(true);
                                      })
                                .ColumnMenu()
)
            </text>);

                 }).Render();
   }

这是我的_Layout.cshtml头部

<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="author" content="Şaul Yaşar CEMAL" />
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
<script src="~/Scripts/kendo/2018.1.117/jquery.min.js"></script>
<script src="~/Scripts/kendo/2018.1.117/jszip.min.js"></script>
<script src="~/Scripts/kendo/2018.1.117/kendo.all.min.js" type="text/javascript"></script>
<script src="~/Scripts/kendo/2018.1.117/kendo.aspnetmvc.min.js" type="text/javascript"></script>


<script src="~/Scripts/bootstrap.min.js"></script>
<script src="~/bower_components/metisMenu/src/metisMenu.js"></script>
<script src="~/Scripts/sb-admin-2.js"></script>
<script src="../../js/Orpac.js" type="text/javascript"></script>
<script src="../../js/accounting.min.js" type="text/javascript"></script>
<script src="../../js/numeral.js"></script>
<script src="../../js/jquery-ui-1.10.4.js" type="text/javascript"></script>
<script src="~/js/jquery.maskedinput.js"></script>
<script src="~/js/jquery.equalHeight.js"></script>
<script src="~/js/jquery.tablesorter.min.js"></script>
<script src="~/Scripts/kendo.modernizr.custom.js"></script>
</head>

这是我的js文件

function openloyaltywindow(CategoryVisibility) {
var vCategory = CategoryVisibility;
$("#pointval").hide();
$("#discountval").hide();
$("#redemptionval").hide();

var grid = $('#grdLoyaltyCards').data("kendoGrid");
var dataItem = grid.dataItem(grid.select());

$("#daylabel").text("1/1/" + (new Date()).getFullYear() + " - " + (new Date).getDay() + "/" + ((new Date).getMonth() + 1) + "/" + (new Date()).getFullYear());

$("#yearid").text((new Date()).getFullYear());

var thisyear = (new Date()).getFullYear();

var combo = $("#cmbyear").data('kendoComboBox');
combo.dataSource.read(); // I'M GETTING ERROR FROM HERE ALL KENDO WIDGETS ARE UNDEFINED...

$("#lpname").html(dataItem.McrIsim);
$("#lpsname").html(dataItem.McrSoyad);
$("#lpcardtype").html(dataItem.CrdKod);
$("#lpcardnumber").html(dataItem.McrKod);
$("#lpcardstatus").html(dataItem.McrStatus);
$("#lpcstlist").html(dataItem.LstCode);
$("#lpgroup").html(dataItem.MegCode);

$("#lyltxtname").val(dataItem.McrIsim);
$("#lyltxtsname").val(dataItem.McrSoyad);
$("#lyltxtemail").val(dataItem.McrMail);
$("#lyltxtphone").val(dataItem.McrGsm);
$("#lyltxtid").val(dataItem.McrKimlikNo);


var todayDate = dataItem.McrBasla;
var date = todayDate.getDate();
var month = todayDate.getMonth() + 1;
var year = todayDate.getFullYear();

var invdate = date + "/" + month + "/" + year + " ";

$("#lpstartdate").html(invdate);
$("#lpenddate").html(dataItem.McrBitis);

$("#LoyaltyTab").data("kendoTabStrip").select(0);
$('#LoyaltyWindow').data('kendoWindow').maximize().open();
$("#LoyaltyWindow").closest(".k-window").css({
    top: 0,
    left: 0
});


var chart = $("#loyaltytrxlist").data('kendoChart');
chart.dataSource.read();
chart.refresh();

if (vCategory == "Yes") {
    var chartpie = $("#loyaltypie").data('kendoChart');
    chartpie.dataSource.read();
    chartpie.refresh();
}


var grid = $("#grdLoyalty").data('kendoGrid');
grid.dataSource.read();

$.ajax({
    url: '../Loyalty/GetPointsForCard',
    data: { card: dataItem.McrKod, pyear: thisyear },
    success: function (data) {
        if (data != null) {

            //do something


        }
        else {

        }
    }
}); 
}

1 个答案:

答案 0 :(得分:0)

您需要等待直到小部件被初始化,然后尝试将代码放入其中:

$(window).load(function () { //your js code}