2013-11-21 94 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()); 
}