初学C#,我想把一个表的数据加载到dataView中,让用户编辑,
加载数据的代码如下:
 private void button32_Click(object sender, EventArgs e)
{
string str = "Server=192.168.0.1; User id=sa;Pwd=1;Database=hos";//创建连接字串
SqlConnection Sqlconn = new SqlConnection(str); //创建连接对象
Sqlconn.Open();                                 //打开连接
string strsql = "select * from table1";   //执行查询
SqlDataAdapter da = new SqlDataAdapter(strsql, Sqlconn); //使用DataAdapter
DataSet ds = new DataSet();                    //使用DataSet
da.Fill(ds, "testTable");
dataGridView2.DataSource = ds;
dataGridView2.DataMember = "testTable";
}
 这样数据就加载到了datagrid中,现在想请大家帮写一下数据保存的代码。就是用户修改了这个表中的数据后,点一下按钮就能保存回数据库。我按照书上写的方法做时,出错,“当传递具有已修改行的datarow集合时,更新要求有效的updatecommand”,看了一下网上的文章说是表要有主键,但是我的表已建有主键啊。
请大家帮写一段保存修改的代码。谢谢啦。

解决方案 »

  1.   

    你要获取修改后的数据,根据这个数据执行你更新的sql脚本。
      

  2.   

    不用写代码,gridview前台再带编辑保存的功能。
      

  3.   

    "你把你 更新数据的方法帖上来看看"--我看的书是"VC#2005从入门到精通"第24章的例子,它用的是数据集设计器,我把获取数据的部分民改成了上面的代码, 保存的代码我照着改了一下就出错。
    try
     {
      NorthwindDataSet changes = (NorthwindDataSet)northwindDataSet.GetChanges();
    if (changes == null)
    {
           return;
     }
    DataTable dt = changes.Tables["testTable"];
    DataRow[] badRows = dt.GetErrors();
     if (badRows.Length == 0)
    {
    int numRows = SqlDataAdapter.Update(changes);
    MessageBox.Show("Updated " + numRows + " rows", "Success");
    northwindDataSet.AcceptChanges();
    ........“不用写代码,gridview前台再带编辑保存的功能。”   -您倒是讲清楚啊,我修改后再刷新一下怎么还是旧数据呢?
      

  4.   

    computerfox的“完整的代码实现” 确实管用,呵呵,先谢谢,不过还想您问一下,因为我的的书上,是用的数据集设计器绑定的dataview,所以它可以在dataview的属性窗口把某列设定为只读, 某列设定为选择框,这种用代码填充数据的情况下,怎么进行这些设定呢?
      

  5.   

    完全可以的!
    可以自定义列的类型,添加到datagridveiw中!
    1、如何才能在DataGridView中添加NumericUpDown控件列?
    参考:http://msdn.microsoft.com/en-us/library/aa730881%28VS.80%29.aspx2、C# WinForm开发系列 - DataGridView
    http://www.cnblogs.com/peterzb/archive/2009/05/29/1491891.html