none
親テーブルを ComboBox、子テーブルを DataGridViewComboBoxColumn とした時、連携させるためには RRS feed

  • 質問

  • 下記スレッドと関係していますが、


    - 親子関係のテーブルに連結した ComboBox で、選択時の挙動が変。

     

    親子関係にあるテーブルで、

    • 親を ComboBox にし、
    • 子を DataGridView の DataGridViewComboBoxColumn / Cell として

    配置しました。

     

    - 確認画像


    親 ComboBox のアイテムを選択すると、それに関連する子テーブルのアイテム
    が子 ComboBox の中に展開されるのを期待しています。例えば、

    • 親で aa を選択すると、それに関連する子の a, i, u, e, o が DataGridViewComboBoxCell に現れ、
    • 親で ka を選択すると、子の ka, ki, ku, ke, ko が DataGridViewComboBoxCell に現れて

    欲しいと考えています。


    このような要求の場合、どう実装すると不都合なく動作させることができるのでしょう?

     

    試しに、
    親の ComboBox の選択を変更した際に、
    子側の DataGridViewComboBoxColumn に繋がっている BindingSource (this.charsBindingSource)
    の Filter を以下のようにしてみたら、


    Code Snippet

    private void columnComboBox_SelectedIndexChanged(object sender, EventArgs e)
    {
      var columnCombo = (ComboBox)sender;
      var column_id = columnCombo.SelectedValue;

      this.charsBindingSource.Filter = string.Format("column_id = {0}", column_id);
    }


    Code Snippet
    Context
      Formatting | Display
    Exception
      DataGridViewComboBoxCell の値が有効ではありません

     

    という例外が発生してしまいました。

     


    - 確認画像

    - ダウンロード : サンプル

     

    2008年2月14日 15:36