-1

我正在尝试在第二列中创建一个带有组合框的 datagridview。

目前我的数据网格绑定到一个数据表。现场患者是我需要在组合框中拥有的。

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

您将两次添加患者列。一次到数据:

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 回答