2016-04-26 40 views
1

我想爲動態創建的按鈕添加處理。最近的代碼,我可以看到堆棧是:asp.net dynamically 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 

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 

值得注意的副部...

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) 
+0

參見[這個答案](http://stackoverflow.com/a/389344/3740093)被找到如何訪問的'

元素'標籤。如果這不是一個表格標籤,那麼你應該使用類似''或只是'
+0

嗨@VisualVincent謝謝你。我有的問題是按鈕是提交。我已將Dim n As String n = [String] .Format(「{0}」,Request.Form(「ContentMain_btnMech」))添加到我的頁面加載中,但不要選擇任何內容。 :-( – indofraiser

+0

到目前爲止我已經創建了它:但似乎沒有點擊(我已經添加了.aspx.vb oncommand代碼) – indofraiser

回答

1

我將建議更改您的HTML代碼並創建一個按鈕。同樣在創建按鈕後,您可以嘗試爲按鈕的事件添加處理程序。約AdressOf操作

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) 

更多信息可以在MSDN

+0

它說「價值不是按鈕的成員」 – indofraiser

+0

對不起,顯然VB Button中沒有這樣的屬性,請嘗試.Text屬性。我編輯了一個答案。 – Mitrucho

+0

謝謝,只是確保。有時它是提問者:-) – indofraiser

相關問題