一.在js中配置列:
<script>
$(document).ready(function () {
$("#newsitem-grid").kendoGrid({
dataSource: {
type: "json",
transport: {
read: {
url: "@Html.Raw(Url.Action("List", "News"))",
type: "POST",
dataType: "json",
data: additionalData
}
},
schema: {
data: "Data",
total: "Total",
errors: "Errors"
},
error: function(e) {
display_kendoui_grid_error(e);
// Cancel the changes
this.cancelChanges();
},
pageSize: @(defaultGridPageSize),
serverPaging: true,
serverFiltering: true,
serverSorting: true
},
pageable: {
refresh: true,
pageSizes: [@(gridPageSizes)]
},
editable: {
confirmation: "@T("Admin.Common.DeleteConfirmation")",
mode: "inline"
},
scrollable: false,
columns: [
{
field: "Title",
title: "@T("Admin.ContentManagement.News.NewsItems.Fields.Title")"
}, {
field: "LanguageName",
title: "@T("Admin.ContentManagement.News.NewsItems.Fields.Language")",
//update by zhouxiang 20190925 调整列宽 S
//width: 200,
width: 100,
//update by zhouxiang 20190925 调整列宽 E
}, {
field: "Comments",
title: "@T("Admin.ContentManagement.News.NewsItems.Fields.Comments")",
template: '<a href="Comments?filterByNewsItemId=#=Id#">@T("Admin.ContentManagement.News.NewsItems.Fields.Comments") - #=Comments# </a>',
//update by zhouxiang 20190925 调整列宽 S
width:200,
//update by zhouxiang 20190925 调整列宽 E
}, {
field: "StartDate",
title: "@T("Admin.ContentManagement.News.NewsItems.Fields.StartDate")",
width: 200,
type: "date",
format: "{0:G}"
}, {
field: "EndDate",
title: "@T("Admin.ContentManagement.News.NewsItems.Fields.EndDate")",
width: 200,
type: "date",
format: "{0:G}"
}, {
field: "Published",
title: "@T("Admin.ContentManagement.News.NewsItems.Fields.Published")",
width: 100,
headerAttributes: { style: "text-align:center" },
attributes: { style: "text-align:center" },
template: '# if(Published) {# <i class="fa fa-check true-icon"></i> #} else {# <i class="fa fa-close false-icon"></i> #} #'
}, {
field: "CreatedOn",
title: "@T("Admin.ContentManagement.News.NewsItems.Fields.CreatedOn")",
width: 200,
type: "date",
format: "{0:G}"
}, {
field: "Id",
title: "@T("Admin.Common.Edit")",
width: 100,
template: '<a href="Edit/#=Id#">@T("Admin.Common.Edit")</a>'
}
]
});
});
</script>
二.控制器中编辑功能实现的方法:
public ActionResult Edit(int id)
{
if (!_permissionService.Authorize(StandardPermissionProvider.ManageNews))
return AccessDeniedView();
var newsItem = _newsService.GetNewsById(id);
if (newsItem == null)
//No news item found with the specified id
return RedirectToAction("List");
var model = newsItem.ToModel();
model.StartDate = newsItem.StartDateUtc;
model.EndDate = newsItem.EndDateUtc;
//languages
PrepareLanguagesModel(model);
//Store
PrepareStoresMappingModel(model, newsItem, false);
return View(model);
}
三.编辑界面view
@model NewsItemModel
@{
//page title
ViewBag.Title = T("Admin.ContentManagement.News.NewsItems.EditNewsItemDetails").Text;
//active menu item (system name)
Html.SetActiveMenuItemSystemName("News items");
}
@using (Html.BeginForm())
{
@Html.AntiForgeryToken()
<div class="content-header clearfix">
<h1 class="pull-left">
@T("Admin.ContentManagement.News.NewsItems.EditNewsItemDetails") - @Model.Title
<small><i class="fa fa-arrow-circle-left"></i>@Html.ActionLink(T("Admin.ContentManagement.News.NewsItems.BackToList").Text, "List")</small>
</h1>
<div class="pull-right">
<button type="submit" name="save" class="btn bg-blue">
<i class="fa fa-floppy-o"></i>
@T("Admin.Common.Save")
</button>
<button type="submit" name="save-continue" class="btn bg-blue">
<i class="fa fa-floppy-o"></i>
@T("Admin.Common.SaveContinue")
</button>
<span id="newsitem-delete" class="btn bg-red">
<i class="fa fa-trash-o"></i>
@T("Admin.Common.Delete")
</span>
</div>
</div>
@Html.Partial("_CreateOrUpdate", Model)
}
@Html.DeleteConfirmation("newsitem-delete")
四.控制器中接收
[HttpPost, ParameterBasedOnFormName("save-continue", "continueEditing")]
public ActionResult Edit(NewsItemModel model, bool continueEditing)
{
if (!_permissionService.Authorize(StandardPermissionProvider.ManageNews))
return AccessDeniedView();
var newsItem = _newsService.GetNewsById(model.Id);
if (newsItem == null)
//No news item found with the specified id
return RedirectToAction("List");
if (ModelState.IsValid)
{
newsItem = model.ToEntity(newsItem);
newsItem.StartDateUtc = model.StartDate;
newsItem.EndDateUtc = model.EndDate;
_newsService.UpdateNews(newsItem);
//search engine name
var seName = newsItem.ValidateSeName(model.SeName, model.Title, true);
_urlRecordService.SaveSlug(newsItem, seName, newsItem.LanguageId);
//Stores
SaveStoreMappings(newsItem, model);
SuccessNotification(_localizationService.GetResource("Admin.ContentManagement.News.NewsItems.Updated"));
if (continueEditing)
{
//selected tab
SaveSelectedTabName();
return RedirectToAction("Edit", new {id = newsItem.Id});
}
return RedirectToAction("List");
}
//If we got this far, something failed, redisplay form
PrepareLanguagesModel(model);
PrepareStoresMappingModel(model, newsItem, true);
return View(model);
}