Reputation: 1024
I want to add handling for dynamically created buttons. The closest code I can see on Stack is: asp.net dynamically button with event handler
I have code, below, that creates a button but I want to have a handler for each of these.
My code so far:
Dim control As LiteralControl
control = New LiteralControl("<div class=""bar-row"">" & _
" <input value=""" & button & """ id=""" & id & """ class=""btnRisk"" type=""submit"">" & _
" <div class=""bar-data"">" & _
" <div class=""bar-inner"">" & _
" <div class=""bar bar-high"" style=""width: " & highPer & "%"">" & high & "</div>" & _
" <div class=""bar bar-med"" style=""width: " & medPer & "%"">" & medium & "</div>" & _
" </div>" & _
" </div>" & _
"</div>")
ChartArea.Controls.Add(control)
The important part being:
" <input value=""" & button & """ id=""" & id & """ class=""btnRisk"" type=""submit"">"
I'm not sure how to amend this.
I need to pass the button ID to a sender and then do something i.e.
Public Sub Buttons(ByVal sender As Object, ByVal e As EventArgs)
If sender = "1" Then
'do something
End If
If sender ="2" Then
'something else
End If
End Sub
VERSION 2
ChartArea.Controls.Add(New LiteralControl("<div class=""bar-row"">"))
Dim vRiskActive As String = "btnRisk "
If id <> "btnMech" Then vRiskActive = vRiskActive + " risk-inactive"
Dim btnButton As New Button() With {.Text = button, .ID = id, .CssClass = vRiskActive}
AddHandler btnButton.Click, AddressOf button ' here Buttons is your Handler
ChartArea.Controls.Add(btnButton)
If id = "ContentMain_btnMech" Then
ChartArea.Controls.Add(New LiteralControl(" <div class=""bar-data"">" &
" <div class=""bar-inner"">" &
" <div class=""bar bar-high"" style=""width: " & highPer & "%"">" & high & "</div>" &
" <div class=""bar bar-med"" style=""width: " & medPer & "%"">" & medium & "</div>" &
" <div class=""bar bar-low"" style=""width: " & lowhPer & "%"">" & low & "</div>" &
" <div class=""bar bar-na"" style=""width: " & naPer & "%"">" & na & "</div>" &
" </div>" &
" </div>" &
"</div>"))
Else
ChartArea.Controls.Add(New LiteralControl(" <div class=""bar-data"">" &
" <div class=""bar-inner bar-inactive"">" &
" </div>" &
" </div>" &
"</div>"))
End If
Worth noting Sub part...
Public Sub AddChartRow(ByVal button As String, ByVal id As String, ByVal high As Integer, ByVal medium As Integer, ByVal low As Integer, ByVal na As Integer)
Upvotes: 1
Views: 160
Reputation: 136
I will suggest to change your HTML Code and create a Button. Also after creating a button you can try to AddHandler for an Event of your button.
ChartArea.Controls.Add(New LiteralControl("<div class=""bar-row"">"))
Dim btnButton As new Button() With { .Text = button,
.Id = id,
.CssClass = "btnRisk"
}
AddHandler btnButton.Click, AddressOf ButtonsID ' here Buttons is your Handler
ChartArea.Controls.Add(btnButton)
ChartArea.Controls.Add(New LiteralControl(" <div class=""bar-data"">" & _
" <div class=""bar-inner"">" & _
" <div class=""bar bar-high"" style=""width: " & highPer & "%"">" & high & "</div>" & _
" <div class=""bar bar-med"" style=""width: " & medPer & "%"">" & medium & "</div>" & _
" </div>" & _
" </div>" & _
"</div>"))
ChartArea.Controls.Add(control)
More info about AdressOf Operator can be find in MSDN
Upvotes: 1