Hi,
I want to add dropdownlist list of Role field to my grid cell.
Currently I am using ASP.NET MVC3 RAZOR engine.
I have a template. When it is executed, RoleName field is displayed as label in grid cell which should be displayed as drop down list.
_RoleDropDown.cshtml
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
@(Html.Kendo().DropDownList()
.Name("RoleName")
.DataTextField("Text")
.DataValueField("Value")
.BindTo(new List<SelectListItem>
{
new SelectListItem {Text = "Admin", Value = "Admin"},
new SelectListItem {Text = "User", Value = "User"}
}))
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
My current view is as follows.
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
@model List<TssPlog.Models.User>
@{
ViewBag.Title = "Index";
Layout = "~/Views/Shared/AdminLayout.cshtml";
}
<div>
<fieldset>
<legend>Logs</legend>
<p></p>
@{
Html.Kendo().Grid(Model)
.Name("UserGrid")
.Columns(
columns =>
{
columns.Bound(p => p.FirstName);
columns.Bound(p => p.LastName);
columns.Bound(p => p.Ntid);
columns.Bound(p => p.RoleName).EditorTemplateName("_RoleDropDown");
columns.Bound(p => p.Phone);
columns.Bound(p => p.EmailAddress);
}
)
.Pageable(ps => ps.Refresh(true)
.PreviousNext(true).PageSizes(true))
.Sortable()
.Editable(m=>m.Mode(GridEditMode.InCell))
.ToolBar(toolbar=>toolbar.Save().SaveText("Save").CancelText("Cancel"))
.Selectable(s => s.Enabled(true)
.Type(GridSelectionType.Row)
.Mode(GridSelectionMode.Single))
.Filterable()
.DataSource
(dataSource => dataSource
.Ajax()
.Batch(true)
.Read(read => read.Action("UsersRead", "AdminUserAdministration"))
.Update(update => update.Action("UsersUpdate", "AdminUserAdministration"))
.PageSize(5)
.ServerOperation(false)
.Model(model => { model.Id(p => p.UserId); model.Field(p => p.UserId).Editable(false); }
)
).Render();
}
</fieldset>
</div>
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
and my controller is as follows.
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using Kendo.Mvc.Extensions;
using Kendo.Mvc.UI;
using TssPlog.Models;
namespace TssPlog.Controllers
{
public class AdminUserAdministrationController : Controller
{
//
// GET: /AdminUserAdministration/
public ActionResult Index()
{
var userManager = new UserManager(Request.ServerVariables["LOGON_USER"]);
PopulateRoleNames();
return View(userManager.GetAllUser());
}
public ActionResult UsersRead([DataSourceRequest] DataSourceRequest request)
{
var userManager = new UserManager(Request.ServerVariables["LOGON_USER"]);
return Json(userManager.GetAllUser().ToDataSourceResult(request));
}
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult UsersUpdate([DataSourceRequest] DataSourceRequest request, [Bind(Prefix = "models")]IEnumerable<User> users)
{
if (users != null && ModelState.IsValid)
{
foreach (var user in users)
{
var userManager = new UserManager();
userManager.UpdateUser(user);
}
}
return Json(ModelState.ToDataSourceResult());
}
}
}
Best regards
Parvez Nawaz
I want to add dropdownlist list of Role field to my grid cell.
Currently I am using ASP.NET MVC3 RAZOR engine.
I have a template. When it is executed, RoleName field is displayed as label in grid cell which should be displayed as drop down list.
_RoleDropDown.cshtml
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
@(Html.Kendo().DropDownList()
.Name("RoleName")
.DataTextField("Text")
.DataValueField("Value")
.BindTo(new List<SelectListItem>
{
new SelectListItem {Text = "Admin", Value = "Admin"},
new SelectListItem {Text = "User", Value = "User"}
}))
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
My current view is as follows.
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
@model List<TssPlog.Models.User>
@{
ViewBag.Title = "Index";
Layout = "~/Views/Shared/AdminLayout.cshtml";
}
<div>
<fieldset>
<legend>Logs</legend>
<p></p>
@{
Html.Kendo().Grid(Model)
.Name("UserGrid")
.Columns(
columns =>
{
columns.Bound(p => p.FirstName);
columns.Bound(p => p.LastName);
columns.Bound(p => p.Ntid);
columns.Bound(p => p.RoleName).EditorTemplateName("_RoleDropDown");
columns.Bound(p => p.Phone);
columns.Bound(p => p.EmailAddress);
}
)
.Pageable(ps => ps.Refresh(true)
.PreviousNext(true).PageSizes(true))
.Sortable()
.Editable(m=>m.Mode(GridEditMode.InCell))
.ToolBar(toolbar=>toolbar.Save().SaveText("Save").CancelText("Cancel"))
.Selectable(s => s.Enabled(true)
.Type(GridSelectionType.Row)
.Mode(GridSelectionMode.Single))
.Filterable()
.DataSource
(dataSource => dataSource
.Ajax()
.Batch(true)
.Read(read => read.Action("UsersRead", "AdminUserAdministration"))
.Update(update => update.Action("UsersUpdate", "AdminUserAdministration"))
.PageSize(5)
.ServerOperation(false)
.Model(model => { model.Id(p => p.UserId); model.Field(p => p.UserId).Editable(false); }
)
).Render();
}
</fieldset>
</div>
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
and my controller is as follows.
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using Kendo.Mvc.Extensions;
using Kendo.Mvc.UI;
using TssPlog.Models;
namespace TssPlog.Controllers
{
public class AdminUserAdministrationController : Controller
{
//
// GET: /AdminUserAdministration/
public ActionResult Index()
{
var userManager = new UserManager(Request.ServerVariables["LOGON_USER"]);
PopulateRoleNames();
return View(userManager.GetAllUser());
}
public ActionResult UsersRead([DataSourceRequest] DataSourceRequest request)
{
var userManager = new UserManager(Request.ServerVariables["LOGON_USER"]);
return Json(userManager.GetAllUser().ToDataSourceResult(request));
}
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult UsersUpdate([DataSourceRequest] DataSourceRequest request, [Bind(Prefix = "models")]IEnumerable<User> users)
{
if (users != null && ModelState.IsValid)
{
foreach (var user in users)
{
var userManager = new UserManager();
userManager.UpdateUser(user);
}
}
return Json(ModelState.ToDataSourceResult());
}
}
}
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Best regards
Parvez Nawaz