我需要在我的应用程序中实现此telerik网格(您可以在此处检查网格演示: - GRID)。我希望网格中的一列是一个下拉控件,它会在点击它时显示所有值。
我在telerik网站上发布了一些文章(Article1),但我仍然无法实现这些功能。
基本上,我从数据库中获取数据,并将其保存到控制器中的视图状态中。我后来把它绑定到编辑器模板(下拉列表)。
我已经分享了我的代码供您参考。如果您有任何建议,请告诉我。
这是我的源代码: - 1.网格的源代码
@(Html.Kendo().Grid<Lamp.Model.RemedyOrHpnaCaseModel>()
.Name("Grid")
.EnableCustomBinding(true)
.Columns(columns =>
{
columns.Bound(p => p.SystemName).Width("20%");
columns.Bound(p => p.PartNumber).Width("20%");
columns.Bound(p => p.Manufacturer).Width("20%");
columns.Bound(p => p.CasePartNumber).Width("20%");
columns.Bound(p => p.Notes).Title("Notes");
columns.Command(command => command.Destroy()).Width(110);
})
.ToolBar(toolbar =>
{
toolbar.Create();
toolbar.Save();
})
.Editable(editable => editable.Mode(GridEditMode.InCell))
.Pageable()
.Navigatable()
.Sortable()
.Scrollable()
.Filterable()
.HtmlAttributes(new { style = "height:460px" })
.DataSource(dataSource => dataSource
.Ajax()
.Batch(true)
.PageSize(10)
.ServerOperation(false)
.Events(events => events.Error("error_handler"))
.Model(model =>
{
model.Id(p => p.PartNumber);
model.Field(p => p.PartNumber).Editable(false);
model.Field(p => p.SystemName).Editable(false);
model.Field(p => p.Manufacturer).Editable(false);
})
.Read(read => read.Action("RemedyOrHpnaCase_Read", "LCMLookup"))
.Update(update => update.Action("RemedyOrHpnaCase_Update", "LCMLookup"))
)
.Resizable(resize => resize.Columns(true))
)
编辑器模板的源代码(适用于DropDown)
@(Html.Kendo().DropDownList<Lamp.Model.CasePartNumber>()
.Name("CasePartNumber") // Name of the widget should be the same as the name of the property
.DataValueField("DeviceID") // The value of the dropdown is taken from the CasePartID property
.DataTextField("PartNumber") // The text of the items is taken from the CasePartName property
.BindTo((System.Collections.IEnumerable)ViewData["CasePartNumber"]) // A list of all casepartnumber which is populated in the controller
)
3.控制器的源代码
[HttpGet]
public ActionResult RemedyOrHpnaCase()
{
LCMLookupDAO lcmLookupDAO = new LCMLookupDAO();
ViewData["CasePartNumber"] = lcmLookupDAO.PopulateCasePartNumber();
return View("RemedyOrHpnaCase", model);
}
Model类的源代码
public class RemedyOrHpnaCaseModel
{
public string SystemName { get; set; }
public string PartNumber { get; set; }
public string Manufacturer { get; set; }
[UIHint("CasePartNumberEditor")]
public IEnumerable CasePartNumber { get; set; }
public string Notes { get; set; }
}
public class CasePartNumber
{
public int? DeviceID { get; set; }
public string PartNumber { get; set; }
}