本帖最后由 zunef 于 2009-07-29 16:22:32 编辑

解决方案 »

  1.   

    create procedure do_something
    @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
      

  2.   

    而b的值是先在t2表中插入一条数据,然后取刚插入数据的t2表中的ID字段
    =========================================================
    把取的代码贴一下看看!!一般来说对SqlDataSource设置参数有两种方式:
    1.通过界面进行设置,无须编一行代码!
    2.通过代码设置,如楼主题目类似于这样:
    SqlDataSource1.UpdateParameters["字段名"].DefaultValue = "你的数据";
    其中"字段名"可以在SqlDataSource1的UpdateQuery属性中看到!!
      

  3.   

    SqlDataSource.UpdateCommand="UPDATE t1 SET a=@a,id2=@id2  WHERE id1=@id1"        
    表的结构:
    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.
      

  4.   

    对了 补充一下 :
    insert T2表后 取出来的id2字段的值
    赋值给 定义的 id2.
      

  5.   

    另外 updatecommad的值一直不会更新.
    一直是带参数的值,不会把参数替换掉的.SqlDataSource1没UpdateQuery这个属性啊.
      

  6.   

    再仔细找找,不会没有的!!再有你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"呢? 
      

  7.   

    原来是我们把id2绑定到gridview中,而是仅仅当做是gridview的datakey
    然后貌似就不可以更新了.
    我不清楚datasource是怎么对gridview做操作的.