2013-12-05 5 views
0

Я хотел бы отключить столбец на основе данных на основе безопасности роли.kendoUi grid disable column

В настоящее время я могу скрыть его, чтобы отключить его, но я не знаю, как его отключить. Пожалуйста посоветуйте спасибо

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")) 
) 
+0

попробуйте отключить все элементы управления внутри этой строки, например grid._data [0] .find (''). Attr ('disabled', 'disabled'); –

+0

Как вы выглядите с вашей проблемой? – Vojtiik

+0

Привет, Бобби, вместо этого отключите его, я спрячу столбец. Спасибо – Supermode

ответ

0

Я согласен с Антонием:

Следующее свойство должно быть установлено неверно:

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

Вы можете сделать это путем установки поля в editable: false на источнике данных.

+0

Я понимаю, что это не то, чего я хочу достичь, поскольку это флажок, и это зависит от значения ViewBag.Role – Supermode

+0

Используете ли вы ASP-помощники ASP MV для генерации сетки? Не могли бы вы приложить фрагмент, показывающий, как вы объявляете сетку и объясняете проблему? –

+0

Привет Антоний, я добавил свою сетку в сообщение выше – Supermode