0

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

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

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

1 & 2 按预期工作。

我目前正在尝试通过加载部分视图,然后在该 Kendo Window 的控制器操作上调用刷新,在 #3 和 #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"))
  ))

评论超链接的脚本和剑道窗口代码:

@(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,并尝试更改操作等以强制获取或发布,但没有运气。

4

1 回答 1

0

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

于 2016-10-18T17:47:38.633 回答