2014-01-13 53 views
0

在我的控制器中,我想檢查表單的截止日期是否過去,然後將Kendo網格設置爲僅可查看且不可編輯。否則,我希望它是可編輯的。如何在MVC中使用後面的代碼禁用編輯Kendo網格?

我可以在後面的代碼中設置Viewbag屬性,只是在客戶端進行更改,但我希望能夠在服務器端執行此操作。這可能嗎?我對MVC有點新,我很沮喪地知道ASP.NET網格如此容易。

在MVC中禁用網格背後的代碼是什麼?

我也是新來的劍道,所以我不太確定如何甚至禁用Kendo UI網格客戶端上的編輯。所以任何方式都可以,我很好!

回答

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

      }) 
     ) 
    ) 
相關問題