C#datagridview问题在dgv中编辑数据点修改按钮后更新数据到数据库中。求大神赐教。
展开全部
首先你gridview绑定的数据源最好是DataTable类型,当你编辑好数据进行修改后,可以将datagridview的数据源转换成DataTable类型,然后利用 DataRowState循环获取每行的状态是更改还是更新操作,如果为更新操作你可以遍历每列生成update的语句,然后统一抛给执行更新sql的方法去操作。源码给你吧
DataTable dt1 = (dataGridView1.DataSource as DataTable).GetChanges();
if (dt1 != null)
{
for (int i = 0, h = dt1.Rows.Count; i < h; i++)
{
DataRowState rowState = new DataRowState();
rowState = dt1.Rows[i].RowState;
string state = rowState.ToString();
string id = Guid.NewGuid().ToString();
if (state.Equals("added", StringComparison.CurrentCultureIgnoreCase))
{
string str = string.Format("insert into haadbbcp values('{0}','{1}','{2}','{3}');",id ,treeView1.SelectedNode.Tag, dt1.Rows[i][1].ToString(), dt1.Rows[i][5].ToString());
dataGridView1.Rows[0].Cells["编号"].Value = id;
ss += str;
}
if (state.Equals("modified", StringComparison.CurrentCultureIgnoreCase))
{
string str = string.Format("update hbbcp set hbbcp_WLBH='{0}',hbbcp_bz='{1}' where HBBCP_ID='{2}';", dt1.Rows[i][1].ToString(), dt1.Rows[i][5].ToString(), dt1.Rows[i]["编号"].ToString());
ss += str;
}
DataTable dt1 = (dataGridView1.DataSource as DataTable).GetChanges();
if (dt1 != null)
{
for (int i = 0, h = dt1.Rows.Count; i < h; i++)
{
DataRowState rowState = new DataRowState();
rowState = dt1.Rows[i].RowState;
string state = rowState.ToString();
string id = Guid.NewGuid().ToString();
if (state.Equals("added", StringComparison.CurrentCultureIgnoreCase))
{
string str = string.Format("insert into haadbbcp values('{0}','{1}','{2}','{3}');",id ,treeView1.SelectedNode.Tag, dt1.Rows[i][1].ToString(), dt1.Rows[i][5].ToString());
dataGridView1.Rows[0].Cells["编号"].Value = id;
ss += str;
}
if (state.Equals("modified", StringComparison.CurrentCultureIgnoreCase))
{
string str = string.Format("update hbbcp set hbbcp_WLBH='{0}',hbbcp_bz='{1}' where HBBCP_ID='{2}';", dt1.Rows[i][1].ToString(), dt1.Rows[i][5].ToString(), dt1.Rows[i]["编号"].ToString());
ss += str;
}
追答
前面的你基本可以照抄啊。。你只需改个SQL语句就行了啊。。。
string str = string.Format("insert into haadbbcp values('{0}','{1}','{2}','{3}');",id ,treeView1.SelectedNode.Tag, dt1.Rows[i][1].ToString(), dt1.Rows[i][5].ToString());例如这个,,前面的后面的一些了都是对应的前面的1234,因为要赋值给他们。。。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询