2016-04-26 2 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)で見つけることができ

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) 

'タグ。これがフォームタグでない場合は、 ''または ''の代わりに '

+0

こんにちは@VisualVincentはそれに感謝します。私が持っている問題はボタンです。 Dim n As String n = [String] .Format( "{0}"、Request.Form( "ContentMain_btnMech"))をページロードに追加しましたが、何も選択しません。 :-( – indofraiser

+0

これまで私はそれを作成する必要があります: (私は.aspx.vb oncommandコードを追加しました) – indofraiser

答えて

1

IあなたのHTMLコードを変更し、ボタンを作成することを提案します。また、ボタンを作成した後、ボタンのイベント用のAddHandlerを試すこともできます。 AdressOfオペレータについての詳細情報は、あなたが `

の要素にアクセスすることができますどのように MSDN

+0

「値はボタンのメンバーではありません」と言われています – indofraiser

+0

申し訳ありませんが、明らかにVB Buttonにこのようなプロパティはありません.Textプロパティを試してください。私は答えを編集した。 – Mitrucho

+0

ありがとう、確かめてください。ときどきそれは質問の質問者です:-) – indofraiser

関連する問題