2013-11-21 98 views
1

我想表明基于价值,我得到的名单::显示下拉剑道电网

的,我现在用的剑道电网为::

 @(Html.Kendo().Grid(Model) 
        .Name("Reference") 
        .TableHtmlAttributes(new { style = "height:20px; " }) 
        .Columns(columns => 
        { 
         columns.Bound(p => p.ReferenceID).Hidden(true).ClientTemplate("#= ReferenceID#" + "<input type='hidden' class='ReferenceID' value='#=ReferenceID#' />"); 
         columns.Bound(p => p.ReferenceName).Title("Reference").Width(10).ClientTemplate("#= ReferenceName#" + "<input type='hidden' class='ReferenceName' value='#=ReferenceName#' />"); 
columns.Bound(p => p.ReferenceDescription).Title("Description").Width(10).ClientTemplate("#= ReferenceDescription#" + "<input type='hidden' class='ReferenceDescription' value='#=ReferenceDescription#' />"); 
         columns.Bound(p => p.DefaultReferenceValue).Title("Value").Width(7); 
        columns.Bound(p => p.ReferenceValue).Title("Valid Value").Width(7).EditorTemplateName("ReferenceValidValue"); 
        .Editable(ed => ed.Mode(GridEditMode.InCell)) 
        .Navigatable() 
        .Sortable() 
        .Scrollable(scr => scr.Height(200)) 
        .Scrollable() 
        .DataSource(dataSource => dataSource 
         .Ajax() 
         .Batch(true) 
         .ServerOperation(false) 
         .Events(events => events.Error("error_handler")) 
         .Model(model => 
           { 
            model.Id(p => p.ReferenceID); 
           } 
         ) 
         .Create("Reference_Create", "Document") 
         .Read("Reference_Read", "Document") 
         .Update("Reference_Update", "Document") 
         .Destroy("Reference_Destroy", "Document") 

        ) 
         ) 

和视图模型是剑道DROPDOWNLIST作为::

public class ReferenceViewModel 
    { 
     public long ReferenceID { get; set; } 
     public string ReferenceName { get; set; } 
     public List<ReferenceValidValueViewModel> ReferenceValue { get; set; } 
    } 

    public class ReferenceValidValueViewModel 
    { 
     public long ReferenceValidValueID { get; set; } 
     public long ReferenceID { get; set; } 
     public string ValidValue { get; set; } 
    } 

我得到的结果是这样的:: enter image description here

但我想下拉列表这是最后一列列表

请帮我对此。

现在我得到这样的事情:: enter image description here

为此,我已经使用了编辑模板“ReferenceValidValue”为::

@model IEnumerable<Invoice.Models.ViewModels.ReferenceValidValueViewModel> 

@(Html.Kendo().DropDownList() 
    .Name("ReferenceValue") //The name of the dropdownlist is mandatory. It specifies the "id" attribute of the widget. 
    .DataTextField("ValidValue") //Specifies which property of the Product to be used by the dropdownlist as a text. 
    .DataValueField("ReferenceValidValueID") //Specifies which property of the Product to be used by the dropdownlist as a value. 

    .SelectedIndex(0) //Select first item. 
) 

现在请帮我在这我怎么能显示下拉列表中有值的列表。

回答

0

喜用ForeignKey网格显示网格下拉列表中,

防爆这样,

columns.ForeignKey(p => p.CategoryID, (System.Collections.IEnumerable)ViewData["categoryList"], "CategoryID", "Category").Title("Organization Size").HeaderHtmlAttributes(new { @class = "fontbold" }).Width(170).HtmlAttributes(new { @title = "#= Category #" }); 

阅读此链接,下拉演示:http://demos.kendoui.com/web/grid/foreignkeycolumn.html

+0

但是我没有在这种情况下使用ViewData。 我必须根据不同情况给出不同的数据。 你可以在上面查看我的ViewModel。请在此基础上给我建议。 – Rahul

0

这个代码可以帮助你:

var stationComboList = StationVM.GetComboList(); 
var transponderComboList = TransponderVM.GetComboList(); 

var grid = Html.Kendo().Grid<GroupStationTransponderVM>() 
       .Name("grdGroupStationTransponder") 
       .Columns(columns => 
        { 
         columns.Bound(t => t.ntbOrdinal).Title("Orden").Width(80); 
         columns.ForeignKey(t => t.dllStationId, stationComboList, "Id", "Description").Title("Estaciones a utilizar").Width(180); 
         columns.ForeignKey(t => t.dllTransponderId, transponderComboList, "Id", "Description").Title("Transponders a utilizar").Width(200); 
         columns.Bound(t => t.cpColor).ClientTemplate("<div class='circle' style='background-color: #: cpColor #'></div>").Width(73); 
         columns.Command(command => 
          { 
           command.Edit().CancelText("Cancelar").UpdateText("Confirmar"); 
           command.Destroy(); 
          }).Width(210).HtmlAttributes(new { style = "text-align: center;" }); 
        }) 
       .ToolBar(toolbar => toolbar.Create()) 

       .Editable(editable => editable.Mode(GridEditMode.InLine)) 
       .Pageable() 
       .Navigatable() 
       .Sortable() 
       .Scrollable()         
       .Resizable(r=>r.Columns(false)) 
       .DataSource(dataSource => dataSource 
              .Ajax() 
              .PageSize(15) 
              .ServerOperation(false) 
              .Events(events => events.Error("error_handler")) 
              .Model(model => 
               { 
                model.Id(t => t.Id); 
                model.Field(t => t.ntbOrdinal).DefaultValue(1); 
                model.Field(t => t.dllStationId).DefaultValue(42); 
                model.Field(t => t.dllTransponderId).DefaultValue(1);      
                model.Field(t => t.cpColor).DefaultValue(("#000000")); 
               })                
              .Create(create => create.Action("GroupStationTransponder_Create", "Group")) 
              .Read("GroupStationTransponder_Read", "Group") 
              .Update("GroupStationTransponder_Update", "Group") 
              .Destroy("GroupStationTransponder_Destroy", "Group") 
    ) 
       .Events(events => events.DataBound("onGrdDataBound") 
             .Edit("onListClearError") 
             .Save("onListClearError") 
             .Cancel("onListClearError") 
             .Remove("onListClearError") 
    ).ToComponent(); 
    grid.Render(); 

} 

正如你可以看到在t op,我为每个组合列表定义了两个小节。在VM中,您定义了一个像.GetComboList()这样的方法:

public static IEnumerable<ComboItem> GetComboList() 
{ 
    //here you should set you logic for getting the datasource of the combo 
    return ComboItem.EnumerableFromDataTable(Transponder.GetComboList()); 
}