1

有什么方法可以显示和隐藏列 onEdit 和 Add 模式。如示例代码中所示。我想在添加和编辑模式下显示单价并在查看模式下隐藏。请指教。但是下面会缩小网格。我想让它仍然是 100%。如果用户单击取消,我应该使用什么事件。

@model IEnumerable<Kendo.Mvc.Examples.Models.ProductViewModel>

@(Html.Kendo().Grid(Model)    
    .Name("Grid")
    .Columns(columns =>
    {
        columns.Bound(p => p.ProductID);
        columns.Bound(p => p.ProductName);
        columns.Bound(p => p.UnitPrice);

    })
    .Groupable()
    .Pageable()
    .Sortable()
    .Scrollable()
    .Filterable()
    .DataSource(dataSource => dataSource
        .Ajax()
        .Read(read => read.Action("Products_Read", "Grid"))
    )
     .Events(ev => ev.DataBound("onDataBound").Edit("onEdit"))
)


<script type="text/javascript">

function onEdit(e) {
var grid = $('#Product').data('kendoGrid');
        if (!e.model.isNew()) {
            grid.showColumn(2);
        }
        else
        {
            grid.showColumn(2);
        }

function onDataBound(e) {
    var grid = $('#Product').data('kendoGrid');
    grid.hideColumn(2);
</script>
4

2 回答 2

3

实际上在popup模式中隐藏的原始列grid没有隐藏。如果你删除你的onEdit功能就足够了。您甚至可以在列初始化中删除dataBound并将其设置为:hidden

@model IEnumerable<Kendo.Mvc.Examples.Models.ProductViewModel>

@(Html.Kendo().Grid(Model)    
    .Name("Grid")
    .Columns(columns =>
    {
        columns.Bound(p => p.ProductID);
        columns.Bound(p => p.ProductName);
        columns.Bound(p => p.UnitPrice).Hidden( true );

    })
    .Groupable()
    .Pageable()
    .Sortable()
    .Scrollable()
    .Filterable()
    .DataSource(dataSource => dataSource
        .Ajax()
        .Read(read => read.Action("Products_Read", "Grid"))
    )
)

检查http://jsfiddle.net/OnaBai/B2Ses/该列如何Freight在列模式下隐藏但在弹出窗口中可见(用于编辑和创建)。

于 2013-03-11T13:50:06.347 回答
1

对于具有 .HtmlAttributes 功能的其他网格属性(工具栏等),您可以使用:

.ToolBar(toolbar => toolbar.Custom().Name("New item").HtmlAttributes(style = ViewData["isThisPropertyAllowed"] }))

并在控制器中使用例如:

ViewData["isThisPropertyAllowed"] =  (User.IsInRole("ADMIN")?"":"display:none");
于 2014-01-24T20:24:59.920 回答