5

既存のアプリを Telerik MVC 拡張機能から新しい KendoUI 製品に変換しています。グリッド コントロールを使用しています。グリッドに新しい行を追加するときに、列のデフォルト値を指定するにはどうすればよいですか?

古い Telerik MVC 拡張機能を使用して、次のことを行いました。

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

私のモデルの defaultItem は、追加された行のデフォルトでした。では、剣道でこれを行うにはどうすればよいでしょうか。

4

3 に答える 3

10

ヨーヨーメイト、

dataSource モデル構成を使用して、各フィールドのデフォルト値を指定する必要があります

これはあなたが使うことができる例です;)

@(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);
})
)
于 2012-09-13T19:52:35.340 に答える
0

のコア機能を実現する拡張メソッドを作成しましたDefaultDataItem()。既定の項目のすべてのプロパティを読み取り、データ ソース モデル定義でField()andを設定します。DefaultValue()

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

次のように使用します。

@(Html.Kendo().Grid<MyEntity>()
    ...
    .DataSource(ds => ds
        ...
        .Model(model =>
        {
            model.Id(n => n.Id);
            model.DefaultDataItem(myDefaultEntity);
        }
    )
)
于 2015-06-09T06:05:50.817 に答える
0

DefaultDataItemは現在、特に MVC 拡張機能には存在しません。ただし、回避策としてMVC 拡張機能を使用しなくても可能です。

于 2012-09-13T16:46:01.513 に答える