如何在Ajax绑定的Telerik Grid for MVC上隐藏"编辑"按钮?

Axe*_*röm 1 telerik-mvc telerik-grid

我使用Telerik Extensions for MVC.在一个页面上,我使用网格来显示状态消息.我想显示具有正status_id的所有状态消息的编辑按钮.

我之前使用服务器绑定网格和CellAction完成了此操作.但是我试图将其更改为Ajax绑定网格,但我无法弄清楚如何隐藏特定行的按钮.

或许有一种方法可以从JavaScript引用特定的单元格,并以这种方式隐藏它?

谢谢!

AZe*_*Zee 7

我意识到这个问题是在不久前发布的,但我希望我的回答对其他人有用.

在您的数据模型中传递一个字段.在这种情况下,它是"RemoveDelete",因为它被明确地用于根据预定条件移除Delete按钮,所以它被设置为隐藏在网格中.如果网格中显示的数据已包含您要检查的条件,则不必执行此操作.

在网格......

.ClientEvents(events => events.OnRowDataBound("onRowDataBound"))
.Columns(columns => {
  columns.Bound(c => c.ColumnName).Attributes().Etc();
  columns.Bound(c => c.ColumnName).Attributes().Etc();
  columns.Command(commands => {
    commands.Edit().ButtonType(ButtonType);
    commands.Delete().ButtonType(ButtonType);
  });
  columns.Bound(c => c.RemoveDelete).Hidden(true);
})
Run Code Online (Sandbox Code Playgroud)

剧本...

<script type="text/javascript">
  function onRowDataBound(e) {
    if (e.dataItem.RemoveDelete > 0) {
      $(e.row).find('a.t-grid-delete').remove(); //remove Delete button
    }
  }
</script>
Run Code Online (Sandbox Code Playgroud)

删除编辑按钮...

$(e.row).find('a.t-grid-edit').remove();
Run Code Online (Sandbox Code Playgroud)

隐藏最后一列使用

$(e.row).find('td.t-last a.t-grid-action').hide();
Run Code Online (Sandbox Code Playgroud)

尽管如此,这允许您预先确定要逐行显示的按钮.