none
ドロップダウンリストの使い方について RRS feed

  • 質問

  • Visual Studio 2013 VB.Net でWebページの開発をしています。

    ドロップダウンリストの使い方で以下のような使い方ができないか教えてください。

    ドロップダウンリスト:AAAマスタのコードと名称を取得(リストには名称のみ表示)

    BBBテーブルには登録時のコードと名称を保持しており、

    BBBテーブルのコードにドロップダウンリスト上に合致するものがある場合、

    ドロップダウンリストは、その位置を表示する。

    ↑ここまでは可能かと思います。

    で、BBBテーブルのコードに合致するものがない場合、

    BBBテーブルの名称だけ、ドロップダウンリストに"表示だけ"させて、(前に登録したデータが何かを見せたい)

    選択をクリックした時点で、ドロップダウンリストからは、前に登録したデータはなくなって、

    今のAAAマスタのコードと名称のみが表示される。

    上記のようなことを実現したいのですが、可能でしょうか。

    • 移動 佐伯玲 2015年10月22日 1:51 Visual Basic から ASP.NET へ
    2015年10月21日 13:15

回答

  • おそらく以下のようなことですよね?

    GridView DropDown SelectedValueで該当する値がない場合
    http://iceberg.ko-me.com/asp.net%E3%80%80gridview/gridview%20dropdown%20selectedvalue%E3%81%A7%E8%A9%B2%E5%BD%93%E3%81%99%E3%82%8B%E5%80%A4%E3%81%8C%E3%81%AA%E3%81%84%E5%A0%B4%E5%90%88

    上記のページでは該当する値が無い場合は何もしていませんが、無い場合に代わりの値を表示するには、その値を以下のようにして追加するしかないでしょう。

    [ASP.NET] バインドされたDROPDOWNLISTに値がないときのエラー回避
    http://tomovertex.at.webry.info/201110/article_1.html

    細かい状況がわかりませんが、上記の2つのページが考え方の参考になると思いますので、それらを元に考えてみて下さい。

    あと、これは私の思い付きですが、データーベースを使用されているようですので、例えば以下のようなSQLに変えるだけでうまく行くかもしれません。

    select コード, 名称 from AAAマスタ
    union
    select コード, 名称 from BBBテーブル where コード = 【今、表示しようとしているデータのコード】

    (追記)
    既に指摘があるように、今回のご質問はASP.NETのカテゴリが適切に思えます。
    フォーラム移動の件に関しては、私の方から依頼をしておきますので、後で移動されると思います。
    よろしくお願いいたします。


    ★良い回答には回答済みマークを付けよう! MVP - .NET  http://d.hatena.ne.jp/trapemiya/


    2015年10月22日 1:27
    モデレータ

すべての返信

  • ASP.NET の話ですよね?

    であれば、前にも言いましたが、適切なフォーラムを選んでスレッドを立てるようお願いします。

    で、ASP.NET の DropDownList の話だとしても、質問の意味が全く分かりません。「AAAマスタ」とか「BBBテーブル」って一体何なんですか?

    質問が理解不可能です。自分の理解力が足らないってこともないように思うのですが・・・

    2015年10月21日 15:16
  • おそらく以下のようなことですよね?

    GridView DropDown SelectedValueで該当する値がない場合
    http://iceberg.ko-me.com/asp.net%E3%80%80gridview/gridview%20dropdown%20selectedvalue%E3%81%A7%E8%A9%B2%E5%BD%93%E3%81%99%E3%82%8B%E5%80%A4%E3%81%8C%E3%81%AA%E3%81%84%E5%A0%B4%E5%90%88

    上記のページでは該当する値が無い場合は何もしていませんが、無い場合に代わりの値を表示するには、その値を以下のようにして追加するしかないでしょう。

    [ASP.NET] バインドされたDROPDOWNLISTに値がないときのエラー回避
    http://tomovertex.at.webry.info/201110/article_1.html

    細かい状況がわかりませんが、上記の2つのページが考え方の参考になると思いますので、それらを元に考えてみて下さい。

    あと、これは私の思い付きですが、データーベースを使用されているようですので、例えば以下のようなSQLに変えるだけでうまく行くかもしれません。

    select コード, 名称 from AAAマスタ
    union
    select コード, 名称 from BBBテーブル where コード = 【今、表示しようとしているデータのコード】

    (追記)
    既に指摘があるように、今回のご質問はASP.NETのカテゴリが適切に思えます。
    フォーラム移動の件に関しては、私の方から依頼をしておきますので、後で移動されると思います。
    よろしくお願いいたします。


    ★良い回答には回答済みマークを付けよう! MVP - .NET  http://d.hatena.ne.jp/trapemiya/


    2015年10月22日 1:27
    モデレータ
  • こんにちは、takusan さん
    フォーラムオペレータの佐伯 玲 です。

    既にご指摘にもある通り「ASP.NET」フォーラムのほうがご質問に適しているようですので私のほうからスレッドを移動させていただきますね。

    宜しくお願い致します。

    TechNet Community Support 佐伯 玲

    2015年10月22日 1:51
  • 返信ありがとうございます。

    カテゴリ違いには気を付けます。

    連絡いただいた内容で、一度やってみます。

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

    2015年10月22日 3:44
  • 了解しました。

    ありがとうございます。

    2015年10月22日 3:45
  • 質問者さんのやりたいことは分かりませんが、trapemiya さんのレスの推測が当たっているという前提で一言コメントさせてください。

    trapemiya さんが紹介されている前者の記事で、「普通のテーブル」の CD には「マスタ」の CD に対する FK 制約をかけるのが普通ではないでしょうか?(「普通のテーブル」の CD に好き勝手な値を入れられるような整合性のない DB を作ったりはしないのでは?・・・という意味です)

    そうであれば、「SelectedValueで該当する値がない」ということは「普通のテーブル」の CD が NULL 不可になっていればあり得ませんし、NULL 許可になっている場合は NULL に限られるはずです。

    NULL だけの対応であれば、以下の記事の「テンプレート フィールドの Null の変換」のセクションのようにすればよさそうです。(その記事で使用している Northwind の Employees テーブルの ReportsTo フィールドには FK 制約がかかっています)

    データ ソース コントロールを使用した、データベースの Null 値の処理
    https://msdn.microsoft.com/ja-jp/library/ms366709(v=vs.100).aspx

    質問者さんの事情は分かりませんが、「SelectedValueで該当する値がない」ということがないように、DB の整合性を保つことを第一に考えるというアプローチになるのではないでしょうか?

    既存の DB で今さら何ともならないということなら Web アプリの方で何とかするほかないかもしれませんが。(そういうことを続けているとそのうち破綻しそうな気もしますが)


    • 編集済み SurferOnWww 2015年10月25日 6:16 脱字追加
    2015年10月25日 6:11