私はしばらくの間、この問題に頭を悩ませてきました。最初に何をする必要があるかを説明させてください。それから、現在の状況に進みます。
これは asp.net mvc アプリケーションです。私が苦労しているアプリケーションの部分は、これを行う必要があります:
- 追加と編集にポップアップを利用するメイン グリッドを表示します
- 追加および編集ボタンを表示する
- グリッド付きのポップアップを開くハイパーリンク列を表示します
- グリッド付きのポップアップを開くカスタム コマンド ボタンを表示する
1と2は期待どおりに機能します。
現在、#3 と #4 でセカンダリ グリッドを使用して Kendo Window を作成しようとしています。これには、部分ビューをロードし、その 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 に設定しようとしましたが、アクションなどを変更して get または post を強制的に実行しようとしましたが、うまくいきませんでした。