掲題の通りです。
動的に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);
回答1件
あなたの回答
tips
プレビュー