关于gridview的updatecommad,无法正确赋值UpdateParameters的值 本帖最后由 zunef 于 2009-07-29 16:22:32 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 create procedure do_something@a int@id int@b int outputasdeclare @newB intinsert into t2(字段...)values(字段值...)select @newB=max(ID) from t2UPDATE t1 SET a=@a,b=@newB WHERE id=@idselect @b=@newB 而b的值是先在t2表中插入一条数据,然后取刚插入数据的t2表中的ID字段=========================================================把取的代码贴一下看看!!一般来说对SqlDataSource设置参数有两种方式:1.通过界面进行设置,无须编一行代码!2.通过代码设置,如楼主题目类似于这样:SqlDataSource1.UpdateParameters["字段名"].DefaultValue = "你的数据";其中"字段名"可以在SqlDataSource1的UpdateQuery属性中看到!! SqlDataSource.UpdateCommand="UPDATE t1 SET a=@a,id2=@id2 WHERE id1=@id1" 表的结构:T1:id1 a id2 T2:id2protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e){ string id1 = GridView1.DataKeys[e.RowIndex].Values["id1"].ToString().Trim();//T1的key string id2 = GridView1.DataKeys[e.RowIndex].Values["id2"].ToString().Trim();//T2的key 在T2 中 insert 一条数据,然后取刚插入数据的id2 SqlDataSource1.UpdateParameters["id1"].DefaultValue = id1; SqlDataSource1.UpdateParameters["a"].DefaultValue = ((TextBox)(GridView1.Rows[e.RowIndex].Cells[1].Controls[0])).Text.ToString().Trim(); SqlDataSource1.UpdateParameters["id2"].DefaultValue = id2; GridView1.DataBind();}debug到这里的值都是正确的,但是绑定后,数据库里的id2的值是0. 对了 补充一下 :insert T2表后 取出来的id2字段的值赋值给 定义的 id2. 另外 updatecommad的值一直不会更新.一直是带参数的值,不会把参数替换掉的.SqlDataSource1没UpdateQuery这个属性啊. 再仔细找找,不会没有的!!再有你6楼贴出的代码没怎么看懂! string id1 = GridView1.DataKeys[e.RowIndex].Values["id1"].ToString().Trim();//T1的key string id2 = GridView1.DataKeys[e.RowIndex].Values["id2"].ToString().Trim();//T2的key 在T2 中 insert 一条数据,然后取刚插入数据的id2 ==================你在更新当前的GridView中的记录!string id2 = GridView1.DataKeys[e.RowIndex].Values["id2"].ToString().Trim();是取的是GridView1的当前行的DataKey,怎么是不是"在T2 中 insert 一条数据,然后取刚插入数据的id2"呢? 原来是我们把id2绑定到gridview中,而是仅仅当做是gridview的datakey然后貌似就不可以更新了.我不清楚datasource是怎么对gridview做操作的. 打开新页面后,参数该如何获取? 知道缓冲区指针,和大小 怎么读取其数据? 获取值得问题 能不能求个解析一段网页的正则表达式 如何理解进程、线程和应用程序域之间的关系? 急求:给我一点下面的提示 dataGrid的一个问题,winForm的 求教无驱动操作DBF数据库 练习编写文本编辑器 保存时出错。 在WINFORM 中是不是没有验证控件? 这段代码是什么意思,有人能改成Java版的吗? 一个窗体显示另一个窗体内容的问题~~
@a int
@id int
@b int output
as
declare @newB int
insert into t2(字段...)values(字段值...)
select @newB=max(ID) from t2
UPDATE t1 SET a=@a,b=@newB WHERE id=@id
select @b=@newB
=========================================================
把取的代码贴一下看看!!一般来说对SqlDataSource设置参数有两种方式:
1.通过界面进行设置,无须编一行代码!
2.通过代码设置,如楼主题目类似于这样:
SqlDataSource1.UpdateParameters["字段名"].DefaultValue = "你的数据";
其中"字段名"可以在SqlDataSource1的UpdateQuery属性中看到!!
表的结构:
T1:id1 a id2
T2:id2
protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
string id1 = GridView1.DataKeys[e.RowIndex].Values["id1"].ToString().Trim();//T1的key
string id2 = GridView1.DataKeys[e.RowIndex].Values["id2"].ToString().Trim();//T2的key
在T2 中 insert 一条数据,然后取刚插入数据的id2
SqlDataSource1.UpdateParameters["id1"].DefaultValue = id1;
SqlDataSource1.UpdateParameters["a"].DefaultValue = ((TextBox)(GridView1.Rows[e.RowIndex].Cells[1].Controls[0])).Text.ToString().Trim();
SqlDataSource1.UpdateParameters["id2"].DefaultValue = id2;
GridView1.DataBind();
}
debug到这里的值都是正确的,但是绑定后,数据库里的id2的值是0.
insert T2表后 取出来的id2字段的值
赋值给 定义的 id2.
一直是带参数的值,不会把参数替换掉的.SqlDataSource1没UpdateQuery这个属性啊.
string id1 = GridView1.DataKeys[e.RowIndex].Values["id1"].ToString().Trim();//T1的key
string id2 = GridView1.DataKeys[e.RowIndex].Values["id2"].ToString().Trim();//T2的key
在T2 中 insert 一条数据,然后取刚插入数据的id2
==================
你在更新当前的GridView中的记录!
string id2 = GridView1.DataKeys[e.RowIndex].Values["id2"].ToString().Trim();
是取的是GridView1的当前行的DataKey,怎么是不是"在T2 中 insert 一条数据,然后取刚插入数据的id2"呢?
然后貌似就不可以更新了.
我不清楚datasource是怎么对gridview做操作的.