- PR -

DropDownListで選択した社員IDの社員名をTextBoxに表示させるには

1
投稿者投稿内容
萌衣
会議室デビュー日: 2006/06/19
投稿数: 17
投稿日時: 2006-07-11 16:23
また、書き込みをさせていただきました。
DropDownList(ddlID)で選択した社員IDの社員の名前を
TextBox(txtName)に表示させたいのですが、今の段階で
何をどぉ調べればその方法が分かるのかすら、分からない状態です。

まず社員IDと社員名はXMLファイル「社員」の社員テーブルで作成してあります。
そして、社員IDもddlIDのItemとして追加してある状態です。

今、考えているのがswitch文で「ID○○だったら、
txtNameに△△(そのIDの社員名)を表示」といったようにコードを記述する。

というものなのですが、
社員IDをddlIDのアイテムとして指定すればいいのか、
社員テーブルの"社員ID"列のどの行か・・・というふうに指定すればいいのか

また、そのIDと同じ行の社員名をどのように指定すればいいのか
など、とにかく何を調べたらヒントが見つかるかも分からない常態です。
(DropDownListコントロールのメンバを調べるのか、DataTableのメンバを調べるのか・・・等)

このような初歩的な質問で申し訳ありませんが
どのようなものを調べればヒントが見つけられるのか教えていただけませんでしょうか。

よろしくお願いいたします。
どっとねっとふぁん
ぬし
会議室デビュー日: 2005/02/23
投稿数: 935
投稿日時: 2006-07-11 16:47
DropDownListで選択を行うと、SelectedIndexChangedイベントが発生します。
このとき、何が選択されているかはDropDownListのSelectedValueでとれます。
前のプログラムのつくりだとSelectedItemでとるようになるかもしれません。

社員名をどのようにとるか、というのは読み込んだXMLファイルをどのような
形で持っているかによって違ってきますね。
DataTableに入っているなら、そこに含まれるRowを一行ずつとりだして
社員IDを比較するのもいいでしょうし、Selectメソッドを使って一致する
データを取り出すこともできるでしょう。

さて、ある程度のヒントはだしたつもり。
あとはドキュメントをきちんと読んで利用の仕方を探ってみてください。
萌衣
会議室デビュー日: 2006/06/19
投稿数: 17
投稿日時: 2006-07-11 17:06
>どっとねっとふぁんさん

本当にありがとうございます。
たくさんのヒントをいただけました。

ここからは自分で調べてやってみます^^

完成したらまたお知らせさせていただきます。


本当にありがとうございました。
萌衣
会議室デビュー日: 2006/06/19
投稿数: 17
投稿日時: 2006-07-14 14:44
また、質問させてください^^;

どっとねっとふぁんさんからのヒントを参考にいろいろと調べて考えて
『SelectedValue(またはSelectedItem)で、ddlIDで何が選択されたのかを調べて
 社員名にループを回してddlIDで選択されたIDと同じ行だったら、その社員名を
 txtNameに表示させる』という方法を考えたのですが、この考え方だと
 IDはDropDownListのアイテムから値を調べていて、社員名はDataTableから
 調べてるという状態になってしまいます。

そこで次に考えたのが、社員.xmlファイルを読み込んで
その社員テーブルの全行にループを回し、ddlIDで選択したIDと同じ値の行に
なったらtxtNameにその行の社員名を表示させるという方法です。

この考え方であっているのでしょうか…。

ちなみに社員.xmlファイルの内容は下記のようになっています。


- <社員テーブル>
 <社員ID>000</社員ID>
  <社員名>○○(社員の名前)</社員名>
</社員テーブル>
 
- <社員テーブル>
 <社員ID>001</社員ID>
 <社員名>△△(社員の名前)</社員名>
</社員テーブル>

どっとねっとふぁん
ぬし
会議室デビュー日: 2005/02/23
投稿数: 935
投稿日時: 2006-07-14 14:58
うーん、どっちでも結局同じことやってるようになるとは思うんですが。。。
実際にデータが思ったとおりに取り出せるのであれば、やり方は本当に
いろいろあると思うので、いいんじゃないでしょうか。

効率とか考えていくと、ループでまわすのはどうなんだ、とか、毎回
社員.xmlを読み込むのはどうなんだ、とかいろいろでてきますけど、
まぁ、そういったことはもともとの設計とも関わってくるので、
こちらからアドバイスできることでもないですから。
萌衣
会議室デビュー日: 2006/06/19
投稿数: 17
投稿日時: 2006-07-14 15:15
>どっとねっとふぁんさん

ありがとうございます。以下のコードを記述してみました。


private void ddlID_SelectedIndexChanged(object sender, System.EventArgs e)
{
  Syain.ReadXml( @"C:\conf\社員.xml" );
    
  foreach( DataRow row in Syain.Tables[ "社員テーブル" ].Rows )
  {
    if( ddlID.SelectedItem == row[ "社員ID" ] )
    {
      txtName.Text = row[ "社員名" ].ToString();
    }
  }
}

いろいろと教えていただいてますので、現状の報告をさせていただくと
↑のコードではエラーは出ませんがddlIDで社員IDを選んでもtxtNameに
名前が表示されません。

『private void ddlID_SelectedIndexChanged(object sender, System.EventArgs e)』
にポイントをおいて調べてみたのですが、ddlIDで選択しても
ここを通っていません…。

この原因をしらべようと思っています。
どっとねっとふぁん
ぬし
会議室デビュー日: 2005/02/23
投稿数: 935
投稿日時: 2006-07-14 15:26
> 『private void ddlID_SelectedIndexChanged(object sender, System.EventArgs e)』
> にポイントをおいて調べてみたのですが、ddlIDで選択しても
> ここを通っていません…。

選択した、というのはどういう状態でしょうか。
選択した後でポストバックが起きないことにはサーバ上のプログラムは動作できません。
DropDownListのAutoPostBackを有効にするか、ボタンクリック等でポストバック
させる必要がありますが、ここは大丈夫ですか?
萌衣
会議室デビュー日: 2006/06/19
投稿数: 17
投稿日時: 2006-07-14 15:47
>選択した、というのはどういう状態でしょうか。

 ddlIDで社員IDを選択したという状態です。

>DropDownListのAutoPostBackを有効にするか、ボタンクリック等でポストバック
>させる必要がありますが、ここは大丈夫ですか?

 大丈夫じゃありませんでした^^;
 コントロールのプロパティを見たところfalseになっていました。
 trueにしてみたのですが、動作としては何も代わりがありません。

 AutoPostBackプロパティのヘルプをもう一度しっかりと読んでみて
 また結果をご報告させていただきます。
1

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