プログラミングと日々思ったことなど

ブログ名通りです。仕事でプログラミングをはじめました。

Listでコンボボックスの項目を追加する(グリッドコントロール)

朝早く起きてしまったので、昨日の復習を書きます。

昨日はC1.WPF.DataGridのテキストボックス列(デフォルト)からコンボボックス列へ変更する処理をしました。
以下はそのコードです。

 private void c1DataGrid_AutoGeneratingColumns(object sender, C1.WPF.DataGrid.DataGridAutoGeneratingColumnsEventArgs e)
    {
        if(e.Property.Name == "aaaa")
        {
        //コンボボックス設定
        var cmbClmn = new C1.WPF.DataGrid.DataGridComboBoxColumn(e.Property);
        cmbClmn.DisplayMemberPath = "a.NAME";
        cmbClmn.SelectedValuePath = "a.CODE";

        DataView dv = new DataView(this.aTbls.Tables["a.CODE"]);
        dv.RowFilter = "a.CODE.ccc = '00'";

        DataTable dtCode = dv.ToTable();

        List<Model> models = new List<Model>();
        foreach(DataRow dr in dtCode.Rows)
        {
            Model data = new Model();
            data.a.NAME = dr["a.CODE"].ToString() + " " + dr["a.NEME"].ToString();
            data.a.CODE = dr["a.CODE"].ToString();
            models.Add(data);
        }

        Model data1 = new Model();
        data1.a.NAME = "00 その他";
        data1.a.CODE = "00";
        models.Add(data1);

            cmbClmn.ItemSource = models;
        }

        if(e.Property.Name == "bbbb")
        {
            var cmbClmn = new C1.WPF.DataGrid.DataGridComboBoxColumn(e.Property);
            cmbClmn.DisplayMemberPath = "a.NAME";
            cmbClmn.SelectedValuePath = "a.CODE";

            List<Model> models = new List<Model>();

            Model data1 = new Model();
            data1.a.NAME = "00 選択";
            data1.a.CODE = "00";
            models.Add(data1);

            cmbClmn.ItemSource = models;

        }
  

Listは別クラスにてModelの箱(a.NAMEと、a.CODEのプロパティと、WPFなのでプロパティチェンジを記述)を作成しています。

if文が2つあるのですが、Gridのヘッダー名で違った項目を表示することができるようにするためです。
1つ目のif文の中には、ループ文があります。
これは、もともとデータベースにあった項目を使用しているためです。
直接データベースからは持ってこれないので、
DataView dv = new DataView(this.aTbls.Tables["a.CODE"]); ←ここ
にて、DataViewの中身を指定したのちにフィルターをかけて使用する項目を指定しています。

2つ目はもともとある項目を使用していないので、新しい項目だけを追加しています。


また、デフォルトのテキストボックスだった時、各テキストボックスのデータは数字で表示されるようになっていました。
それはDtoから取得してきたデータが、数字であるためです。
それをこの処理をすることによって、数字の意味に適応した文字に変更しています。
変更したのは、数字だと何を意味しているのかわかりづらいからです。

以上です。

昨日はまだよくわかっていないListと、DataViewが作業で出てきました。
これで少し整理できてよかったです。