2012-09-13 5 views
5

Ich konvertiere eine bestehende App von Telerik MVC-Erweiterungen auf das neuere KendoUI-Produkt. Ich verwende die Gittersteuerung. Wie gebe ich die Standardwerte für die Spalten beim Hinzufügen einer neuen Zeile zum Raster an?Kendo UI mit ASP.NET MVC3 Standardwerte beim Hinzufügen einer Zeile zum Raster

Mit den alten MVC Erweiterungen Telerik, habe ich folgendes:

.Editable(editing=>editing.Mode(GridEditMode.InCell).DefaultDataItem(Model.defaultItem)) 

Die defaultItem meines Modells für zusätzliche Zeilen meine Standard war. Wie mache ich das mit Kendo?

Antwort

9

Yo yo yo Kumpel,

Sie benötigen;)

@(Html.Kendo() 
.Grid<TestModel>() 
.Name("SomeOtherGridName") 
.DataSource(ds => ds.Ajax().Read("test", "test").Model(
    x => { 
     x.Field(c => c.Val1).DefaultValue(5); 
     x.Field(c => c.Val2).DefaultValue("cool!"); 
    } 
)) 
.Columns(columns => 
{ 
    columns.Bound(c => c.Val1); 
    columns.Bound(c => c.Val2); 
}) 
) 
0

DefaultDataItem does not currently exist in den MVC-Erweiterungen speziell. Es ist jedoch immer noch möglich, without using the MVC extensions als Work-Around. Standardwert für jedes der Felder über die Datasource-Modellkonfiguration

Hier ist ein Beispiel angeben, können Sie verwenden

0

I schrieb eine Erweiterungsmethode, die die Kernfunktionalität von DefaultDataItem() erfüllt. Es liest jede Eigenschaft eines Standardelements und setzt die Field() und DefaultValue() in der Datenquelle Modelldefinition:

public static class DataSourceModelDescriptorFactoryExtensions 
{ 
    public static DataSourceModelDescriptorFactory<TModel> DefaultDataItem<TModel>(
     this DataSourceModelDescriptorFactory<TModel> dataSourceModelBuilder, 
     TModel defaultDataItem) where TModel : class 
    { 
     var propertyInfos = typeof(TModel).GetProperties(); 
     foreach (var propertyInfo in propertyInfos) 
     { 
      dataSourceModelBuilder 
       .Field(propertyInfo.Name, propertyInfo.PropertyType) 
       .DefaultValue(propertyInfo.GetValue(defaultDataItem)); 
     } 

     return dataSourceModelBuilder; 
    } 
} 

es wie folgt verwendet:

@(Html.Kendo().Grid<MyEntity>() 
    ... 
    .DataSource(ds => ds 
     ... 
     .Model(model => 
     { 
      model.Id(n => n.Id); 
      model.DefaultDataItem(myDefaultEntity); 
     } 
    ) 
)