在查找到数据后,我想在dataGridView中直接修改分数字段,单击保存按钮后,把dataGridView中修改的分数字段更新到数据库。
并且其他字段不需要更新,怎么写代码?(或者让用户不能修改除分数以外的字段)谢谢^_^
我使用如下代码获取数据(断开式操纵数据库和使用存储过程):
            SqlConnection cn = new SqlConnection("Data Source=.;Initial Catalog=DB_SMS;Integrated Security=True");
            DataSet ds = new DataSet();
            SqlCommand cmd = cn.CreateCommand();
            cmd.CommandType = CommandType.StoredProcedure;      //设置命令类型为存储过程
            cmd.Parameters.Add("@S_S_Class", SqlDbType.NChar).Value = cboSearchClass.Text;      //班级直接到Student表中查找,字段为班级名称的字符串
            cmd.Parameters.Add("@S_S_Course", SqlDbType.NChar).Value = Convert.ToString(cboSearchCourse.SelectedValue);     //课程通过CourseID去GradeInput表中查找
            cmd.CommandText = "S_GradeInput_Search_B";        //存储过程名称
            SqlDataAdapter dp = new SqlDataAdapter();
            dp.SelectCommand = cmd;
            dp.Fill(ds, "Student");
            this.dataGridView1.DataSource = ds.Tables[0];

解决方案 »

  1.   

    做成模板列,分数字段里面放个textbox,
      

  2.   

    搂主是要更新所有的分数字段吗?还是一次只要更新一条,如果只要更新一条就直接写个COMMANDText=“UPDATE 你要更新的字段和表”。如果楼主要更新所有的分数字段,可以不让用户修改其它字段,
    设置其它字段的可否更改的属性。readonly=true.
    然后用SQLDATAADEPTER的update()方法更新表到数据库就可以了 。
      

  3.   

    问题已经解决,谢谢大家^_^
    代码如下:
    三个变量都是字符串类型
            private void saveGrade()
            {
                object objCellValue1 = this.dataGridView1.Rows[0].Cells[0].Value.ToString().Trim();
                object objCellValue2 = this.dataGridView1.Rows[0].Cells[3].Value.ToString().Trim();
                object objCellValue3 = this.dataGridView1.Rows[0].Cells[2].Value.ToString().Trim();
                for (int i = 0; i < dataGridView1.Rows.Count; i++)
                {                tempID = Convert.ToString(objCellValue1);
                    tempCourseName = Convert.ToString(objCellValue2);
                    tempGrade = Convert.ToString(objCellValue3);                DataSet ds = new DataSet();
                    SqlCommand cmd = cn.CreateCommand();
                    cmd.CommandType = CommandType.StoredProcedure;      //设置命令类型为存储过程
                    cmd.Parameters.Add("@S_G_ID", SqlDbType.NChar).Value = tempID;
                    cmd.Parameters.Add("@S_G_CourseName", SqlDbType.NChar).Value = tempCourseName;
                    cmd.Parameters.Add("@S_G_Grade", SqlDbType.NChar).Value = tempGrade;
                    cmd.CommandText = "S_GradeInput_Grade_U";        //存储过程名称
                    SqlDataAdapter dp = new SqlDataAdapter();
                    dp.SelectCommand = cmd;
                    dp.Fill(ds, "S_GradeInput_Grade_U");
                }
            }