我正在尝试在第二列中使用组合框创建数据网格视图。
目前我的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 :(得分: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
,并手动创建所有列。