簡體   English   中英

為動態按鈕創建處理程序

[英]Create handler for dynamic buttons

我想為動態創建的按鈕添加處理。 我在 Stack 上看到的最接近的代碼是: asp.net dynamic button with event handler

我有下面的代碼,可以創建一個按鈕,但我想為每個按鈕都有一個處理程序。

到目前為止我的代碼:

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)

重要的部分是:

"  <input value=""" & button & """ id=""" & id & """ class=""btnRisk""     type=""submit"">"

我不知道如何修改這個。

我需要將按鈕 ID 傳遞給發件人,然后執行某些操作,即

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

版本 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

值得注意的子部分...

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)

我會建議更改您的 HTML 代碼並創建一個按鈕。 同樣在創建按鈕后,您可以嘗試為按鈕的事件添加處理程序。

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)

更多關於 AdressOf Operator 的信息可以在MSDN 中找到

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM