如何在asp.net mvc的telerik网格中添加下拉列表?

时间:2015-03-11 11:45:11

标签: asp.net asp.net-mvc telerik telerik-grid telerik-mvc

我需要在我的应用程序中实现此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))
)
  1. 编辑器模板的源代码(适用于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
    

  2. 3.控制器的源代码

    [HttpGet]
        public ActionResult RemedyOrHpnaCase()
        {
            LCMLookupDAO lcmLookupDAO = new LCMLookupDAO();            
            ViewData["CasePartNumber"] = lcmLookupDAO.PopulateCasePartNumber();
    
            return View("RemedyOrHpnaCase", model);
        }
    
    1. 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; } }

0 个答案:

没有答案