簡體   English   中英

Kendo TabStrip內部帶有KendoGrid,使用JavaScript進行事件處理

[英]Kendo TabStrip with KendoGrid inside using JavaScript for Events handling

我有一個帶有Kendo TabStrip的簡單頁面

<div id="main-view" class="k-content">
    @(Html.Kendo().TabStrip()
            .Name("main-view-tabstrip")
            .Items(tabstrip =>
                {
                    tabstrip.Add().Text("My Notices").LoadContentFrom("MyNotices", "Notice").Selected(true);
                }))
</div>

它按需為我加載內容,查詢NoticeController NoticeController具有MyNotices操作, MyNotices我返回PartialView

public PartialViewResult MyNotices()
{
    // put some values into ViewData

    return PartialView();
}

PartialView的字段如下所示:

<div style="margin: 20px; height: 700px;">
    @(Html.Kendo().Grid<NoticeViewModel>(Model)
      .HtmlAttributes(new { @class = "fullScreen" })
      .Name("NoticesList")
      .Columns(columns =>
          {
              columns.Bound(x => x.UniqueId).Title("UniqueId");
              columns.Bound(x => x.FormName).Title("Form");
              columns.Bound(x => x.Revision).Title("Revision");
              columns.Bound(x => x.Language).Title("Language");
              columns.Bound(x => x.Status).Title("Status");
          }
      )
      .Pageable()
      .Scrollable()
      .Sortable()
      .Selectable()
      .ToolBar(
          toolbar => toolbar.Create().Text("New")
      )
        .Editable(
            ed => ed.Mode(GridEditMode.PopUp)
                .TemplateName("NoticeCreate")
                .Window(w => w.Title("Create Notice")
                    .Name("createNoticeWindow1")
                    .HtmlAttributes(new { id = "createNoticeWindow" })
                    .Modal(true)
                    )
                .DisplayDeleteConfirmation(true)
                )
      .Resizable(resize => resize.Columns(true))
      .DataSource(dataSource => dataSource.Ajax()
                                          .PageSize(25)
                                          .ServerOperation(true)
                                          .Read("List", "Notice")
                                          .Create("NoticeCreate", "Notice")
                                          .Events(events => events.Error("errorHandler"))
                                          .Model(model => model.Id(x => x.UniqueId))

      ))
</div>

<script>
    function errorHandler(e) {
        if (e.errors) {
            var message = "Errors:\n";
            $.each(e.errors, function (key, value) {
                if ('errors' in value) {
                    $.each(value.errors, function () {
                        message += this + "\n";
                    });
                }
            });
            alert(message);
        }
    }
</script>

當我運行代碼時,我收到JS錯誤,找不到該errorHandler 如您所見,我在PartialView擁有它。

<script>
    function errorHandler(e) {
        if (e.errors) {
            var message = "Errors:\n";
            $.each(e.errors, function (key, value) {
                if ('errors' in value) {
                    $.each(value.errors, function () {
                        message += this + "\n";
                    });
                }
            });
            alert(message);
        }
    }
</script>

所以問題是當您在TabStrip中顯示它時,如何在局部視圖中使用javascript?

當我從.Events(events => events.Error("errorHandler"))刪除.Events(events => events.Error("errorHandler")) ,一切正常。

解決了這個問題,我不為什么,但是當我將java腳本塊放在開頭時,它開始起作用。

因此,如果有人遇到這樣的問題,只需在聲明Kendo.Grid()之前放<script/>塊。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM