17,741
社区成员
发帖
与我相关
我的任务
分享
DataGridView m_datagridview = new DataGridView();
DataTable m_datatable = new DataTalbe();
其实,绑定的时候不需要用BindingSource这个中间组件,象下面这样就可以直接绑定了:
m_datagridview.DataSource = m_datatable;
接下来,手动为m_datagridview添加列,我以前的做法是这样的
DataGridViewColumn dgvc = new DataGridViewColumn();
dgvc.Name = "NAME";
dgvc.DataPropertyName = "FIELD";
m_datagridview.Columns.Add(dgvc);
主贴中没有说明一件事,我那个m_datatable是自动从数据库读取字符串表格的,结果象上面这样一添加后,程序启动都启动不起来,关键原因在于,DataGridViewColumn这个对象它还有细化分类,专门用来存储文本的列有专门的对象,所以在手动创建列的时候,不是创建DataGridViewColumn对象,而是要创建DataGridViewTextBoxColumn对象。把上面手动添加列的代码弄成
DataGridViewTextBoxColumn dgvc = new DataGridViewColumn();
dgvc.Name = "NAME";
dgvc.DataPropertyName = "FIELD";
m_datagridview.Columns.Add(dgvc);
象这样,编译通过启动后,就一切正常了。
DataGridView dataGridView1 = new DataGridView();
BindingSource bindingSource1 = new BindingSource();
dataGridView1.ColumnCount = 2;
dataGridView1.Columns[0].Name = "Field1";
dataGridView1.Columns[0].DataPropertyName = "Field1";
dataGridView1.Columns[1].Name = "Field2";
dataGridView1.Columns[1].DataPropertyName = "Field2";
bindingSource1.DataSource = GetDataTable();
dataGridView1.DataSource = bindingSource1;