方法总会有的,这里采用了中间量。
添加一个bindingSource的对象bindingSource1,并设置dataGridView1的DataSource属性为bindingSource1。
当点击“查询”或者进行其它 *** 作(如直接Load界面时)(这些 *** 作首次导致对dataGridView1的数据源进行绑定),可以按如下来做:
DataTable dt//全局变量
DataTable dt=从数据库中查询出来的数据集合;
bindingSource1.DataSource=dt
假如点击某个按钮,在当前已经绑定的dataGridView1中再插入一条新的记录,可这样写:
DataRow row = dt.NewRow()
row["数据库字段"] = ...
row["数据库字段"] = ...
...
dt.Rows.Add(row)
这样就可以了.不过这样还有一个问题,假如说当前dataGridView1没有数据,还没有进行查询,我先点击按钮添加一条记录到dataGridView1中则会出现"未将对象引用到实例"这种错误,那怎么解决这个问题呢?
下面继续:
在那个你点击的按钮事件里面写:
if (dt != null)
{
//添加到bindingSource绑定的DataTable中
DataRow row = dt.NewRow()
row["数据库字段"] = ...
row["数据库字段"] = ...
...
dt.Rows.Add(row) }
else
{
dataGridView1.DataSource = null
dataGridView1.Rows.Add()
dataGridView1["dataGridView1列名", dataGridView1.Rows.Count - 1].Value = ...
dataGridView1["dataGridView1列名", dataGridView1.Rows.Count - 1].Value = ...
...
}
好了,OK了~@@~
1.实质就是动态添加控件,new一个datagridview对象,然后使用xxx.item.add()在窗体里add()就可以实现。
2.例程:
1
2
3
4
5
6
7
8
9
10
11
datatable
dt
=
new
datatable()
dt.columns.add("编号",typeof(int32))
dt.columns.add("名称",
typeof(string))
dt.columns.add("数量",
typeof(string))
datarow
dr
=
dt.newrow()
dr["编号"]
=
datagridview1.currentcell.owningrow.cells["编号"].tostring()
dr["名称"]
=
datagridview1.currentcell.owningrow.cells["名称"].tostring()
dt.rows.add(dr)
datagridview2.datasource
=
dt
弄个修改的按钮,然后做一个Click的事件比如你的DataAdapter的对象为adapter,DataSet的对象为set
SqlCommandBuilder builder = new SqlCommandBuilder (adapter)
adapter.Update(set,"表名")
这样就可以了
验证的话在修改按钮那用IF判断如果符合条件就掉过。如果不符合可以用MessageBox来报错,然后Return出方法体就行了。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)