关于datagrid的提交更新问题
有两个控件:datagrid,button。希望在按了button以后datagrid能够更新数据库中的相应数据
我写的是: private SqlDataAdapter da=new SqlDataAdapter();
private DataSet ds;
private SqlCommandBuilder sqlcmb;
private SqlCommand comm;
private void button1_Click(object sender, System.EventArgs e)
{
da.UpdateCommand=comm;
da.Update(ds,"suppliers");
MessageBox.Show("修改已成功!","提示", MessageBoxButtons.OK,MessageBoxIcon.Information, MessageBoxDefaultButton.Button1,MessageBoxOptions.DefaultDesktopOnly);
}
private void frmProvider2_Load(object sender, System.EventArgs e)
{
DataTable dt = new DataTable();
dt.Columns.Add(new DataColumn("供应商编号", typeof(string)));
dt.Columns.Add(new DataColumn("公司名称", typeof(string)));
dt.Columns.Add(new DataColumn("联系人姓名", typeof(string)));
dt.Columns.Add(new DataColumn("联系人地址", typeof(string)));
dt.Columns.Add(new DataColumn("所在城市", typeof(string)));
dt.Columns.Add(new DataColumn("所在地区", typeof(string)));
dt.Columns.Add(new DataColumn("邮政编码", typeof(string)));
dt.Columns.Add(new DataColumn("联系电话", typeof(string)));
dt.Columns.Add(new DataColumn("传真号码", typeof(string)));
dt.Columns.Add(new DataColumn("公司主页", typeof(string)));
dt.Columns.Add(new DataColumn("备注信息", typeof(string)));
dataGrid1.DataSource = dt;
connDb connDb= new connDb();
SqlConnection Conn=connDb.dbConn();
string strSQL="select * from suppliers";
SqlDataAdapter da=new SqlDataAdapter(strSQL,Conn);
comm=new SqlCommand(strSQL,Conn);
ds=new DataSet();
da.SelectCommand = new SqlCommand(strSQL, Conn);
sqlcmb=new SqlCommandBuilder(da);
da.Fill(ds,"suppliers");
dataGrid1.SetDataBinding(ds,"suppliers");
}
不能保存更新,请大虾指点,谢谢!
问题点数:50、回复次数:4Top
1 楼qqqdong()回复于 2004-05-02 19:12:36 得分 20
public static DataSet SelectSqlSrvRows(string myConnection, string mySelectQuery, string myTableName)
{
SqlConnection myConn = new SqlConnection(myConnection);
SqlDataAdapter myDataAdapter = new SqlDataAdapter();
myDataAdapter.SelectCommand = new SqlCommand(mySelectQuery, myConn);
SqlCommandBuilder cb = new SqlCommandBuilder(myDataAdapter);
myConn.Open();
DataSet ds = new DataSet();
myDataAdapter.Fill(ds, myTableName);
//code to modify data in DataSet here
//Without the SqlCommandBuilder this line would fail
myDataAdapter.Update(ds, myTableName);
myConn.Close();
return ds;
}
Top
2 楼love22(小巧玲珑)回复于 2004-05-03 10:30:23 得分 10
private SqlDataAdapter da=new SqlDataAdapter();
private SqlCommandBuilder sqlcmb;
改成
private static SqlDataAdapter da=new SqlDataAdapter();
private static SqlCommandBuilder sqlcmb;
就ok了
因为当你再调用类时,da已经不是原来那个了,只有加static它的值才再一次调用时不会变,只有重新开始或者da.dispose()才会变Top
3 楼graybelt(灰色地带)回复于 2004-05-03 13:31:21 得分 10
ds.AcceptChanges();Top
4 楼BlueLevin()回复于 2004-05-06 17:06:38 得分 10
可以重新实例化一下DataAdapter,再把DataSet填进去.如果想省点事.你就调用
private void frmProvider2_Load
因为窗体加载时总要从数据库取数据显示的吧Top




