2012-07-18 51 views
-1

我想在第二列中使用组合框创建数据组视图。在第二列中使用组合框创建datagridview

目前我的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

任何帮助表示赞赏。

+0

所以它不工作? – GameAlchemist 2012-07-18 23:12:19

+0

并不是说它会影响问题,但是将日期存储为字符串有一个公平的可能性,在某些时候咬你。 “dtColumn = new DataColumn(”ClmDate“,typeof(String));” – 2012-07-19 14:05:00

+0

将有一个看看。只是给了一小部分代码。网格比这个更大,并包含一个按钮。 – Rob 2012-07-27 04:03:18

回答

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

+0

或从DataGridView中删除“Patient”列,然后将其添加回DataGridViewComboBoxColumn – Jesse 2012-07-18 23:23:48

+0

我已经手动创建列 – Rob 2012-07-27 04:04:15

+0

希望我的回答对您有帮助。如果是这样,你应该考虑接受它。 – 2012-07-27 04:12:35