- 締切済み
ASP.NET 動的ボタンのイベント、ページ遷移
いつも拝見させてもらってます。 ASP.NETでWEBページを作成中ですが 思い通りの動作が出来ないので質問させてください。 環境:VS2005(VB使用)、.NET Framework 2.0、SQL Server 2005 ローカルにてデバッグ実行をしています。 実現したい動作↓ 1.ページロード時にてDB接続、データ抽出、テーブルを作成 2.テーブル作成時にてボタンを動的に作成 3.ボタンクリック時、別ページに遷移 1,2は実装したんですが3が遷移してくれません。 以前にも実装した事がある機能なので そのソースを元にして3を実装したのですがなぜか… Try - Catch してますので作成に関してはエラーはないようです。 下記にソースの抜粋を記述しますので ミスがある箇所をご指摘いただければと思います。 不足情報があれば言ってください、補足します。 'ページ構成 Form->Div->Table 'ページロード Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load If IsPostBack = False Then initTable() End If End Sub 'テーブル描画 Private Sub initTable() Dim trCell As TableCell Dim trRow As TableRow Dim objAddCmd As System.Web.UI.WebControls.Button With Table1 For i as Integer = 0 To XXX(抽出データ件数 - 1) 'テーブル作成処理 ・・・ 'ボタンを動的に作成 objAddCmd = New System.Web.UI.WebControls.Button objAddCmd.ID = "btnTest" & i.ToString objAddCmd.Text = "テスト" objAddCmd.Height = 24 objAddCmd.width = 50 AddHandler objAddCmd.Click, AddressOf btnTest_Click .Rows(i).Cells(0).Controls.Add(objAddCmd) Next End With End Sub '動的ボタン制御 Protected Sub btnTest_Click(Byval sender As Object, Byval e As System.EventArgs) 'ページ遷移処理 End Sub 上記がソースになります。 なお、btnTest_Click関数でブレイクポイントを設定してもブレイクしません。 それと、Page_Load関数のinitTableをIf文の中でも外でもページ遷移はしませんでした。 If文の中では動的ボタンクリック後、ページが真っ白、外では遷移せずそのまま。 よろしくお願いします。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- onos
- ベストアンサー率81% (127/155)
動的に生成したボタンとイベントの関連づけはPostBack時も行わないと関連づけされなかった気が。。。 以前に実装したとき、ってPostBackかどうかでの切り分けやってます?
お礼
自己解決しました。 回答ありがとうございました。 原因としては 動的に作成したボタンのIDとしていた値に 「: (コロン)」が含まれていたためのようです。
補足
回答ありがとうございます。 返信が遅れてしまいすいません。 質問の文にはPageLoadイベント時にPostBack判定で initTable関数による動的ボタン配置をしていますが 現在、Page_Initイベント時にinitTable関数を実行させています。 上記の実装でも機能が実現出来ない状態です。 以前の実装のものはPostBack判定にかかわらず テーブル描画、ボタンの動的配置をしており機能が実現出来ています。