本帖最后由 lxcnn 于 2008-09-13 09:26:14 编辑

解决方案 »

  1.   

    提交代码前加上
    DataGridView.EndEdit()
      

  2.   

    跟一下,,看看你最后一个循环里的CMD3是空的吗?
      

  3.   

     //用户输入几行数据循环插入数据库 
                for (int i = 0; i <= newCount - 1; i++) 
                { 
                    string a = dgv_Parameter.Rows[table_count + i].Cells[0].Value.ToString();  //第一个字段值 
                    int b = int.Parse(dgv_Parameter.Rows[table_count + i].Cells[1].Value.ToString());//第二个字段值 
                    string c = dgv_Parameter.Rows[table_count + i].Cells[2].Value.ToString();//最后个字段值 (就是这个字段,当最后一条数据插入数据库时,这个字段总为空) 
                    SqlCommand cmd3 = new SqlCommand("insert into run_parameter(name,content,res) values('" + a + "','" + b + "','" + c + "')", con); 
                    cmd3.ExecuteNonQuery(); 
                    
                } 
    改成这样应该可以了吧,把i <= newCount - 2改成i <= newCount - 1
      

  4.   

    你没有结束编辑啊~
    在提交前DataGridView.EndEdit()一下~
      

  5.   

    DataGridView.EndEdit(),
    或者在最后保存时将当前单元格指到别的。 if (dgvData.CurrentRow != null)
    {
        
        dgvData.CurrentCell = dgvData[1, dgvData.CurrentRow.Index];     //dgvData.CurrentCell = dgvData[0, dgvData.CurrentRow.Index]; }
      

  6.   

    解决了  的确是要加上DataGridView.EndEdit();  可是我不懂为什么?不管结束不结束编辑,这与我取值有关系吗?都是一样取值啊string c = dgv_Parameter.Rows[table_count + i].Cells[2].Value.ToString();//最后个字段值    请大哥们详细讲解下  !!非常感谢大家的关注与帮助,谢谢所有进来帮助我的大哥们!!
      

  7.   

    DataGridView.EndEdit()  焦点问题
    你还没有结束编辑所以没能实现 传值
      

  8.   

    我用sqlcommandbuilder类在实现数据更新操作,但遇到个很棘手的问题,当我把更新按钮做成DATAGRIDVIEW控件中的列按钮时(即在DATAGRIDVIEW中每一行都有“更新”这一按钮列),不能放图,希望我的语言表述您能理解。当我更改了某一行的数据时,在点击当前更改行的更新按钮时,更改的数据没存放到数据库,于是我用了dgvMaintenance.IsCurrentRowDirty变量来查看,发现当你更新数据后,一定要点击其他行的任意列,或者在CellEndEdit事件中添加EndEdit()方法,再按回车,方能成功更新。
    更新后直接点击该行的任意列,都无法把更新的操作记录提交,因此不能存入数据库。
    不知道是怎么一回事。
      

  9.   

    关键是 .NET的数据库操作都是 离线方式进行的。就是说我们在程序中对数据库操作其实均在缓存里,因此在执行 下一条语句时强迫更新了上一条语句的结果,而
    最后一条语句没有后续的操作来强迫更新,就不能更新到数据库。