• 締切済み

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文の中では動的ボタンクリック後、ページが真っ白、外では遷移せずそのまま。 よろしくお願いします。

みんなの回答

  • onos
  • ベストアンサー率81% (127/155)
回答No.1

動的に生成したボタンとイベントの関連づけはPostBack時も行わないと関連づけされなかった気が。。。 以前に実装したとき、ってPostBackかどうかでの切り分けやってます?

Rilakkuma_san
質問者

お礼

自己解決しました。 回答ありがとうございました。 原因としては 動的に作成したボタンのIDとしていた値に 「: (コロン)」が含まれていたためのようです。

Rilakkuma_san
質問者

補足

回答ありがとうございます。 返信が遅れてしまいすいません。 質問の文にはPageLoadイベント時にPostBack判定で initTable関数による動的ボタン配置をしていますが 現在、Page_Initイベント時にinitTable関数を実行させています。 上記の実装でも機能が実現出来ない状態です。 以前の実装のものはPostBack判定にかかわらず テーブル描画、ボタンの動的配置をしており機能が実現出来ています。

関連するQ&A