添加记录时使所有列都可编辑,而现有记录仅允许编辑某些列
Make all columns editable when adding a record while existing records only allow some columns to be edited
问题描述
我正在尝试使用用于 display/update/create 记录的 Telerik UI 实现网格。网格配置为使用 in-cell 编辑和更新,只有一些列是可编辑的,但是当用户添加记录时,新添加行的每个单元格都应该是可编辑的。我已经尝试挂钩 Edit
事件并使字段可编辑,但是通过这样做,不仅新行的 Title 单元格变得可编辑,而且现有的标题 个单元格。
视图的相关代码部分可以在下面找到。
Data.cshtml
<script>
'use strict';
function onEdit(event) {
if (event.model.isNew()) {
event.model.fields.Title.editable = true;
}
}
</script>
@(Html.Kendo().Grid<DataViewModel>()
.Name("DataGrid")
.Columns(columns =>
{
columns.Bound(model => model.Title);
columns.Bound(model => model.Description);
columns.Bound(model => model.Count);
})
.Editable(edit => edit.Mode(GridEditMode.InCell))
.ToolBar(toolbar =>
{
toolbar.Create();
toolbar.Save();
})
.Events(events => events
.Edit("onEdit")
)
.DataSource(dataSource => dataSource
.Ajax()
.Batch(true)
.ServerOperation(false)
.Read("DataRead", "Data")
.Create("DataCreate", "Data")
.Update("DataUpdate", "Data")
.Model(model =>
{
model.Id(x => x.Id);
model.Field(x => x.Title).Editable(false);
})
)
)
Kendo UI v2020.2.617, Telerik.UI.for.AspNet.Core 2020.2.617
一个选项不是将模型设置为可编辑 属性 并挂钩 onEdit 事件,您可以尝试以下将调用 js 函数来确定列是否应可编辑的方法:
@(Html.Kendo().Grid<DataViewModel>()
.Name("DataGrid")
.Columns(columns =>
{
columns.Bound(model => model.Title).Editable("titleEditable");
columns.Bound(model => model.Description);
columns.Bound(model => model.Count);
})
//truncated for brevity
<script>
function titleEditable(dataItem) {
return dataItem.isNew();
}
</script>
问题描述
我正在尝试使用用于 display/update/create 记录的 Telerik UI 实现网格。网格配置为使用 in-cell 编辑和更新,只有一些列是可编辑的,但是当用户添加记录时,新添加行的每个单元格都应该是可编辑的。我已经尝试挂钩 Edit
事件并使字段可编辑,但是通过这样做,不仅新行的 Title 单元格变得可编辑,而且现有的标题 个单元格。
视图的相关代码部分可以在下面找到。
Data.cshtml
<script>
'use strict';
function onEdit(event) {
if (event.model.isNew()) {
event.model.fields.Title.editable = true;
}
}
</script>
@(Html.Kendo().Grid<DataViewModel>()
.Name("DataGrid")
.Columns(columns =>
{
columns.Bound(model => model.Title);
columns.Bound(model => model.Description);
columns.Bound(model => model.Count);
})
.Editable(edit => edit.Mode(GridEditMode.InCell))
.ToolBar(toolbar =>
{
toolbar.Create();
toolbar.Save();
})
.Events(events => events
.Edit("onEdit")
)
.DataSource(dataSource => dataSource
.Ajax()
.Batch(true)
.ServerOperation(false)
.Read("DataRead", "Data")
.Create("DataCreate", "Data")
.Update("DataUpdate", "Data")
.Model(model =>
{
model.Id(x => x.Id);
model.Field(x => x.Title).Editable(false);
})
)
)
Kendo UI v2020.2.617, Telerik.UI.for.AspNet.Core 2020.2.617
一个选项不是将模型设置为可编辑 属性 并挂钩 onEdit 事件,您可以尝试以下将调用 js 函数来确定列是否应可编辑的方法:
@(Html.Kendo().Grid<DataViewModel>()
.Name("DataGrid")
.Columns(columns =>
{
columns.Bound(model => model.Title).Editable("titleEditable");
columns.Bound(model => model.Description);
columns.Bound(model => model.Count);
})
//truncated for brevity
<script>
function titleEditable(dataItem) {
return dataItem.isNew();
}
</script>