Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/417.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 剑道TabStrip,内置剑道格,使用JavaScript处理事件_C#_Javascript_Asp.net Mvc_Kendo Ui_Kendo Grid - Fatal编程技术网

C# 剑道TabStrip,内置剑道格,使用JavaScript处理事件

C# 剑道TabStrip,内置剑道格,使用JavaScript处理事件,c#,javascript,asp.net-mvc,kendo-ui,kendo-grid,C#,Javascript,Asp.net Mvc,Kendo Ui,Kendo Grid,我有一个简单的页面,里面有剑道标签 <div id="main-view" class="k-content"> @(Html.Kendo().TabStrip() .Name("main-view-tabstrip") .Items(tabstrip => { tabstrip.Add().Text("My Notices").LoadContent

我有一个简单的页面,里面有剑道标签

<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>
PartialView itseld看起来像这样:

<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>
所以问题是,当在TabStrip中显示javascript时,如何在部分视图中使用javascript


当我从网格中删除
.Events(Events=>Events.Error(“errorHandler”))
时,一切正常。

修复了这个问题,我不知道为什么,但当我将java脚本块放在开头时,它就开始工作了


因此,如果有人遇到这样的问题,只需在声明
Kendo.Grid()

之前放置
块,我在Kendo和mvc服务器包装器中也看到过这种行为,服务器端包装器中声明的re:JS事件需要写入包装器之上。如果在页面加载期间打开控制台,您可能会看到类似于“errorHandler未声明”的错误。这是因为在加载页面时,剑道小部件将查找函数,如果在下面声明了该函数,则意味着网格将无法找到它,因为它仍然需要解析。
<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>
<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>