asp.net 動的に作ったボタンのイベントが動作しない への返答
投稿で使用できる特殊コードの説明。(別タブで開きます。)
以下の返答は逆順(新しい順)に並んでいます。
投稿者 nin  (社会人)
投稿日時
2017/1/7 14:55:34
お世話になります
ASP.NETを使って、Table1にサブフォルダと、ファイルの一覧を表示させて、ファイルの
場合は、リンクを作成
サブフォルダの場合は、ボタンを作成し、該当ボタンを押すと、サブフォルダ内
のファイル一覧を表示させようとしていますが、動的に作ったボタンを押しても
btn_Clickのイベントが動作しません 色々試しましたが、小生の技量ではお手上げ状態
です
長ったらしく、コード記載してすいません 何が原因でしょうか?
よろしくお願いします
ASP.NETを使って、Table1にサブフォルダと、ファイルの一覧を表示させて、ファイルの
場合は、リンクを作成
サブフォルダの場合は、ボタンを作成し、該当ボタンを押すと、サブフォルダ内
のファイル一覧を表示させようとしていますが、動的に作ったボタンを押しても
btn_Clickのイベントが動作しません 色々試しましたが、小生の技量ではお手上げ状態
です
長ったらしく、コード記載してすいません 何が原因でしょうか?
よろしくお願いします
Inherits System.Web.UI.Page
Dim conTextBox(1000) As System.Web.UI.WebControls.TextBox ' TextBoxの数
Dim conLiteral(1000) As System.Web.UI.WebControls.Literal
Protected Sub Button2_Click(sender As Object, e As System.EventArgs) Handles Button2.Click
Dim namae(10) As String
Dim icount As Integer = 1
Dim MenuBtn(500) As System.Web.UI.WebControls.Button
'ファイルをすべて取得する
Dim di As New System.IO.DirectoryInfo("d:\d\open\test") '表示させるフォルダの場所を指定
Dim files As System.IO.FileInfo() = _
di.GetFiles("*.*", System.IO.SearchOption.TopDirectoryOnly)
Dim subFolders As System.IO.DirectoryInfo() = _
di.GetDirectories("*", System.IO.SearchOption.AllDirectories)
'サブフォルダー名ボタン作成
For Each subFolder As System.IO.DirectoryInfo In subFolders
Dim tbRow1 As New TableRow
Dim tbCell As New TableCell
conTextBox(icount) = New System.Web.UI.WebControls.TextBox
conTextBox(icount).BorderStyle = BorderStyle.None
conTextBox(icount).Width = System.Web.UI.WebControls.Unit.Parse("20px")
MenuBtn(icount) = New System.Web.UI.WebControls.Button
tbCell.Controls.Add(conTextBox(icount))
conTextBox(icount).Text = icount
MenuBtn(icount).Text = subFolder.Name
AddHandler MenuBtn(icount).Click, AddressOf btn_Click
tbCell.Controls.Add(MenuBtn(icount))
tbRow1.Cells.Add(tbCell)
Table1.Rows.Add(tbRow1)
icount = icount + 1
Next
'ファイル名を表示
For Each f As System.IO.FileInfo In files
Dim tbRow2 As New TableRow
Dim tbCell As New TableCell
conLiteral(icount) = New System.Web.UI.WebControls.Literal
conTextBox(icount) = New System.Web.UI.WebControls.TextBox
conTextBox(icount).BorderStyle = BorderStyle.None
conTextBox(icount).Width = System.Web.UI.WebControls.Unit.Parse("20px")
tbCell.Controls.Add(conTextBox(icount))
conTextBox(icount).Text = icount
tbRow2.Cells.Add(tbCell)
namae(1) = "/open/test/" & f.Name 'ブラウザから表示する場所を指定
namae(2) = f.Name
conLiteral(icount).Text = "<A href=""" & namae(1) & """>" & namae(2) & "</a><BR>"
tbCell.Controls.Add(conLiteral(icount))
tbRow2.Cells.Add(tbCell)
Table1.Rows.Add(tbRow2)
icount = icount + 1
Next
End Sub
Private Sub btn_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
Dim failenam As String = CType(sender, Button).Text
Dim namae(10) As String
Dim icount As Integer = 1
Dim MenuBtn(500) As System.Web.UI.WebControls.Button
'ファイルをすべて取得する
Dim di As New System.IO.DirectoryInfo("d:\d\open\test\" & failenam) '表示させるフォルダの場所を指定
Dim files As System.IO.FileInfo() = _
di.GetFiles("*.*", System.IO.SearchOption.TopDirectoryOnly)
'ファイル名を表示
'省略
End Sub
End Class
ずいぶん久しぶりに作ったので、ボケていました
イベント発生時、ポストバックされるのを忘れていました。トホホ。
新しいフォームのLoadイベントに記述して解決しました