如果列具有值,则GridView禁用编辑/删除

时间:2014-05-15 14:20:06

标签: c# asp.net gridview

我有一个GridView,启用了编辑和删除功能。如果GridView中该行的特定列具有值,我希望禁用或隐藏编辑和删除:

enter image description here

在这种情况下,我希望GridView的默认编辑/删除选项不可用,因为它在“名称”列中有值。这意味着只有第3列可以编辑。

我正在使用默认的GridView控件:

<asp:CommandField ShowDeleteButton="True" ShowEditButton="True" />

如果单击编辑,则显示该行的<EditItemTemplate>,并且可以更改Ward和Sector值。 GridView附加到ObjectDataSource,该ObjectDataSource链接到具有CRUD操作的类。

1 个答案:

答案 0 :(得分:1)

您可以解析ID字段的值,并在gridview的RowDataBound事件中设置编辑/删除按钮的可见性。以下是我的工作方式,以下代码包含在gridview的RowDataBound事件处理程序中:

    If e.Row.RowType = DataControlRowType.DataRow Then
        'Get reference to the button you want to hide/show
        Dim delButton As ImageButton = CType(e.Row.Cells(3).Controls(2), ImageButton)
        'check your data for value
        Dim bIsThereAValue as Boolean = DoACheckForAValue(YourGridView.DataKeys(e.Row.RowIndex).Value)
        delButton.Visible = bIsThereAValue
    End If

这种方法对我很有用,我经常使用这个项目可以在另一个实体中使用,我禁用能够删除项目(例如此网格显示可用的图片,但图片正在图库中使用,然后我禁用能够删除图片,直到它不再是图库的一部分。)

您要确保对列中的值进行充分检查,我不确定,如果IsNothing可行,或者您必须与字符串进行比较。空的或什么的,但它不应该太难。