kendoUi网格禁用列

时间:2013-12-05 06:51:47

标签: jquery-ui kendo-ui

我想根据角色安全性禁用数据绑定列。

我目前能够隐藏它而不是禁用如下,但我不知道如何禁用它。请指教,谢谢

function OnDataBound_ProductGrid() {

        if ("@ViewBag.Role" == 'Admin') {
            var grid = $("#Product").data("kendoGrid");
            grid.hideColumn(0);

        }
    }


@(Html.Kendo().Grid(Model)
  .Name("Grid")
  .Columns(columns =>
  {
     columns.Template(ClientTemplate("<input type='checkbox' class='checkbox'/> ");
     columns.Bound(r => r.RouteName);
  })
  .Events(events =>ev.DataBouns("OnDataBound_ProductGrid"))
)

3 个答案:

答案 0 :(得分:0)

您可以通过在数据源上将字段设置为editable: false来完成此操作。

答案 1 :(得分:0)

我同意安东尼的意见:

以下属性必须设置为false:

  model: {
        fields: {
            ProductID: {
                //this field will not be editable (default value is true)
                editable: false
            }
        }
    } 

在您的方案中,您应该可以执行以下操作:

function OnDataBound_ProductGrid() {
        if ("@ViewBag.Role" == 'Admin') {
            var grid = $("#Product").data("kendoGrid");
            grid.datasource.fields.ProductId.editable = false;

        }
    }

围绕网格定义包装/使用管理员角色条件也可以完成这项工作:

    if ("@ViewBag.Role" == 'Admin') { 
       InnitGrid(false);
    }
    else
    {
       InnitGrid(true);
    }

    function InnitGrid(isEditable) {
       $("#grid").kendoGrid({
                       dataSource: {
                                   model: {
                                        fields: {
                                            ProductID: {
                                                editable: isEditable
 // or just replace isEditable with ("@ViewBag.Role" == 'Admin')
                                            }
                                        }
                                    }
                                } 
                            }); 
        }

答案 2 :(得分:0)

你可以使用一个返回true或false的函数,取决于你需要什么。

columns.Bound(r => r.RouteName).Editable("isNotEditable");

function isNotEditable() {
    return false;
}