在第二列中使用combobox创建datagridview

时间:2012-07-18 23:10:26

标签: c#

我正在尝试在第二列中使用组合框创建数据网格视图。

目前我的datagrid绑定到数据表。现场病人是我需要在组合框中使用的。

下面的代码添加了字段,但它位于网格的末尾并且是重复的...即有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

感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

您正在添加患者列两次。一旦到了数据:

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,并手动创建所有列。