在我的控制器中,我想查看表单的截止日期是否已过去,然后将Kendo网格设置为仅查看且不可编辑。否则我希望它可以编辑。
我可以在后面的代码中设置Viewbag属性,只是在客户端进行更改,但我希望在服务器端执行此操作。这可能吗?我对MVC有些新意,我对使用ASP.NET网格如何轻松实现这一点感到沮丧。
在MVC中禁用网格的代码是什么?
我也是剑道新手,所以我不太确定如何禁用Kendo UI网格客户端的编辑。所以任何可能的方式对我来说都很好!
答案 0 :(得分:0)
您可以设置每列的可编辑属性,如下所示。
控制器:
public ActionResult Index()
{
ProductModel model = new ProductModel();
model.lst_product = rep.ReadAll();
model.myvar = "no_edit";
return View(model);
}
查看:
@model MtBarkerApplication.Models.ProductModel
@(Html.Kendo().Grid((IEnumerable<MtBarkerApplication.Models.ProductModel>)Model.lst_product)
.Name("grid")
.Columns(columns =>
{
columns.Bound(o => o.ProductID).Visible(false);
columns.Bound(o => o.ProductCode).Title("Product Code");
columns.Bound(o => o.ProductDescription).Title("Product Description");
columns.Command(command => { command.Edit(); command.Destroy(); }).Width(182);
})
.ToolBar(toolbar => toolbar.Create())
.Editable(editable => editable.Mode(GridEditMode.InLine))
.Pageable()
.Sortable()
.Filterable()
.DataSource(dataSource => dataSource
.Ajax()
.PageSize(50)
.Events(events => events.Error("error_handler"))
.Model(model => model.Id(p => p.ProductID))
.Create(update => update.Action("EditingInline_Create", "Product"))
.Read(read => read.Action("EditingInline_Read", "Product"))
.Update(update => update.Action("EditingInline_Update", "Product"))
.Destroy(update => update.Action("EditingInline_Destroy", "Product"))
.Model(model =>
{
if (Model.myvar == "no_edit")
{
model.Field(p => p.ProductCode).Editable(false);
}
})
)
)