看了半天,我终于知道你是在添加行,并不是绑定——你是试图从数据库中逐行读取数据,然后赋值到Combobox中,对不?请不要这样做!请直接把DataTable作为数据源赋值给GridView!
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
}
private void button1_Click(object sender, EventArgs e)
{
DataTable dt = new DataTable();
dt.Columns.Add("Id", typeof(int));
dt.Columns.Add("Name", typeof(string));
dt.Rows.Add(1, "内容1");
dt.Rows.Add(2, "内容2");
DataGridViewComboBoxColumn c = new DataGridViewComboBoxColumn();
c.DataSource = dt;
c.DisplayMember = "Name";
c.ValueMember = "Id";
c.DataPropertyName = "Id";
dataGridView1.Columns.Add(c);
//模拟数据库内容!
DataTable dt2 = new DataTable();
dt2.Columns.Add("Id", typeof(int));
for (int i = 1; i < 11; i++)
{
dt2.Rows.Add(i % 2 == 0 ? 1 : 2);
}
dataGridView1.DataSource = dt2;
}
}