各位高人,求救呀!由于我的系统用到的窗体比较的多,要求输入的也很多,因此我想在进窗体在datagrid中选中某一行的时候,就可以对数据进行修改,然后保存进数据库,这样就可以实现对任何窗体修改对应的信息。但是不知道这个代码该怎么写,请各位高人指点一下!小弟在此谢过啦!急,在线等待~~~~~~~

解决方案 »

  1.   

    如果是在DataGrid中直接修改的话,它有个行修改的标志,你可以去MSDN找一下DataGrid的示例。实现其实也很简单,只是记住修改的记录的唯一标识,根据它去修改数据库。
      

  2.   

    有个行修改的标志?
    是什么呢?
    是行号还是其他的什么的?
    或者把该行的id取出来,更新回数据库的时候就用这个id更新数据库。
      

  3.   

    http://search.csdn.net/Expert/topic/1238/1238581.xml?temp=.0429346
      

  4.   

    DataTable dt = new DataTable();
    //--------1---------------------------------
    DataSet ds = new DataSet();
    ds = 返回的数据集;
    datagrid.DataSource = ds.Table["tablename"];//--------2---------------------------------
    //在点击保存按钮时
    dt = ((DataTable)datagrid.DataSource).GetChanges();
    if(dt.Rows.Count!=0)
       调用一个自定义的方法来出来,这里建议你参考MSDN里的类库CommandBuilder的使用(如OleDbCommandBuilder、OracleCommandBuilder和SqlCommandBuilder),如:public override int SqlUpdate(string sCmmandText,DataTable dt,string dtname)
    { sqlConn = dbc.SqlDBConnection();
    sqlAdapt = new SqlDataAdapter(sCmmandText,sqlConn);
    SqlCommandBuilder sqlCb = new SqlCommandBuilder(sqlAdapt);
    sqlCb.RefreshSchema(); try
    {
      if(sqlConn.State == ConnectionState.Closed)
      sqlConn.Open();   retValue = sqlAdapt.Update(dt); }
    catch(SqlException ex)
    {

      System.IO.StreamWriter sw = System.IO.File.AppendText(@"C:\ErrLog.txt");
    sw.WriteLine("数据库错误发生在 " +  
    DateTime.Now.ToString(CultureInfo.CurrentCulture) 
    + ". 详细信息:" +  ex.Message);
    sw.Close();
    return 0;
    }
    catch(System.Exception ex)
    {
    System.IO.StreamWriter sw =
    System.IO.File.AppendText(@"C:\ErrLog.txt");
    sw.WriteLine("一般性错误发生在 " + 
    DateTime.Now.ToString(CultureInfo.CurrentCulture) 
    + ". 详细信息:" +  ex.Message);
    sw.Close();
    return 0;
    }
    finally
    {
    sqlConn.Close();
    } return retValue; }
      

  5.   

    先用dataset从数据库中取出表,然后将datagrid绑定到该表,这样修改datagrid就直接修改了dataset.然后用sqldataAdapter将数据集返回到数据库就成了。
      

  6.   

    private SqlDataAdapter adapter;
    private SqlCommandBuilder sqlbuilder;
    public void datasetbacksql(string tabel)
    {
    adapter=new SqlDataAdapter(sql,conn);
    sqlbuilder=new SqlCommandBuilder(adapter);

    conn.Open();
    try
    {

    adapter.Update(staticdata.dataset,tabel);

    }
    catch(Exception err)
    {
    MessageBox.Show(err.Message);
    }
    conn.Close(); }