2012-09-13 15 views
5

Konwertuję istniejącą aplikację z rozszerzeń Telerik MVC na nowszy produkt KendoUI. Używam kontrolki siatki. Jak określić domyślne wartości kolumn podczas dodawania nowego wiersza do siatki?Interfejs użytkownika Kendo z domyślnymi wartościami ASP.NET MVC3 podczas dodawania wiersza do siatki

Z dawnych rozszerzeń Telerik MVC, zrobiłem co następuje:

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

defaultItem mojego modelu był mój domyślnie dla dodawanych wierszy. Więc jak mam to zrobić z Kendo?

Odpowiedz

9

Yo yo yo kolega,

musisz określić wartość domyślną dla każdego z pól poprzez konfigurację modelu DataSource

Oto przykład można użyć;)

@(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 napisałem metodę rozszerzenia, która spełnia podstawową funkcjonalność DefaultDataItem(). Odczytuje każdą właściwość elementu domyślny i ustawia Field() i DefaultValue() w definicji modelu źródło danych:

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

używać go tak:

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