Asp.net mvc ASP.NET MVC Telerik网格:如何使一列在编辑时只读?

Asp.net mvc ASP.NET MVC Telerik网格:如何使一列在编辑时只读?,asp.net-mvc,user-interface,telerik,telerik-grid,telerik-mvc,Asp.net Mvc,User Interface,Telerik,Telerik Grid,Telerik Mvc,我有一个ASP.NET MVC Telerik网格,而不是剑道。我有一个两列的网格。第一列是我可以从中选择的项目的下拉列表,第二列只是一个可编辑的文本框 我想在编辑时将第一列设置为只读,这意味着我只能编辑第二列,但不能编辑第一列。我在模型类中的model[ReadOnly]标记和视图中都将第一列设置为只读,即Editablefalse 当我这样做时,我不允许像我所希望的那样在编辑模式下编辑第一列。但是,当我要插入/创建新记录时。。。第一列为空,我只能为第二列输入值 我什么都试过了,到处看看,但找

我有一个ASP.NET MVC Telerik网格,而不是剑道。我有一个两列的网格。第一列是我可以从中选择的项目的下拉列表,第二列只是一个可编辑的文本框

我想在编辑时将第一列设置为只读,这意味着我只能编辑第二列,但不能编辑第一列。我在模型类中的model[ReadOnly]标记和视图中都将第一列设置为只读,即Editablefalse

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


我什么都试过了,到处看看,但找不到解决办法

我的文本字段也有类似的问题。我通过挂接编辑事件解决了这个问题

@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可能会有所不同,但我怀疑解决方案会类似。

试试以下方法:

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"))
    )
)
参考号:

TL;博士

如果使用的是网格模板列,请按如下方式将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>

因此,通过使用上述方法,当进入编辑模式时,该项仍将是只读的。

您能否添加一些javascript使其成为只读的?如何使选择列表成为只读的?有一些AJAX,我不太适应。当我点击编辑时,选择列表出现,否则,我只能查看两个文本区域。你介意显示一些代码或屏幕截图吗?两列都是可编辑的:;对于编辑模式,第一列为只读:;将第一列设置为只读以创建新记录:注意我如何将第一列的空白区域设置为只读。。。这是在正确的轨道上,但它不适合我。当我点击编辑时,第一列变成一个下拉框。我如何防止或阻止这。。。让它成为只读的?