vb.net - 有条件地隐藏GridViewCommandColumn中的DeleteButton

标签 vb.net aspxgridview

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

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

所以我重点关注DeleteButton的Visible属性。该条件必须返回一个 bool 值,以便它知道何时显示和隐藏删除按钮。下面是如何实现这一点的示例:

<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.

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

最佳答案

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

这段代码来自 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,反之亦然。

关于vb.net - 有条件地隐藏GridViewCommandColumn中的DeleteButton,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36260338/

相关文章:

sql-server - 从存储过程返回值

mysql - 向2个表中插入数据

arrays - 在 vb.net 中存储和转换数据行 - 数组、列表、集合还是其他?

c# - 在选定的数据源上找不到属性

c# - 如何填充 ASPxComboBox?

c# - ASPxGridView 允许使用 ASPxCheckBox 进行排序和 DataItemTemplate

asp.net - 以编程方式在 ASPX 页面中为 'visible' 属性设置值

c# - 从 Winforms 控制 cmd.exe

vb.net - 为什么我必须在这里双投?

sorting - ASPxGridView 分组汇总排序 - 对里面的内容进行排序,而不是对外面的汇总进行排序