質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

ASP.NET

ASP.NETは動的なWebサイトやWebアプリケーション、そしてWebサービスを構築出来るようにする為、Microsoftによって開発されたウェブアプリケーション開発フレームワークです。

Q&A

解決済

1回答

313閲覧

Tableのセルに追加したImageButtonのイベントが発生しません。

otftrough

総合スコア476

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

ASP.NET

ASP.NETは動的なWebサイトやWebアプリケーション、そしてWebサービスを構築出来るようにする為、Microsoftによって開発されたウェブアプリケーション開発フレームワークです。

0グッド

0クリップ

投稿2018/10/26 05:27

掲題の通りです。
動的にImageButtonを作成してClickイベントを追加しましたが、イベントが呼ばれません。
次にCommandイベントも試しましたが、呼ばれません。
何が間違っているのでしょうか。
イベントハンドラを追加する場所?タイミング?

VS2013で開発しており、ブレークポイントをイベント内に設置しても止まらなかったので、
イベントが呼ばれていないと判断しました。

KikakuTable.cs

C#

1//public static class KikakuTable 2//List<Table> list; 3 4private static void Delete(object sender, CommandEventArgs e) 5{ 6 //用意してありますが、呼ばれません。 7 var cn = ((ImageButton)sender).CommandName; 8 var syohin = int.Parse(cn.Substring(0, cn.IndexOf(","))); 9 var kikaku = int.Parse(cn.Substring(cn.IndexOf(",") + 1)); 10 list[syohin].Rows[kikaku].Delete(); 11} 12 13public static void BindTable(Table tbl, int index) 14{ 15 //tblはxml側に表示されている<asp:Table>タグです。 16 for (var i = 0; i < list[index].Rows.Count; i++) 17 { 18 //既に表示されていたらやめる 19 if (list[index].Rows.Count < tbl.Rows.Count) return; 20 21 TableCell[] cell = new TableCell[6]; 22 for (var j = 0; j < cell.Length; j++) 23 { 24 cell[j] = new TableCell(); 25 } 26 cell[0].Text = list[index].Rows[i]["A"].ToString(); 27 cell[1].Text = list[index].Rows[i]["B"].ToString(); 28 cell[2].Text = list[index].Rows[i]["C"].ToString(); 29 cell[3].Text = list[index].Rows[i]["D"].ToString(); 30 cell[4].Text = list[index].Rows[i]["E"].ToString(); 31 //最後のセルにImageButtonを入れ、行の削除ボタンとする。 32 var ib = new ImageButton(); 33 ib.ID = "imgBtn_delete" + i; 34 ib.CommandName = index + "," + i; 35 ib.ImageUrl = "~/Images/DELETE.PNG"; 36 //Clickイベントでも呼ばれなかった 37 ib.Command += new CommandEventHandler(Delete); 38 cell[5].Controls.Add(ib); 39 cell[5].CssClass = "center-middle"; 40 41 //表示は問題なし。ボタンを押すとPostBackが起きます。 42 var row = new TableRow(); 43 row.Cells.Add(cell[0]); 44 row.Cells.Add(cell[1]); 45 row.Cells.Add(cell[2]); 46 row.Cells.Add(cell[3]); 47 row.Cells.Add(cell[4]); 48 row.Cells.Add(cell[5]); 49 tbl.Rows.Add(row); 50 } 51}

Kikaku.aspx

xml

1<asp:Table ID="tbl_genkoKikaku" CssClass="gridview line padding" runat="server"> 2 <asp:TableHeaderRow BackColor="#000099" ForeColor="White"> 3 <asp:TableHeaderCell >A</asp:TableHeaderCell> 4 <asp:TableHeaderCell >B</asp:TableHeaderCell> 5 <asp:TableHeaderCell >C</asp:TableHeaderCell> 6 <asp:TableHeaderCell >D</asp:TableHeaderCell> 7 <asp:TableHeaderCell >E</asp:TableHeaderCell> 8 <asp:TableHeaderCell ></asp:TableHeaderCell> 9 </asp:TableHeaderRow> 10</asp:Table>

Kikaku.aspx.cs

C#

1KikakuTable.BindTable(tbl_genkoKikaku, 0);

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2018/10/26 06:12

前のスレッドでもお願いしましたが、開発環境(OS, .NET, IIS のバージョン、使っているブラウザなど)は必ず書きましょう。
otftrough

2018/10/26 06:21

なぜでしょうか
退会済みユーザー

退会済みユーザー

2018/10/26 06:31

それによって話が違ってくることがよくあるからです。特に.NET バージョン。興味本位とかで聞いているわけではなくて、できるだけ的を得た回答をするために必要だから聞いているのです。ここまで言っても書かないんだったら今後はあなたの質問はスルーします。
guest

回答1

0

自己解決

Tableを使っていましたが、GridViewに変更してRowCommandイベントで拾うようにしました。

投稿2018/10/26 08:37

otftrough

総合スコア476

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問