我一直在搜索如何使 Kendo Grid ASP.Net MVC (Razor) 中的列仅在创建时可编辑,而在更新时不可编辑。
有什么特别的东西可以帮助我完成这项任务吗?
您可以将自定义函数绑定到 onEdit 事件并使该列只读:
@(Html.Kendo().Grid<DemoType>()
.Name("grid")
.Columns(columns =>
{
/*...*/
})
.Events(events => events
.Edit("onEdit")
)
)
Javascript:
function onEdit(e) {
if (e.model.isNew() == false) {
//$('[name="YourcolumnName"]').attr("readonly", true);
//replace input with span
//taken from https://stackoverflow.com/questions/3142990/jquery-replace-inputs-with-spans
$('[name="YourcolumnName"]').each(function() {
$("<span />", { text: this.value}).insertAfter(this);
$(this).hide();
});
}
}
您只需检查该行的 id 即可确定该行是否正在添加或编辑。
您可以这样做:
@(Html.Kendo().Grid<Model>()
.Name("grid")
.Columns(columns =>
{
columns.Bound(p => p.id).Visible(false);
columns.Bound(p => p.your_column).Editable("isEditable");
})
)
...
<script>
function isEditable(dataItem) {
return !(dataItem.id > 0);
}
</script>