DataGridView插入行的问题
程序共有三个窗体,窗体一提供文档浏览,定义查询条件,点击button,弹出窗体二;窗体二有一DataGridView控件,DataGridView中添加了3列未绑定DataGridViewButtonColumn,分别为添加、修改、删除,点击添加、修改时均弹出窗体3的实例,现修改、删除功能已正常;添加功能无法实现。
窗体1相关代码:
Form2 f2 = new Form2();
string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + textbox1.Text;
f2.aa = strConn;
OleDbConnection conn = new OleDbConnection(strConn);
conn.Open();
OleDbDataAdapter ad = new OleDbDataAdapter(strSQL, conn);
DataTable dt = new DataTable();
ad.Fill(dt);
f2.DataGridView1.DataSource = dt.DefaultView;
conn.Close();
f2.Show();
this.Hide();
问题:
1、当直接在DataGridView中直接添加行时,当控件被数据绑定时,无法以编程方式向 DataGridView 的行集合中添加行。
2、将DataGridView1.Rows.AddCopy(e.RowIndex);改成((DataTable)DataGridView1.DataSource).Rows.Add();
提示:无法将类型为“System.Data.DataView”的对象强制转换为类型“System.Data.DataTable”。
3、将((DataTable)DataGridView1.DataSource).Rows.Add();改为
DataTable dt = DataGridView1.DataSource as DataTable;
DataRow tpdr=dt.NewRow();//
未将对象引用设置到对象的实例。
提示:未将对象引用设置到对象的实例。
4、DataGridView1.DataSource as DataTable改为一行一列的放到DataTable里,第一次点添加按钮时正常,第二次时提示:名为“Column1”的列已属于此 DataTable;具体代码如下:
DataTable dt = new DataTable();
dt.TableName = "tptable";
//添加列
for (int i = 0; i < dgvYuan.Columns.Count; i++)
{
dt.Columns.Add(dgvYuan.Columns[i].Name);//名为“Column1”的列已属于此 DataTable。
}
//添加行
for (int j = 0; j < dgvYuan.Rows.Count; j++)
{
DataRow dr = dt.NewRow();
for (int k = 0; k < dgvYuan.Columns.Count; k++)
{
dr[k] = dgvYuan.Rows[j].Cells[k].Value;
}
dt.Rows.Add(dr);
}
DataRow tpdr = dt.NewRow();
tpdr["列名1"]=textbox1.text;
tpdr["列名2"]=textbox2.text;
tpdr["列名3"]=textbox3.text;
dt.Rows.InsertAt(tpdr, e.RowIndex);
求解决办法,最好能告知4个错点的具体原因,代码该如何写?
------解决方案--------------------问题是下面这行
f2.DataGridView1.DataSource = dt.DefaultView;
直接绑定DataTable就行
f2.DataGridView1.DataSource = dt;
------解决方案--------------------绑定数据集后,就不能通过Rows.Add添加行了,你可以在DataTable中增加行,然后绑定到grid
------解决方案--------------------写进数据库很简单,是想要datagridview也有数据进去?
试试
DataRow row = dt.NewRow();
dt.Rows.InsertAt(row, 行号);