-1

2列目にコンボボックスを持つデータグリッドビューを作成しようとしています。

現在、私のデータグリッドはデータテーブルにバインドされています。フィールド患者は、コンボボックスに必要なものです。

以下のコードはフィールドを追加しますが、それはグリッドの最後にあり、複製されています...つまり、2 つの患者フィールドがあります。

DataTable dt = new DataTable();
DataColumn dtColumn;

dtColumn = new DataColumn("ClmDate", typeof(String));
dt.Columns.Add(dtColumn);

dtColumn = new DataColumn("Patient", typeof(Decimal));
dt.Columns.Add(dtColumn);

dtColumn = new DataColumn("ClmAmt", typeof(Decimal));
dt.Columns.Add(dtColumn);

cService cservice = new cService();

var trans = cservice.ClmView(txtNo.Text.Trim());

if (trans != null)
{
    // Add items to datatable
    foreach (var t in trans)
    {
        //save to datatable
        DataRow row = dt.NewRow();
        row["clmdate"] = t.clmdate.ToShortDateString();
        row["patient"] = t.patient;
        row["clmAmt"] = t.clmamt;

        dt.Rows.Add(row);
    } 
}

Grid_Refresh();

private void Grid_Refresh()
{
    grdTrans.DataSource = dt;    

    DataGridViewComboBoxColumn cb = new DataGridViewComboBoxColumn();
    cb.HeaderText = "Patient";
    cb.Name = "Patient";
    cb.Items.Add("Foo");
    cb.Items.Add("Bar");
    grdTrans.Columns.Add(cb);        
}

以下は、私が再現しようとしているグリッドの画像です...

http://s13.postimage.org/aale668uf/grd.png

どんな助けでも大歓迎です。

4

1 に答える 1

1

患者の列を 2 回追加しています。一度データに:

dtColumn = new DataColumn("Patient", typeof(Decimal));
dt.Columns.Add(dtColumn);

そして一度明示的にGrid_Refresh()

DataGridViewComboBoxColumn cb = new DataGridViewComboBoxColumn();
cb.HeaderText = "Patient";
cb.Name = "Patient";
cb.Items.Add("Foo");
cb.Items.Add("Bar");
grdTrans.Columns.Add(cb);

を設定し、すべての列を手動で作成する必要があると思います。DataGridView.AutoGenerateColumns= false

于 2012-07-18T23:18:55.147 に答える