我目前能夠將我的Kendo Grid上的所有記錄提交回控制器,但它並不反映單選按鈕的最新狀態。我不想多次點擊單元格,進入編輯模式,也不需要使用編輯按鈕。我只想簡單地做一個單選按鈕選擇,點擊保存並且將當前狀態反映在我的控制器上。Kendo UI Grid - 如何保存當前單選按鈕狀態
Razor視圖
@model IEnumerable<ECM.DAL.ViewModels.Roles.AcctAppUserRoles>
@using ECM.DAL.Infrastructure.Managers
@using GridEditMode = Kendo.Mvc.UI.GridEditMode
@{
ViewBag.applicationType = (int)SystemWideConfiguration.ApplicationTypes.ECM;
ViewBag.acctId = RightsManager.AccountId;
}
@(Html.Kendo().Grid(Model)
.Name("EcmRolesGrid")
.Columns(columns =>
{
columns.Bound(x => x.IsActive).Width(46)
.ClientTemplate("<input type='radio' name='isActive' value='#= IsActive #' # if (IsActive) { # checked='checked' # } # />")
.Title("Select Role")
.HtmlAttributes(new {style = "text-align:center"});
columns.Bound(r => r.RoleName).Width(75);
columns.Bound(r => r.RoleDescription).Width(125);
})
.HtmlAttributes(new { style = "height:340px;" })
.Editable(editable => editable.Mode(GridEditMode.InLine))
.DataSource(dataSource => dataSource
.Ajax()
.ServerOperation(false)
.Model(model => model.Id(p => p.UserId))
.Read(read => read.Action("GetApplicationAndAccountRoles", "User", new { applicationType = ViewBag.applicationType, acctId = ViewBag.acctId, userId = ViewBag.EcmRoleUserId.ToString() }))
.Update(update => update.Action("SaveApplicationRoles", "User")))
)
控制器:
[AcceptVerbs(HttpVerbs.Post)]
[HandleAjaxReturnableException]
public void SaveApplicationRoles(IEnumerable<AcctAppUserRoles> updatedRoles)
{
var userRoleDal = new UserRoleDal();
var roleDal = new RoleDal();
var applicationId = Guid.Empty;
var userId = Guid.Empty;
if (updatedRoles != null)
...
的Javascript(我用這個,因爲我有這個觀點與幾個網格幾個選項卡)
function EcmRolesGridHasChanges() {
$.ajax({
url: 'user/SaveApplicationRoles',
cache: false,
type: 'POST',
contentType: 'application/json;',
charset:'utf-8',
data: JSON.stringify($("#EcmRolesGrid").data().kendoGrid._data)
});
}
讓我給你也是一個視覺的人......
網格最初加載時,選擇「訂單輸入」角色。 (未顯示)
我現在會選擇 「受限用戶」
當我點擊保存這就是我得到的控制器上:
我期待第一個是假的,第二個是真的,第三個是假的。
任何想法?
謝謝。
我不得不做小的修改。但是你的回答讓我走向正確的方向。 –