private void saveDetail(int ID)   //保存明细
        {
            for (int i = 0; i < dataGridView2.Rows.Count; i++)
            {
                dataGridView2.Rows[i].Cells["ID"].Value = ID;
            }
            
            SqlConnection conn = new SqlConnection(connString);
            cmd0 = conn.CreateCommand();
            cmd0.CommandText = "select * from 订单明细";
            SqlDataAdapter da0 = new SqlDataAdapter(cmd0);
            SqlCommandBuilder cb0 = new SqlCommandBuilder(da0);
            
            da0.Update(ds0);
            dataGridView2.Update();
        }我在做保存订单明细,ID是订单主表的ID(已成功获取到的,ID是主子表的关联字段),dataGridView2是订单明细,我想实现一下子保存订单主表和明细表,思路是先更新dataGridView2的ID(主表ID)列,再一起保存n条明细,现在遇到的问题是:别的字段都可以保存到明细表,就是ID列有时是全部成功保存的,有时却是某一条明细不能保存ID字段(其他字段保存了),为什么?谢谢

解决方案 »

  1.   

    加个异常处理
    try
    {}
    catch
    {}
      

  2.   

    ID我试过写某一个值都不行,它是主表的ID,跟踪过,是成功获取到的。而且他保存的时候,假如有三行明细,那么每次都是第一行明细获取不到ID,第二、三行明细是成功获取并成功保存的。
      

  3.   

    假如有n行订单明细,每次都是第一行的ID保存不了,其他明细保存成功的。
      

  4.   


    private void saveDetail(int ID)  //保存明细
            {
    this.ValidateChildren();  
                for (int i = 0; i < dataGridView2.Rows.Count; i++)
                {
                    dataGridView2.Rows[i].Cells["ID"].Value = ID;
                }
               
                SqlConnection conn = new SqlConnection(connString);
                cmd0 = conn.CreateCommand();
                cmd0.CommandText = "select * from 订单明细";
                SqlDataAdapter da0 = new SqlDataAdapter(cmd0);
                SqlCommandBuilder cb0 = new SqlCommandBuilder(da0);
               
                da0.Update(ds0);
                dataGridView2.Update();
            } 
      

  5.   

    DataGridView单元个的值更改后要验证后才会提交数据源。
    值丢失可能是光标没离开单元格,未验证,所有没有数据。。
    仅仅是可能,试下看可以不