我的问题是:在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;
在我的代码隐藏页面中此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
但执行此行时总是返回任何内容。
德。
答案 0 :(得分:2)
您可以查看LinkButton的单元格的Controls集合,其中Edit
为CommandName
:
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