有关datagridview添加行

yongheng1874 2006-08-10 09:48:19
之前我为了在datagridview中显示数据,把datagridview的datasoure绑定到一dataset中。.

我在实现添加功能时,为了直接在datagridview中添加一行以显示刚添加进去的数据(而不是从dataset重新导入), -------- dataGridView1.Rows.Add();
却出现错误:

其他信息: 当控件被数据绑定时,无法以编程方式向 DataGridView 的行集合中添加行。

应该怎么处理啊??
...全文
4909 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
yp_zhou 2006-09-15
  • 打赏
  • 举报
回复
DataGridView 是不可以添加行的吧?因为它是一个试图,只能在它的DataTable中才可以添加的
snowvan 2006-09-15
  • 打赏
  • 举报
回复
DataGridView添加行只能在其数据源中添加,添加完后不用再次指定数据源,DataGridView会自动将你刚添加进数据源的内容显示出来!但是注意这个数据这时只在你的数据源中而没有添加进数据库!!
你要在调用保存的方法提交变更!
namhyuk 2006-08-11
  • 打赏
  • 举报
回复
vs2005开始的一个小技巧。

应用BindingSource.AddNew及AddingNew事件。

举个例子,读一个Access数据库tb表,只有name和age字段。

把一个BindingSource组件拖到Form上,Name:bs1

private DataTable dt;
...
private void Form1_Load(object sender, EventArgs e)
{
dt = new DataTable();
using (OleDbConnection conn = new OleDbConnection())
{
conn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=db1.mdb";

OleDbCommand cmd = new OleDbCommand();
cmd.Connection = conn;

cmd.CommandText = "select name, age from tb";

conn.Open();

dt.Load(cmd.ExecuteReader(CommandBehavior.CloseConnection));
}

bs1.DataSource = dt;

dataGridView1.DataSource = bs1;

textBoxName.DataBindings.Add("Text", bs1, "name");
textBoxAge.DataBindings.Add("Text", bs1, "age");

bs1.AddingNew += new AddingNewEventHandler(bs_AddingNew);
}

private void buttonAdd_Click(object sender, EventArgs e)
{
bs1.AddNew();
}
private void bs_AddingNew(object sender, AddingNewEventArgs e)
{
BindingSource bs = (BindingSource)sender;
DataView dv = (DataView)bs.List;
DataRowView drv = dv.AddNew();

drv["name"] = "aaa";
drv["age"] = 12;

e.NewObject = drv;
}
cansum396 2006-08-11
  • 打赏
  • 举报
回复
在数据源中rows.add
ReViSion 2006-08-10
  • 打赏
  • 举报
回复
在dataset中加入不就行啦
zxc_mjf 2006-08-10
  • 打赏
  • 举报
回复

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧