如何使用代码隐藏在MVC中禁用Kendo Grid上的编辑?

时间:2014-01-13 21:49:13

标签: jquery asp.net-mvc kendo-ui kendo-grid kendo-asp.net-mvc

在我的控制器中,我想查看表单的截止日期是否已过去,然后将Kendo网格设置为仅查看且不可编辑。否则我希望它可以编辑。

我可以在后面的代码中设置Viewbag属性,只是在客户端进行更改,但我希望在服务器端执行此操作。这可能吗?我对MVC有些新意,我对使用ASP.NET网格如何轻松实现这一点感到沮丧。

在MVC中禁用网格的代码是什么?

我也是剑道新手,所以我不太确定如何禁用Kendo UI网格客户端的编辑。所以任何可能的方式对我来说都很好!

1 个答案:

答案 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);
                }

          })
        )
    )