- 題名: Tableコントロール内のLinkボタンクリックイベントの捕捉
- 日時: 2011/03/15 22:39:48
- ID: 28320
- この記事の返信元:
- (なし)
- この記事への返信:
- [28327] Re[1]: Tableコントロール内のLinkボタンクリックイベントの捕捉2011/03/16 17:12:57
- ツリーを表示
■No28320に返信(tfさんの記事) > 親にあたるTableコントロール自体にClickイベントがないためでしょうか? いいえ、LinkButton.Click イベントが発生するはずですので Table コントロールに Click イベントがないことは問題ありません。 > どのようにLinkボタンコントロールのイベントを取ることができるのでしょうか? TableRow オブジェクトに TableCell オブジェクトを追加する処理と Table コントロールに TableRow オブジェクトを追加する処理が省略されているよう ですが Table コントロールへの LinkButton コントロールの追加は行われています か。 LinkButton.Click イベントへのイベントハンドラの関連付けはコードを拝見する限 り問題ないように思います。MakeTable を呼ぶタイミングが関わっているのではない かと思います。 LinkButton.Click イベントは Page.Load イベントのあとに呼ばれます。それよりも 早いタイミングで MakeTable を呼ぶ必要があります。Page.PreInit や Page.Init あたりが適当かと思います。 MakeTable を呼ぶタイミングを見直してみてはいかがでしょうか。
分類:[ASP.NET]
カスタマイズしたリストを作成するため、データベースから取得したデータをGridViewではなく、Tableコントロールに表示しようとしています。
ある列に、Linkボタンコントロールを配置しましたが、このクリックイベントが取れません。
以下のようなコード(省略しています。)で、クリックイベントをLnk_btn_Click関数で捕捉しようとしましたが、駄目でした。
親にあたるTableコントロール自体にClickイベントがないためでしょうか?
どのようにLinkボタンコントロールのイベントを取ることができるのでしょうか?
よろしくお願いします。
protected void MakeTable(int cell_num, int row_num, SqlDataReader db_read)
{
for (int i = 0; i < row_num; i++) // 行
{
TableRow tbl = new TableRow();
for (int j = 0; j < cell_num; j++) // 列
{
TableCell cell = new TableCell();
if (j == 2) // Tableの3列目をリンクボタンの列にする。
{
LinkButton Lnk_btn = new LinkButton();
Lnk_btn.Text = db_read[2].ToString(); // DBから取得した3列目をリンク用に表示
Lnk_btn.Click += new EventHandler(Lnk_btn_Click);
cell.Controls.Add(Lnk_btn);
}
}
}
}