- PR -

DataGridコントロール内のテンプレートカラムのコントロールを参照したい

1
投稿者投稿内容
なかむら
ベテラン
会議室デビュー日: 2001/10/22
投稿数: 67
投稿日時: 2003-12-01 09:44
ASP.NET(VB.NET)でWEBアプリケーションを開発中です。

DataGridコントロールのテンプレートカラムにドロップダウンリストを配置しているのですが、
バインド前にこのコントロールを参照したいのです。

やりたいことは、DataGridにデータをバインドする前に、別のドロップダウンリストで選択されている
値に応じて、テンプレートカラム内のドロップダウンリストのDataSrouceプロパティを動的に制御したいのです。

どなたかご存知の方がいらっしゃいましたら教えていただきたいと思います。
よろしくお願いします。

#「GotDotNet掲示板」でも同様の質問をさせていただいています。m(__)m
聖人@SKB
ベテラン
会議室デビュー日: 2003/03/26
投稿数: 58
お住まい・勤務地: 横浜(MM21)勤務の筈だがいつも顧客先常駐
投稿日時: 2003-12-01 18:57
バインド前に処理を実行するではなく、バインドした直後に実行する方法で
期待することができました。
条件を指定するDropDownList(DropDownList1)があり、これが変更されると
DataGrid内のDropDownList(DropDownList2)が変更するというサンプルを作って試しました。
※DropDownList1はDataGrid内にありません。

**手順**
1.戻り値がDataTable型の関数を作成する
 例. protected DataTable SetRecords()
2.DataGrid中のDropDownListのDataSourceに1で作成した関数名を指定する
 例. SetRecords( )
3.DataGrid中のDropDownListのDataTextFiledに1で作成したDataTableの表示する列名を指定する
 例. Col1

aspxファイルをHTML形式で参照し、DataGrid部分を見てみると
DataSource="<%# SetRecords() %>"
という記述があると思います。
この処理はイベント処理が終わった後に呼び出されます。

**ソースコード**
protected DataTable SetRecords() {
 int index = int.Parse(DropDownList1.SelectedItem.ToString());
 DataTable dt = new DataTable();
 dt.Columns.Add("Data1",typeof(string));
 for (int i = index ;i< index + 5;i++){
   DataRow dr = dt.NewRow();
   dr["Col1"] = i.ToString();
   dt.Rows.Add(dr);
 }
 return dt;
}

DropDownList1のItemsコレクションに
 Text=1, Value=1
 Text=2, Value=2
 Text=3, Value=3
を指定しました。
なかむら
ベテラン
会議室デビュー日: 2001/10/22
投稿数: 67
投稿日時: 2003-12-02 11:54
レスありがとうございます。

試してみましたができました。
(実際にはDataSourceではなくDataMemberを変更させましたが)

DataSource等に関数名を記述することは気が付きませんでした。。。
大変勉強になりました。m(__)m

どうもありがとうございました。
1

スキルアップ/キャリアアップ(JOB@IT)