首先说一下我想要的功能:在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分,请大家帮忙,谢谢!
下面是我的数据表结构:
表一: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分,请大家帮忙,谢谢!
解决方案 »
- 水晶报表单据打印中的合计位置如何摆放(问题超简单,拿分很容易,高手进来啊)
- 数据库写入数据怪异的了
- AccessDataSource为什么没有update?
- C#中如何实现两个表中的级联删除?
- 这段代码怎么改才能正确
- 多线程非要同步吗?同步是保证一个线程处理一块代码,只允许我这线程进行..但是我不lock不行吗?会有什么问题呢?在线等!
- VS2005设置的几个小问题
- 嵌套的子DataGrid如何获取父DataGrid的参数
- ○这个能做到吗?
- C#里面的 event+=delagate(method) 怎么转换成vb.net 应该怎么写????
- ajax的cache作用
- .net连接Oracle数据库,用什么方式连接可以不用安装Oracle客户端?
{
textBox1.Text =dataGridView1.Rows[dataGridView1.CurrentRow.Index ].Cells["id"].Value.ToString() ;
textBox2.Text = dataGridView1.Rows[dataGridView1.CurrentRow.Index].Cells["name"].Value.ToString();
}
如果要对该视图进行更新,通过编写存储过程来操作视图对应的实际数据表。
用语句来判断,哪个字段是哪个表的,然后用语句update回去