-1

我的视图上有一个 Telerik asp.net 网格。连接到该网格的模型有一个名为“State”的字段。该字段保存每一行的状态。基于此状态,用户可以编辑某些行,而不能编辑其余行。例如,如果一行的状态为 0,则用户可以对其进行编辑,否则必须禁用该行的编辑按钮和其他命令。

所以我的问题是:有没有办法根据模型的字段禁用某些行?

这是简化的网格:

@{Html.Telerik().Grid<StationEvaluation>().Name("ManagementGrid").DataKeys(dataKeys => dataKeys.Add(o => o.StationEvaluationID)).Groupable().Filterable().Pageable().Sortable().DataBinding(dataBinding => dataBinding.Ajax()
                           .Delete("DeleteFromGrid", "StationEvaluation")
                        ).Columns(columns =>
                        {
                            columns.Command(commands =>
                            {
                                commands.Delete().ButtonType(GridButtonType.Image);
                                commands.Custom("Edit").Action("Edit", "StationEvaluation").ButtonType(GridButtonType.Image).Text("Edit");
                            }).Title("Manage").Width(50);
                            columns.Bound(o => o.FromDate);
                            columns.Bound(o => o.ToDate);
                            columns.Bound(o => o.DateShow);
                            columns.Bound(o => o.State).ClientTemplate("<#= StateDsc #>");
                            columns.Command(commands =>
                            {
                                commands.Custom("NextState").Action("NextState", "StationEvaluation").ButtonType(GridButtonType.Text).Text("Next state").Ajax(true);
                                commands.Custom("PreviousState").Action("PreviousState", "StationEvaluation").ButtonType(GridButtonType.Text).Text("Previous state").Ajax(true);
                            }).Title("Change state").Width(50);
                        }).Render();
 }
4

1 回答 1

3

我找到了解决方案。onRowDataBound 事件必须添加到网格中。在这种方法中,我可以隐藏用户需要他们编辑的列:

function ManagementGrid_onRowDataBound(e) {

    var dataItem = e.dataItem;

    if (dataItem.State == 0)
    {
        $(e.row).find("a.t-grid-PreviousState").hide();
    }
    else if (dataItem.State == 4) {
        $(e.row).find("a.t-grid-NextState").hide();
    }
}
于 2013-02-04T09:30:03.597 回答