【问题标题】:Conditionally hide DeleteButton in GridViewCommandColumn有条件地隐藏 GridViewCommandColumn 中的 DeleteButton
【发布时间】:2016-03-28 10:21:27
【问题描述】:

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

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

所以我把重点放在DeleteButton 的Visible 属性上。条件必须返回一个布尔值,以便知道何时显示和隐藏删除按钮。下面是一个如何实现的示例:

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

在 VB 代码中:

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

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

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.

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

【问题讨论】:

标签: vb.net aspxgridview


【解决方案1】:

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

来自 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

该方法将通过检查 Command Button Initialize 上的 Active 值来处理 DeleteButton。如果 Active 为 True,它将隐藏 DeleteButton,反之亦然。

【讨论】:

    【解决方案2】:

    您可以处理ASPxClientGridView.CustomButtonClick Event,如下所示:Link 或将您的自定义控件放入GridViewDataColumn.DataItemTemplateLink

    【讨论】:

    • 用户点击后处理事件。但是第一次加载视图时要处理的事件怎么样?
    猜你喜欢
    • 2018-06-16
    • 1970-01-01
    • 2020-03-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-11
    相关资源
    最近更新 更多