我与KendoUI MVC在MVC3工作。
我设法在网格中列的下拉。 但是,我对如何设置所选值不知道,当我保存它不保存我的选择的值。
网格
@using Perseus.Areas.Communication.Models
@using Perseus.Common.BusinessEntities;
<div class="gridWrapper">
@(Html.Kendo().Grid<CommunicationModel>()
.Name("grid")
.Columns(colums =>
{
colums.Bound(o => o.communication_type_id)
.EditorTemplateName("_communicationDropDown")
.ClientTemplate("#: communication_type #")
.Title("Type")
.Width(180);
colums.Bound(o => o.sequence).Width(180);
colums.Bound(o => o.remarks);
colums.Command(command => command.Edit()).Width(50);
})
.Pageable()
.Sortable()
.Filterable()
.Groupable()
.Editable(edit => edit.Mode(GridEditMode.InLine))
.DataSource(dataSource => dataSource
.Ajax()
.ServerOperation(false)
.Model(model => model.Id(o => o.communication_id))
.Read(read => read.Action("AjaxBinding", "Communication", new { id = @ViewBag.addressId }))
.Update(update => update.Action("Update", "Communication"))
.Sort(sort => { sort.Add(o => o.sequence).Ascending(); })
.PageSize(20)
)
)
</div>
该EditorTemplate“_communicationDropDown
@model Perseus.Areas.Communication.Models.CommunicationModel
@(Html.Kendo().DropDownListFor(c => c.communication_type_id)
.Name("DropDownListCommunication")
.DataTextField("description1")
.DataValueField("communication_type_id")
.BindTo(ViewBag.CommunicationTypes))
我认为这是要指出的是,DropDownList的名称应与列名属性的重要一员。 在HTML属性名称=“”,而不是列的标题。 因为你是取代另一个控制从一个编辑模板来编辑操作过程中采取了替代默认编辑器控件,名称属性必须匹配这个工作。 如果在DOM被序列回复到模型的更新操作的名称不匹配,从编辑模板控件的值将被忽略。 默认情况下,它是出现在模型类,除非标记重写属性变量名。
(答案编辑成包括插入记录操作)。
这是一个工作示例:
模型类:
public class Employee
{
public int EmployeeId { get; set; }
public string Name { get; set; }
public string Department { get; set; }
}
视图:
@(Html.Kendo().Grid<Employee>()
.Name("Grid")
.Columns(columns =>
{
columns.Bound(p => p.Name).Width(50);
columns.Bound(p => p.Department).Width(50).EditorTemplateName("DepartmentDropDownList");
columns.Command(command => command.Edit()).Width(50);
})
.ToolBar(commands => commands.Create())
.Editable(editable => editable.Mode(GridEditMode.InLine))
.DataSource(dataSource => dataSource
.Ajax()
.Model(model => model.Id(p => p.EmployeeId))
.Read(read => read.Action("GetEmployees", "Home"))
.Update(update => update.Action("UpdateEmployees", "Home"))
.Create(create => create.Action("CreateEmployee", "Home"))
)
)
局部视图编辑模板,文件名“DepartmentDropDownList”,位于特定于该视图中EditorTemplates文件夹。 即。 首页\查看\ EditorTemplates \ DepartmentDropDownList.cshtml
@model string
@(Html.Kendo().DropDownList()
.Name("Department") //Important, must match the column's name
.Value(Model)
.SelectedIndex(0)
.BindTo(new string[] { "IT", "Sales", "Finance" })) //Static list of departments, can bind this to anything else. ie. the contents in the ViewBag
控制器的读操作:
public ActionResult GetEmployees([DataSourceRequest]DataSourceRequest request)
{
List<Employee> list = new List<Employee>();
Employee employee = new Employee() { EmployeeId = 1, Name = "John Smith", Department = "Sales" };
list.Add(employee);
employee = new Employee() { EmployeeId = 2, Name = "Ted Teller", Department = "Finance" };
list.Add(employee);
return Json(list.ToDataSourceResult(request));
}
控制器的更新操作:
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult UpdateEmployees([DataSourceRequest] DataSourceRequest request, Employee employee)
{
return Json(new[] { employee }.ToDataSourceResult(request, ModelState));
}
控制器创建操作:
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult CreateEmployee([DataSourceRequest] DataSourceRequest request, Employee employee)
{
employee.EmployeeId = (new Random()).Next(1000);
return Json(new[] { employee }.ToDataSourceResult(request, ModelState));
}
文章来源: How can I set and get the value of a dropdownlist in a grid in Kendo UI MVC?