CommandBuilder的问题

编程有钱人了 2008-04-03 02:24:16
protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
string Name=((TextBox)(this.GridView1.Rows[e.RowIndex].Cells[0].Controls[0])).Text.ToString();
string Address=((TextBox)(this.GridView1.Rows[e.RowIndex].Cells[1].Controls[0])).Text.ToString();
string s = "select * from ts1";
SqlDataAdapter da = new SqlDataAdapter(s, conn);
SqlCommandBuilder qc = new SqlCommandBuilder(da);
DataSet ds = new DataSet();
da.Fill(ds, "a");
DataRow r=ds.Tables["a"].NewRow();
r["name"] = Name;
r["address"] = Address;
ds.Tables["a"].Rows.Add(r);

da.Update(ds,"a");
this.GridView1.EditIndex = -1;
this.show();
}
为什么不能更新 而是添加
谁能帮我该该
...全文
56 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
编程有钱人了 2008-04-03
  • 打赏
  • 举报
回复
谢谢改为
DataRow r = ds.Tables["a"].Rows[e.RowIndex];就对了
编程有钱人了 2008-04-03
  • 打赏
  • 举报
回复
string Name=((TextBox)(this.GridView1.Rows[e.RowIndex].Cells[0].Controls[0])).Text.ToString();
string Address=((TextBox)(this.GridView1.Rows[e.RowIndex].Cells[1].Controls[0])).Text.ToString();
string s = "select * from ts1";
SqlDataAdapter da = new SqlDataAdapter(s, conn);
SqlCommandBuilder qc = new SqlCommandBuilder(da);
DataSet ds = new DataSet();
da.Fill(ds);
DataRow r = ds.Tables["a"].Rows[Convert.ToInt32(this.GridView1.DataKeys[e.RowIndex].Value)];
r["name"] = Name;
r["address"] = Address;
//da.Update(ds);
this.GridView1.EditIndex = -1;
this.show();
更新的是下一行啊 this.GridView1.DataKeys[e.RowIndex].Value不是获得当前操作行的索引吗 更新哪行几是哪行吗
Allen_Chen_ 2008-04-03
  • 打赏
  • 举报
回复
DataRow r = ds.Tables["a"].Rows[第几行]
这里是整数.你要更新第几行就填几.比如说要更新第一行1就写1.
另外你要把更新完的DataTable绑到GridView1上才能在页面上看到更新效果.
编程有钱人了 2008-04-03
  • 打赏
  • 举报
回复
string Name=((TextBox)(this.GridView1.Rows[e.RowIndex].Cells[0].Controls[0])).Text.ToString();
string Address=((TextBox)(this.GridView1.Rows[e.RowIndex].Cells[1].Controls[0])).Text.ToString();
string s = "select * from ts1";
SqlDataAdapter da = new SqlDataAdapter(s, conn);
SqlCommandBuilder qc = new SqlCommandBuilder(da);
DataSet ds = new DataSet();
da.Fill(ds);
DataRow r = ds.Tables["a"].Rows[Convert.ToInt32(this.GridView1.DataKeys[e.RowIndex].Value)];
r["name"] = Name;
r["address"] = Address;
//da.Update(ds);
this.GridView1.EditIndex = -1;
this.show();
还是不对啊
Allen_Chen_ 2008-04-03
  • 打赏
  • 举报
回复
按照你的意思应该是GridView当前编辑行的index.
编程有钱人了 2008-04-03
  • 打赏
  • 举报
回复
index==this.GridView1.DataKeys[e.RowIndex].Value.ToString()吗?
amandag 2008-04-03
  • 打赏
  • 举报
回复
这都已经是 ds.Tables["a"].NewRow();
当然是添加
Allen_Chen_ 2008-04-03
  • 打赏
  • 举报
回复
DataRow r=ds.Tables["a"].NewRow();
r["name"] = Name;
r["address"] = Address;
ds.Tables["a"].Rows.Add(r);

da.Update(ds,"a");

上面全删了,改为:
DataRow r=ds.Tables["a"].Rows[index];
r["name"] = Name;
r["address"] = Address;

至于为什么是添加,因为你写了让他加啊DataRow r=ds.Tables["a"].NewRow(); ... ds.Tables["a"].Rows.Add(r);
这代码是别人写的吧?

virusswb 2008-04-03
  • 打赏
  • 举报
回复
弄个断点看看你取到数据了吗
你的意思是不是说没有看到添加的数据呢,要重新绑定才可以看到啊
virusswb 2008-04-03
  • 打赏
  • 举报
回复
为什么不能更新 而是添加
什么意思啊?

62,073

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧