如何绑定Telerik Grid的只读列

时间:2011-09-20 18:14:57

标签: asp.net-mvc telerik telerik-grid readonly

我有一个带有“创建日期”列的telerik网格。我希望此日期可见,但不可编辑,因此我将其设置为ReadOnly。但是因为它是只读的,所以属性不受我的控制器约束; CreateDate最终为null。我怎样才能使它成为只读但仍然被我的控制器绑定?

@(Html.Telerik().Grid(Model)
.Name("MainGrid")
.ToolBar(commands => commands.Insert())
    .DataKeys(keys => keys.Add(c => c.ID).RouteKey("ID"))
.DataBinding(databinding => databinding
    .Server()
        .Insert("Insert", "Main")
        .Update("Update", "Main")
        .Delete("Delete", "Main"))
.Columns(columns =>
{
    columns.Bound(o => o.Name).Width(200);
    columns.Bound(o => o.CreatedDate).Format("{0:MMM dd, yyyy HH:mm}").ReadOnly().Width(150);
columns.Command(commands =>
        {
            commands.Edit();
            commands.Delete();
        });

2 个答案:

答案 0 :(得分:1)

请参阅.Editable(配置器)。这是一个网格方法,在与.Columns()等相同的级别上使用,而不是以.Columns()的调用结束,尝试添加如下内容:

    ...
    .Editable(editing =>
    {
        var newItem = new SomeEntity
        {
            Name = "defaultName",
            CreateDate = DateTime.Now,
            OtherProperty = otherValue()
        };
        editing.DefaultDataItem(newItem);
    });

答案 1 :(得分:0)

Kendo MVC v 2014.1.528

将您想要的任何列放入网格中。

然后在.Datasource中,说出哪些列可编辑:

.DataSource(dataSource => dataSource
    .Ajax()
    .PageSize(20)
    .Model(model =>
    {
        model.Id(p => p.Id);
        model.Field(f => f.CreatedDate).Editable(false);
        model.Field(f => f.WhateverColumnYouHaveDefined).Editable(false);
    }
)

然后它将绑定并显示,但不能编辑。

希望有所帮助。