使用FindControl获取gridview中编辑按钮的引用

时间:2016-08-02 01:34:52

标签: asp.net gridview

我的问题是:在GridView中定义为CommandField的Edit按钮的ID是多少?我希望能够在代码隐藏中使用FindControl方法引用此按钮,但是,由于我不知道编辑按钮的ID,所以我不能。我必须通过索引来引用它。

这是我尝试做的细节:

我有一个带有编辑按钮和删除按钮的ASP.NET 4.5.1 GridView控件。它们的定义如下:



<asp:CommandField ShowEditButton="true" UpdateText="Save" ShowDeleteButton="false" ValidationGroup="vgParcelComments" />
<asp:TemplateField>
    <ItemTemplate>
    <asp:LinkButton ID="btnDeleteParcelComment" runat="server" OnClientClick="return confirm('Are you sure that you want to delete this comment?');" CommandName="Delete" CssClass="removeParcelComment">Delete</asp:LinkButton>
    </ItemTemplate>
</asp:TemplateField>
&#13;
&#13;
&#13;

在我的代码隐藏页面中此GridView的RowDataBound事件中,我可以使用以下代码行操作Delete按钮:

e.Row.FindControl("btnDeleteParcelComment").Visible = False 'The delete button

这会隐藏“删除”按钮。但是,对于“编辑”按钮,我无法确定其ID是什么,因此我无法使用FindControl功能来访问它。我能做的最好的就是按索引引用它,如下所示:

e.Row.Cells(4).Visible = False 'The edit button

我尝试使用以下语句查看“编辑”按钮的ID:

Dim itsId As String = e.Row.Cells(4).ID

但执行此行时总是返回任何内容。

德。

1 个答案:

答案 0 :(得分:2)

您可以查看LinkBut​​ton的单元格的Controls集合,其中EditCommandName

Dim editButton As LinkButton = Nothing
For Each cell As DataControlFieldCell In e.Row.Cells
    For Each ctl As Control In cell.Controls
        If TypeOf ctl Is LinkButton Then
            Dim commandButton As LinkButton = CType(ctl, LinkButton)
            If commandButton.CommandName = "Edit" Then
                editButton = commandButton
                Exit For
            End If
        End If
    Next
Next