2013-11-21 2 views
1

Я хочу показать DROPDOWNLIST в кендо на основании значения я получаю в списке ::Показать Выпадающий в Кендо Сетка

для этого я использую Кендо сетки, как ::

 @(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") 

        ) 
         ) 

и модели представления является а ::

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 в сетке, чтобы показать выпадающий список в сетке,

Ex, как это,

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()); 
} 
Смежные вопросы