У меня есть GridView с колонкой шаблона:Динамически созданные кнопки не срабатывают рутинную
<asp:UpdatePanel runat="server">
<ContentTemplate>
<asp:GridView ID="gridDay" runat="server" SkinID="gridviewSkinLight" AutoGenerateColumns="False" DataSourceID="DSAppointmentForDay">
<Columns>
<asp:BoundField DataField="TimeValue" HeaderText="" InsertVisible="False" ReadOnly="True" SortExpression="TimeValue" />
<asp:TemplateField HeaderText=" ">
<ItemStyle HorizontalAlign="Left" />
</asp:TemplateField>
</Columns>
</asp:GridView>
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="gridDay" />
</Triggers>
</asp:UpdatePanel>
На RowDataBound, я создаю кнопки в ячейке, если данные найдены, что соответствует условию:
Dim cmdNew As New Button
cmdNew.ID = "E" & dr("pkAppointment") & "|" & dr("ApptTopic")
AddHandler cmdNew.Click, AddressOf mySub
cmdNew.Text = dr("ApptTopic") & " >> " & dr("ApptLocation")
cmdNew.ToolTip = "Topic: " & dr("ApptTopic") & vbLf &
"Location: " & dr("ApptLocation")
e.Row.Cells(1).Controls.Add(cmdNew)
До сих пор все отлично. Кнопки создаются в правой ячейке со всеми их звонками и свистами.
Рутина, что кнопка должна вызов:
Private Sub mySub(sender As System.Object, e As System.EventArgs)
Try
Dim btn As Button = DirectCast(sender, Button)
MsgBox(btn.Text)
Catch ex As Exception
End Try
End Sub
В тот момент я нажимаю на кнопку, страница делает обновления, все созданные кнопки исчезают и MySub не называется.
Я что-то упустил?
Я использую Site.Master, который содержит ScriptManager. Я заменил ваш код 'Dim myScriptManager As ScriptManager = Page.Master.FindControl (« CPScriptManager ») myScriptManager.RegisterAsyncPostBackControl (cmdNew)', но он все еще очищает сетку, когда я нажимаю на элемент управления, и не запускаю функцию для обработки события. –
Я обновил свой ответ, и я разместил соответствующий код и ссылку для фиктивной демонстрации. – davcs86