5
的JavaScript我有簡單的頁面與劍道TabStrip控件內劍道TabStrip控件與KendoGrid內使用事件處理
<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
動作返還給我PartialView
。
public PartialViewResult MyNotices()
{
// put some values into ViewData
return PartialView();
}
的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>
當我運行代碼,我收到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>
所以問題是如何在部分視圖中使用JavaScript,當你在TabStrip中顯示它?
當我從網格中刪除.Events(events => events.Error("errorHandler"))
時,一切工作正常。
我已經看到這個行爲以及與Kendo和mvc服務器包裝,重新:JS服務器端包裝器中聲明的事件需要寫在包裝上。 – 2013-03-21 16:08:38
如果您在頁面加載期間打開控制檯,您可能會看到類似「errorHandler未聲明」的錯誤。 這是因爲在頁面被加載時,Kendo小部件會查找該函數,如果它在下面聲明,則意味着該網格將無法找到它,因爲它仍然需要被解析。 – Pizzaboy 2015-06-30 08:10:39