2012-09-13 11 views
5

Sto convertendo un'app esistente dalle estensioni di Telerik MVC al nuovo prodotto KendoUI. Sto usando il controllo della griglia. Come si specificano i valori predefiniti per le colonne quando si aggiunge una nuova riga alla griglia?UI di Kendo con valori predefiniti di ASP.NET MVC3 quando si aggiunge una riga alla griglia

Con le vecchie estensioni Telerik MVC, ho fatto la seguente:

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

La defaultItem del mio modello è stato il mio difetto per le righe aggiunte. Quindi, come faccio a farlo con Kendo?

risposta

9

Yo yo yo compagno,

È necessario specificare il valore di default per ognuno dei campi tramite la configurazione del modello dataSource

Ecco un esempio è possibile usare;)

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

I ha scritto un metodo di estensione che realizza le funzionalità principali di DefaultDataItem(). Si legge ogni proprietà di un elemento predefinito e imposta il Field() e DefaultValue() nella definizione del modello di origine dati:

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; 
    } 
} 

usare in questo modo:

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