ASP.NET MVC Telerik Grid:如何在编辑时使一列只读?

时间:2014-10-15 19:08:43

标签: asp.net-mvc user-interface telerik telerik-grid telerik-mvc

我有一个ASP.NET MVC Telerik Grid(不是Kendo)。我有一个有两列的网格。第一列是我可以选择的项目的下拉列表,第二列只是一个可编辑的文本框。

我想在编辑时将第一列设置为READ ONLY,这意味着我只能编辑第二列而不能编辑第一列。我将第一列设置为只读取模型(模型类中的[ReadOnly]标签)和视图(即可编辑(假))。

当我这样做时,我不允许像我想要的那样在编辑模式下编辑第一列。但是,当我去插入/创建一个新记录时......第一列是空白的,我只能输入第二列的值。

我已经尝试了一切并环顾四周,但无法找到解决方案。

3 个答案:

答案 0 :(得分:6)

试试这个:

model.Field(p => p.Name).Editable(false)

示例:

@(Html.Kendo().Grid<OrderViewModel>()
    .Name("grid")
    .Columns(columns =>
    {
        columns.Bound(p => p.Id).Sortable(false).Visible(false);
        columns.Bound(p => p.Name);
        columns.Bound(p => p.Notes);
        columns.Command(command => { command.Edit(); }).Width(172);
    })
    .Pageable()
    .Sortable()
    .Scrollable()
    .Filterable()
    .HtmlAttributes(new { style = "height:550px;" })
    .DataSource(dataSource => dataSource
        .Ajax()
        .PageSize(20)
        .Read(read => read.Action("Orders_Read", "Grid"))
        .Model(model => {
                 model.Id(p => p.Id);
                 model.Field(p => p.Name).Editable(false);
         })
        .Update(update => update.Action("EditingInline_Update", "Grid"))
    )
)

参考:http://docs.telerik.com/kendo-ui/aspnet-mvc/helpers/grid/configuration#model

答案 1 :(得分:2)

我在文本字段中遇到了类似的问题。我通过挂钩编辑事件解决了这个问题。

@Html.Kendo().Grid<MyViewModel>()...Events(e => e.Edit("onGridEdit"))
<script type="text/javascript">
  function onGridEdit(e) {
    if (!e.model.isNew()) 
      e.container.find('input#ID').prop('disabled', true);
  }
</script>

在这个例子中,我希望我的ID字段在创建后不可更改。你的里程和jQuery可能会有所不同,但我怀疑解决方案是类似的。

答案 2 :(得分:-1)

TL; DR;

如果使用的是网格模板列,请按如下所示将EditItemTemplate保留为空:

 <telerik:GridTemplateColumn DataField="opt_id" UniqueName="opt_id" DataType="System.Int32">
     <ItemTemplate>
         <telerik:RadLabel Text='<%# DataBinder.Eval(Container.DataItem, "opt_id") %>' runat="server" />
     </ItemTemplate>
     <EditItemTemplate></EditItemTemplate>
 </telerik:GridTemplateColumn>

因此,通过使用上述内容,进入编辑模式后,该项目仍将是只读的。