Visual Studio 2003の開発で躓いてしましました。
ネットで検索しても出てこないため、こちらにて質問させてください。
やりたいことはDataGrid(DataGridViewではない)の列をコード側から
動的に追加したいのですが、ただ追加させるだけではなく、
その追加させる列のヘッダーにチェックボックスコントロールを
入れたいのです。下記イメージの3列目です。
イメージ
_________
|表題1..|表題2..|動的1..|
|_□_|_□_|_□_| ← ヘッダー(チェックボックス付き)
|データ..|データ..|データ..|
|___|___|___|
|データ..|データ..|データ..|
|___|___|___|
|データ..|データ..|データ..|
|___|___|___|
現在は動的に列追加は出来ているのですが、チェックボックスを
いれるのに躓いております。
苦肉の策として
Text = "<input id=\"○○○\" type=\"checkbox\" OnCheckChanged=\"△△△\" >"
とさせ、テキストに強引にHTMLを埋め込んでいるのですが、上記記載
のイベント△△△が動作してくれません。(idはcheck1,check2,…
のようにループで割り振っていきます。)
イメージにある表題2の下にあるチェックボックスはイベントを
拾ってくれているのですが、動的に追加した列のチェックボックス
のイベントが拾えず、四苦八苦しております。
理想はコードビハインド側から表題2列を隣に複製させること
ができればいいのですが・・・。
コードビハインド側から列を追加し、Textではなく、ちゃんとした
チェックボックスコントローラを追加する方法をご享受ください。
環境はASP.NET(C#) で.net Frameworkは1.1です。
よろしくお願いします。
No.2ベストアンサー
- 回答日時:
> 当初の目的の「チェックボックスのイベント」が拾えていない
> 状況です。
ポストバックした時、ItemDataBound イベントが発生せず、CheckBox を
含む追加行が再生されないからではないですか。
ItemCreated イベントで行(CheckBox 含む)を追加してみてください。
> http://www.kumei.ne.jp/c_lang/form/form_34.htm
> 上記URLを参考にし、下記ソースを書いてみたのですが
それは ASP.NET とは関係ないこと分かります? 極々基本的なことで、
そこが分かってないと掲示板で質問して解決するのは無理があると思い
ます。
No.1
- 回答日時:
> 現在は動的に列追加は出来ているのですが、
それはどういうタイミングで、どのように実現しているのですか?
そのあたりが分からないと、回答困難です。
例えば、ItemDataBound イベントで行っているとすると、以下のようにしては
というようなアドバイスができるのですが。
void Item_Bound(Object sender, DataGridItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Header)
{
TableHeaderCell headerCell = new TableHeaderCell();
headerCell.Controls.Add(new LiteralControl("追加ヘッダ<br />"));
CheckBox cb = new CheckBox();
cb.AutoPostBack = true;
headerCell.Controls.Add(cb);
e.Item.Cells.Add(headerCell);
}
else if (e.Item.ItemType == ListItemType.Item ||
e.Item.ItemType == ListItemType.AlternatingItem)
{
TableCell cell = new TableCell();
cell.Controls.Add(new LiteralControl("追加列"));
e.Item.Cells.Add(cell);
}
else if (e.Item.ItemType == ListItemType.Footer)
{
TableCell cell = new TableCell();
cell.Controls.Add(new LiteralControl("追加フッタ"));
e.Item.Cells.Add(cell);
}
}
>それはどういうタイミングで、どのように実現しているのですか?
大変失礼しました。でもお教えいただいたItem_Boundのタイミングでバッチリです!
大変感謝いたします。
上記のソースを参考に組んでみたところ、動的に列の追加は出来ました。
しかし、当初の目的の「チェックボックスのイベント」が拾えていない
状況です。
http://www.kumei.ne.jp/c_lang/form/form_34.htm
上記URLを参考にし、下記ソースを書いてみたのですが、どうもイベント
が動作してくれません。
----------------------------------------------------------------
// グリッドバウンド
private void grid_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Header)
{ // ヘッダの場合
// ヘッダ宣言
TableHeaderCell headerCell = new TableHeaderCell();
// ヘッダタイトル
headerCell.Controls.Add(new LiteralControl("追加ヘッダ<br />"));
// チェックボックス生成
CheckBox cb = new CheckBox();
// ID割り当て
cb.ID = "Checkbox10";
// ポストバック
cb.AutoPostBack = true;
// イベント割り当て
cb.CheckedChanged += new EventHandler(cb_CheckedChanged);
// 生成したチェックボックスの追加
headerCell.Controls.Add(cb);
e.Item.Cells.Add(headerCell);
}
else if (e.Item.ItemType == ListItemType.Item ||
e.Item.ItemType == ListItemType.AlternatingItem)
{ // アイテム
TableCell cell = new TableCell();
cell.Controls.Add(new LiteralControl("追加列"));
e.Item.Cells.Add(cell);
}
}
// チェックボックスイベント
public void cb_CheckedChanged(object sender, EventArgs e)
{
// 各種処理。ここに到達してくれない
}
----------------------------------------------------------------
cb.CheckedChanged += new EventHandler(cb_CheckedChanged);
この記述のほかに何か必要なのでしょうか。
よろしければ教えていただけると助かります。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) EXCEL VBAにて動的にCheckBOXを複数作成し、同BOXにイベントを追加したい 1 2023/03/16 07:05
- Ruby pandasでsqlite3にテーブル作成・追加・読み出しでindexの取り扱い方教えてください 5 2023/03/08 09:57
- Excel(エクセル) Excelマクロ 差分抽出の方法が知りたいです。 2 2023/03/07 13:25
- Visual Basic(VBA) 追記する列を増やしたい 2つのデータを検索・照合して元データにないデータを下記マクロで商品名を追記し 9 2022/10/05 10:50
- Excel(エクセル) 【VBA】A列にある連続したデータの1番下に文字列を入力したい 1 2023/01/28 04:40
- Excel(エクセル) 【困っています】VBA 追加処理の記述を教えてください。 1 2022/08/25 22:54
- Visual Basic(VBA) ListView1の条件のやり方 3 2022/06/18 22:43
- その他(Microsoft Office) マクロVBAについて 1 2022/09/06 18:12
- Excel(エクセル) 表内で、Enterキーで横→行の最後入力したら次の行の先頭に移動するマクロを作りたい 3 2022/05/01 21:19
- C言語・C++・C# C言語初心者 ポインタについて、お助けください、、 2 2023/03/15 23:50
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【Excel VBA】先頭の「0」飛び...
-
Listviewのデータを上から順番...
-
DataGrdViewに関連付けたデータ...
-
VBAでページ番号、ページ最終行...
-
VB6 → EXCEL にデーター出力
-
GridViewを自動的にスクロール...
-
コンパイルエラーSubまたは...
-
VB DB更新時にパラメーターへ...
-
Excel97でピボットテーブルの...
-
【ASP.NET MVC】一覧編集画面
-
.NET SqlDataReader のレコー...
-
GASでスプレッドシートの一番上...
-
VB.net CrystalReportでプロジ...
-
エクセルVBAによるマトリク...
-
ASP.NET DataGridの項目数(列...
-
yahoo天気の過去1ヶ月分のデー...
-
エクセルで指定するセルの範囲...
-
,区切りでテキストで書かれたテ...
-
sqlを元にwebページを表示
-
EXCELで任意の文字列データにあ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【Excel VBA】先頭の「0」飛び...
-
DataGrdViewに関連付けたデータ...
-
Listviewのデータを上から順番...
-
GASでスプレッドシートの一番上...
-
GridViewにバインドせずにデー...
-
コンパイルエラーSubまたは...
-
.NET SqlDataReader のレコー...
-
VBAでページ番号、ページ最終行...
-
DataGridViewで表示に制限をつ...
-
MSFlexGridのデータ表示位置の設定
-
ASP C# データベースから1行取得
-
【ASP.NET MVC】一覧編集画面
-
C# データ配列から画像を作成す...
-
VBA ピボットテーブル自動更新
-
エクセルマクロ小数点桁数
-
VBによる可変長ファイルの読み書き
-
ASP.Net ObjectDataSource
-
GridViewを自動的にスクロール...
-
ListViewで条件によって表示を...
-
コンボボックス
おすすめ情報