使用Kendo Window的Kendo UI MVC网格 - 500错误

时间:2016-10-18 12:38:30

标签: asp.net-mvc kendo-ui kendo-grid kendo-asp.net-mvc kendo-window

所以我一直在讨论这个问题一段时间,所以首先让我解释一下我需要做什么,然后我会进入我所在的位置。

这是一个asp.net mvc应用程序。我正在努力解决的应用程序部分需要这样做:

  1. 显示利用弹出窗口添加的主网格&编辑
  2. 显示添加&编辑按钮
  3. 显示一个超链接列,该列应打开带有网格的弹出窗口
  4. 显示自定义命令按钮,该按钮应打开带网格的弹出窗口
  5. 1& 2按预期工作。

    我目前正在尝试使用#3&amp ;;中的辅助网格创建Kendo窗口。 #4通过加载局部视图,然后在该Kendo Window的控制器操作上调用刷新。我能够从这些窗口正确保存数据,但是网格没有填充来自控制器操作的数据(虽然我能够调试代码返回操作中的数据)并且我在浏览器中收到500错误安慰。

    主网格:

    @(Html.Kendo().Grid<PAUL.Models.Response.DetailsViewModel>()
      .Name("PaymentGrid")
      .Columns(columns =>
      {
          columns.Bound(c => c.PMT_DTL_SK).Width(110);
          columns.Bound(c => c.CommentsField).Title("Comments").ClientTemplate("<a onclick=\"showDetails('#=PMT_DTL_SK#')\" style='cursor:auto'>#=CommentsField#</a>").Width(110);
          columns.Command(command => command.Edit().Text("Lookup")).Width(100);
          columns.Command(command => command.Custom("Ignore").Click("ignoreRecord")).Width(180);
      })
      .ToolBar(toolbar =>
      {
          toolbar.Excel();
          toolbar.Create();
      })
      .Editable(editable => editable.Mode(GridEditMode.PopUp).TemplateName("_EditPayment"))
      .Pageable()
      .Events(events =>
      {
          events.Save("onSave");
          events.Edit("HideGridFields");
          events.DataBound("onDataBound");
      })
      .DataSource(dataSource => dataSource
          .Ajax()
          .Model(model => model.Id(p => p.PMT_DTL_SK))
          .PageSize(300)
          .Create(create => create.Action("Payment_Create", "Landing"))
          .Update(update => update.Action("Payment_Update", "Landing", @Model))
          .Read(read => read.Action("Payments_Read", "Landing", @Model))
          .Events(events => events.Sync("sync_handler"))
      ))
    

    脚本&amp;注释超链接的Kendo Window代码:

    @(Html.Kendo().Window().Name("Comments")
    .Title("Letter Date/Comments")
    .Visible(false)
    .LoadContentFrom("Comments", "Landing")
    .Modal(true)
    .Draggable(true)
    .Width(450))
    
    <script type="text/javascript">
    function showDetails(paymentDetailSK) {
        var wnd = $("#Comments").data("kendoWindow");
        wnd.refresh({
            url: "/Landing/GetComments",
            data: { paymentDetailSK: paymentDetailSK }
        });
        wnd.center().open();
    }</script>
    

    LandingContoller - GetComments行动

        public ActionResult GetComments([DataSourceRequest]DataSourceRequest request, Decimal? paymentDetailSK)
        {
            var comments = new PAULDataRepository().Comments_Read(paymentDetailSK).ToList();
    
            return Json(comments.ToDataSourceResult(request));
        }
    

    _Comments局部视图中的网格:

        <div class="row">
        @(Html.Kendo().Grid<PAUL.Entities.PaymentDetailAttachment>()
        .Name("commentsGrid")
        .Columns(columns =>
        {
            columns.Bound(c => c.CommentText).Title("Comments");
            columns.Bound(c => c.CreatedByUser).Title("Created By");
            columns.Bound(c => c.CreatedDateTime).Title("Creation Time").Format("{0:MM/dd/yyyy HH:mm tt}");
        })
        .HtmlAttributes(new { style = "height: 250px;" })
        .Scrollable()
        .DataSource(dataSource => dataSource
            .Ajax()
            .Read(read => read.Action("GetComments", "Landing"))
            .PageSize(20)
        )
        )
    </div>
    

    我试图将wnd.refresh的数据类型设置为json,并尝试更改操作等以强制获取或发布,没有运气。

1 个答案:

答案 0 :(得分:0)

事实证明我在执行刷新时调用了数据方法而不是返回部分视图的操作操作。