- PR -

[C#] DataGrid内のDropDownListの値を動的に変えたい

1
投稿者投稿内容
Qoo
常連さん
会議室デビュー日: 2006/05/18
投稿数: 37
投稿日時: 2006-06-30 14:51
いつもお世話になっています。

http://www.atmarkit.co.jp/fdotnet/dotnettips/090dropdowndg/dropdowndg.html

↑や皆さんの意見を参考にしてDataGrid内にDropDownを配置し、その値で、更新
などをかけれるようになりました。

今分からなくて困っているのは、新しく作ったDataGridには編集時に二つDropDown
Listが出てくるのですが、その片方の値を変更かけたとき、もう片方の値も動的に
変えたいのです。

DropDownList1(以下DDL1)オフィス情報格納(東京とか、名古屋とか入ってます)
DropDownList2(以下DDL2)所属部署情報格納(1課とか2課とか入ってます)

として、DataGridのボタン列の編集ボタンを押して編集モードにした時、
DDL1の値を変えた時にDDL2の値も変えたいのですが、DataGrid内に配置した
DropDownListにはSelectedIndexChangedイベント等もなく、どうしたら
いいか分かりません。(要は地方によって所属部署名称が違うのでそれ
を変えたいのです。)


何かいいアイデアをご存知の方、ご教授お願いします。
ひろれい
ぬし
会議室デビュー日: 2006/03/02
投稿数: 486
お住まい・勤務地: 万博開催地
投稿日時: 2006-06-30 15:30
  DataGrid内で複数DropDownListを連携する方法

  DataGrid内での複数DropDownListの連携
しょくぱん
常連さん
会議室デビュー日: 2006/05/31
投稿数: 31
投稿日時: 2006-07-03 09:56
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=31037&forum=7
これも似た状況ですよね?
Qoo
常連さん
会議室デビュー日: 2006/05/18
投稿数: 37
投稿日時: 2006-07-03 13:53
お二方、お返事ありがとうございます。
それと見るのが遅くなってすいません。

とりあえず、しょくぱんさんのリンク先のコードを改変して
実現する事ができました。

それで理解する為にもこのリンク先のコードについての質問
なんですが、

foreach(Control ctrl in DataGrid1.Controls)
{
  foreach (Control childC in ctrl.Controls)
  {
    dgi = (DataGridItem)childC;
    if (dgi.ItemType == ListItemType.Footer)
    {
      ddl = (DropDownList)dgi.FindControl("DropDown-1");
      if (ddl != null)
      {
        //ここでドロップダウンのSelectedValue等を取得
      }
    }
  }
}


外側のforeach文はデータグリッドのコントロールを取得してると思うのですが
具体的には何を取得しているのでしょうか?内側のforeach文が取得しているのは
DataGridItemのItemTyoeでいいでしょうか?(pagerとかfooterとかの)

どうも外側のforeach文で取得しているのが何なのかよく分からないので、
理解する為にもご教授ください。
よろしくお願いします。
しょくぱん
常連さん
会議室デビュー日: 2006/05/31
投稿数: 31
投稿日時: 2006-07-03 14:50
http://www.atmarkit.co.jp/fdotnet/dotnettips/072modpager/modpager.html
このページの中ほどに、
「ページ表示させたDataGridコントロールのコントロール・ツリー(一部)」
として載っている図をみていただきたいんですが、
外側のforeach文で取得しているのは、この図の2行目にあたる
System.Web.UI.WebControls.DataGridTableというものです。
内側のforeach文で取得しているのは、おっしゃるとおりDataGridItemです。
1

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