2.我看了DataGrid中修改及删除某行的例子,它只是在DataView中进行修改或删除再绑定,如何通过DataSet将改动传到数据库,并提事务支持(如不成功则rollback,成功则Commit)?
多谢!
7 个解决方案
#1
请告诉一下?
#2
这个问题很有普遍性,请高手作答
#3
是啊,我也想知道!
#4
你的问题给这些分真的不是很多,不过,还是要告诉你:
1、在DATAGRID中直接编辑的做法我是不推荐的,因为如果你的字段如果很多或者像您一样遇到这种需要校验的情况(可能有比较复杂的校验);一方面,编辑时会破乱界面的整体布局(不知你发现没有)另一方面校验不是很好做。不是一句两句可以说清楚的,只告诉你一个大概的路子,就是使用Template列,在列里面加东西。如果具体请和我直接联系。
2、对于将DATASET中的修改直接传到数据表中,要使用SqlCommandBuilder和SqlDataAdapter的Update方法,下面是简单的示例,需要您自己进行完善:
SqlConnection con=new SqlConnetion(strConnection);
SqlDataAdapter apt=new SqlDataAdapter(strQuery,con);
SqlCommandBuilder cmb=new SqlCommandBuilder(apt);
DataSet dst=new DataSet();
con.Open();
apt.Fill(dst,"tbl1");
//Modify your data in the dataset directlly.
apt.Update(dst,"tbl1");
con.Close();
要注意的是在构造查询字串时,应使用一个完整的字串,因为dataset的更新和删除操作都是依靠这个查询字串的。
1、在DATAGRID中直接编辑的做法我是不推荐的,因为如果你的字段如果很多或者像您一样遇到这种需要校验的情况(可能有比较复杂的校验);一方面,编辑时会破乱界面的整体布局(不知你发现没有)另一方面校验不是很好做。不是一句两句可以说清楚的,只告诉你一个大概的路子,就是使用Template列,在列里面加东西。如果具体请和我直接联系。
2、对于将DATASET中的修改直接传到数据表中,要使用SqlCommandBuilder和SqlDataAdapter的Update方法,下面是简单的示例,需要您自己进行完善:
SqlConnection con=new SqlConnetion(strConnection);
SqlDataAdapter apt=new SqlDataAdapter(strQuery,con);
SqlCommandBuilder cmb=new SqlCommandBuilder(apt);
DataSet dst=new DataSet();
con.Open();
apt.Fill(dst,"tbl1");
//Modify your data in the dataset directlly.
apt.Update(dst,"tbl1");
con.Close();
要注意的是在构造查询字串时,应使用一个完整的字串,因为dataset的更新和删除操作都是依靠这个查询字串的。
#5
路德兄,多谢!
#6
怎样给分?
#7
kk
#1
请告诉一下?
#2
这个问题很有普遍性,请高手作答
#3
是啊,我也想知道!
#4
你的问题给这些分真的不是很多,不过,还是要告诉你:
1、在DATAGRID中直接编辑的做法我是不推荐的,因为如果你的字段如果很多或者像您一样遇到这种需要校验的情况(可能有比较复杂的校验);一方面,编辑时会破乱界面的整体布局(不知你发现没有)另一方面校验不是很好做。不是一句两句可以说清楚的,只告诉你一个大概的路子,就是使用Template列,在列里面加东西。如果具体请和我直接联系。
2、对于将DATASET中的修改直接传到数据表中,要使用SqlCommandBuilder和SqlDataAdapter的Update方法,下面是简单的示例,需要您自己进行完善:
SqlConnection con=new SqlConnetion(strConnection);
SqlDataAdapter apt=new SqlDataAdapter(strQuery,con);
SqlCommandBuilder cmb=new SqlCommandBuilder(apt);
DataSet dst=new DataSet();
con.Open();
apt.Fill(dst,"tbl1");
//Modify your data in the dataset directlly.
apt.Update(dst,"tbl1");
con.Close();
要注意的是在构造查询字串时,应使用一个完整的字串,因为dataset的更新和删除操作都是依靠这个查询字串的。
1、在DATAGRID中直接编辑的做法我是不推荐的,因为如果你的字段如果很多或者像您一样遇到这种需要校验的情况(可能有比较复杂的校验);一方面,编辑时会破乱界面的整体布局(不知你发现没有)另一方面校验不是很好做。不是一句两句可以说清楚的,只告诉你一个大概的路子,就是使用Template列,在列里面加东西。如果具体请和我直接联系。
2、对于将DATASET中的修改直接传到数据表中,要使用SqlCommandBuilder和SqlDataAdapter的Update方法,下面是简单的示例,需要您自己进行完善:
SqlConnection con=new SqlConnetion(strConnection);
SqlDataAdapter apt=new SqlDataAdapter(strQuery,con);
SqlCommandBuilder cmb=new SqlCommandBuilder(apt);
DataSet dst=new DataSet();
con.Open();
apt.Fill(dst,"tbl1");
//Modify your data in the dataset directlly.
apt.Update(dst,"tbl1");
con.Close();
要注意的是在构造查询字串时,应使用一个完整的字串,因为dataset的更新和删除操作都是依靠这个查询字串的。
#5
路德兄,多谢!
#6
怎样给分?
#7
kk