2012-09-13 28 views
5

Tôi đang chuyển đổi ứng dụng hiện có từ tiện ích mở rộng Telerik MVC sang sản phẩm KendoUI mới hơn. Tôi đang sử dụng điều khiển lưới. Làm cách nào để chỉ định giá trị mặc định cho các cột khi thêm hàng mới vào lưới?Giao diện người dùng Kendo với giá trị mặc định ASP.NET MVC3 khi thêm hàng vào lưới

Với các phần mở rộng Telerik MVC cũ, tôi đã làm như sau:

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

Các defaultItem của mô hình của tôi là mặc định của tôi cho các hàng gia tăng. Vậy làm thế nào để tôi làm điều này với Kendo?

Trả lời

9

Yo yo yo mate,

Bạn cần phải xác định giá trị mặc định cho mỗi người trong số các lĩnh vực thông qua cấu hình mô hình dataSource

Dưới đây là một ví dụ bạn có thể sử dụng;)

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

tôi đã viết một phương pháp mở rộng hoàn thành chức năng chính của DefaultDataItem(). Nó đọc tất cả các tài sản của một mục mặc định và đặt Field()DefaultValue() trong định nghĩa mô hình nguồn dữ liệu:

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

Sử dụng nó như thế này:

@(Html.Kendo().Grid<MyEntity>() 
    ... 
    .DataSource(ds => ds 
     ... 
     .Model(model => 
     { 
      model.Id(n => n.Id); 
      model.DefaultDataItem(myDefaultEntity); 
     } 
    ) 
) 
Các vấn đề liên quan