В DetailsView я создаю кнопку удаления программно и присваиваю ей CommandName. Кнопка создается нормально, когда я тестирую свое приложение, но когда я нажимаю кнопку удаления, ничего не происходит. Если я регулярно создаю точно такую же кнопку с тем же CommandName в DetailsView, она отлично работает и корректно запускает ItemCommand DetailsView. Это означает, что что-то не так с тем, как я создаю свою кнопку в коде, но я не могу понять, что это такое. Нужно ли указывать UniqueID или что-то подобное?
Вот мой код, который программно создает кнопку удаления, которая не работает:
Public Sub GetAttachments(ByVal requestID As Integer)
Try
Dim pnlAttachments As Panel = dtlApplication.FindControl("pnlAttachments")
Dim btnDelete As New LinkButton
btnDelete.Text = "delete"
btnDelete.CssClass = "lblDeleteAttachment"
btnDelete.CommandName = "DeleteAttachment"
btnDelete.ID = "lnkDeleteAttachment"
pnlAttachments.Controls.Add(btnDelete)
Catch ex As Exception
'notify user on screen
lblGeneralError.Text = ex.ToString
lblGeneralError.CssClass = "red"
End Try
End Sub
И если я регулярно создаю кнопку, она работает нормально:
<asp:LinkButton runat="server" ID="lnkDeleteAttachment" Text="delete" commandname="DeleteAttachment" CssClass="lblDeleteAttachment"></asp:LinkButton>
Вот вывод страницы для программно созданной кнопки, которая не работает:
<a id="MainContent_dtlApplication_lnkDeleteAttachment" href="javascript:__doPostBack('ctl00$MainContent$dtlApplication$lnkDeleteAttachment','')">delete</a>
А вот вывод страницы для регулярно создаваемой кнопки, которая работает:
<a id="MainContent_dtlApplication_lnkDeleteAttachment" href="javascript:__doPostBack('ctl00$MainContent$dtlApplication$lnkDeleteAttachment','')">delete</a>
Вы можете видеть, что они идентичны.
Примечание. Причина, по которой я создаю его программно, заключается в том, что в конечном итоге я собираюсь добавить несколько кнопок удаления в оператор For For, и в этот момент у меня не будет выбора, создавать ли его регулярно или нет. или программно.