有条件地隐藏 GridViewCommandColumn 中的 DeleteButton

Conditionally hide DeleteButton in GridViewCommandColumn

我有 ASPxGridView 来查看记录列表。从视图中,我创建了一个删除列,并希望它在记录确实满足条件时显示一个删除按钮。代码如下:

<dx:GridViewCommandColumn Caption="Delete" VisibleIndex="1" Width="30px"
                meta:resourcekey="GridViewCommandColumnResource1">
                <DeleteButton Visible="True">
                </DeleteButton>
            </dx:GridViewCommandColumn>

所以我主要关注DeleteButton的Visible属性。条件必须 return 一个布尔值,以便它知道何时显示和隐藏删除按钮。下面是一个如何实现这个的例子:

<DeleteButton Visible='<%# ShowHide(Eval("Active")) %>'>
                </DeleteButton>

在VB代码:

Protected Function ShowHide(Active As Boolean) As Boolean
    Return Active
End Function

所以函数需要 return 如果 Active 为真,则为真值,如果 Active 为假,则为假值.换句话说,如果记录确实满足条件,我确实会在每条记录的代码后面触发一个函数,使其显示删除按钮。但是最后我收到一条错误消息:

Parser Error Message: Databinding expressions are only supported on objects that have a DataBinding event. DevExpress.Web.ASPxGridView.GridViewCommandColumnButton does not have a DataBinding event.

我卡在那里,不知道还有什么其他方法可以做到这一点。请帮我解决这个问题。

您可以处理 ASPxClientGridView.CustomButtonClick Event,如下所示:Link or Place your custom control into GridViewDataColumn.DataItemTemplate : Link

经过一晚上的研究,我找到了解决这个问题的新方法:

这段代码来自 ASPxGridView 中的 aspx 文件:

<dx:GridViewCommandColumn Caption="Delete" VisibleIndex="1" Width="30px"
                meta:resourcekey="GridViewCommandColumnResource1">
                <DeleteButton Visible='True'><!--TRI - 20160329 Please make sure the Visible attribute always True-->
                </DeleteButton>
            </dx:GridViewCommandColumn>

根据隐藏的代码,我实现了一个初始方法来处理 DeleteButton 上的触发器:

Protected Sub xgv_CommandButtonInitialize(sender As Object, e As DevExpress.Web.ASPxGridView.ASPxGridViewCommandButtonEventArgs) Handles xgv.CommandButtonInitialize
    If e.ButtonType = DevExpress.Web.ASPxGridView.ColumnCommandButtonType.Delete Then
        If sender.GetRowValues(e.VisibleIndex, "Active") = True Then
            e.Visible = False
        End If
    End If
End Sub

该方法将通过检查命令按钮初始化上的 Active 值来处理 DeleteButton。如果 Active 为 True,它将隐藏 DeleteButton,反之亦然。