首先说一下我想要的功能:在DataGridView中显示我的查询结果,修改里面的单元格,点击“更新”按钮后将修改后的单元格保存到数据库。
下面是我的数据表结构:
表一:tb_sportid,//主键
name
表一:tb_sporterid,//主键
name
表三:tb_sporter_listid,//主键
sport_id,
sporter_id,
name下面是我的绑定到DataGridView代码        private DataTable dtSportResult;
        private SqlDataAdapter sdaSportResult;        private void btnSearchSportListResult_Click(object sender, EventArgs e)
        {
            string connStr = SportAdmin.Properties.Settings.Default.db_sport_sysConnectionString;            SqlConnection con = new SqlConnection(connStr);
            string sql = @"SELECT tb_sporter_list.id AS '编号', tb_sport.name AS '项目名称', tb_sporter.name AS '运动员姓名', tb_sporter_list.result AS '比赛成绩'
                               FROM tb_sporter_list, tb_sport , tb_sporter
                               WHERE tb_sporter_list.sport_id = tb_sport.id AND
                                     tb_sporter_list.sporter_id = tb_sporter.id AND
                                     tb_sport.name='男子50米'";
            sdaSportResult = new SqlDataAdapter(sql, con);            dtSportResult = new DataTable();
            sdaSportResult.Fill(dtSportResult);
            dgvSportResult.DataSource = dtSportResult;
        }
上面代码执行后,
DataGridView显示一个表格:
编号  项目名称 运动员姓名 比赛成绩
xx     xxxx      xxxx         
xx     xxxx      xxxx 
我希望在比赛成绩单元格输入数字后,点击“更新”按钮保存修改结果。
更新按钮的代码如下:
        //更新成绩
        private void btnModifySportResult_Click(object sender, EventArgs e)
        {
            string connStr = SportAdmin.Properties.Settings.Default.db_sport_sysConnectionString;
            SqlConnection conn = new SqlConnection(connStr);
            sdaSportResult.UpdateCommand = new SqlCommand(@"update tb_sporter_list set result=@result", conn);//如果使用自定义的代码,我应该怎么把修改后的成绩传给result?            //SqlCommandBuilder sb = new SqlCommandBuilder(sdaSportResult);//使用这句,会提示对于多个基表不支持动态SQL生成
            sdaSportResult.Update(dtSportResult);
            //dgvSportResult.Update();
        }这里遇到两个问题,
如果使用SqlCommandBuilder ,会提示对于多个基表不支持动态SQL生成;
如果使用自定义的更新语句,我不知道怎么获取所有修改后的单元格的值传递给SQL的update语句。问题可以归结为:
如果我想修改DaTAGridView的单元格,点击“更新”就保存修改,应该怎么做?比较急,最多只能给100分,请大家帮忙,谢谢!

解决方案 »

  1.   

    private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
      {
      textBox1.Text =dataGridView1.Rows[dataGridView1.CurrentRow.Index ].Cells["id"].Value.ToString() ;
      textBox2.Text = dataGridView1.Rows[dataGridView1.CurrentRow.Index].Cells["name"].Value.ToString();
      }
      

  2.   

    基于数据库的视图,即通过SELECT一个或多个表生成的数据库视图
    如果要对该视图进行更新,通过编写存储过程来操作视图对应的实际数据表。
    用语句来判断,哪个字段是哪个表的,然后用语句update回去
      

  3.   

    datagridview貌似自动生成sql语句只能来源于单张基表  如果是来源于多张表  要进行一些改动