从存储过程向后面的代码发送参数

时间:2012-07-10 06:09:07

标签: asp.net sql-server stored-procedures

我正在使用FormView并使用存储过程将其绑定到SqlDataSource来编辑记录。问题是,在更新记录后,我需要调用另一个函数,我正在使用按钮的onClick属性。

此函数必须使用FormView中编辑的记录的ID将一些记录插入另一个表中。我知道如何在同一个存储过程中使用SCOPE_IDENTITY,但这次我需要一些在代码隐藏中更容易实现的逻辑,但我不知道如何获取ID,所以任何线索会很棒的。

这是按钮:

 <asp:Button ID="EditButton" runat="server" CausesValidation="True" CommandName="Update"
                            Text="Edit" OnClick="setProcessProgress" />

以下是代码背后的精简版本:

protected void setProcessProgress(object sender, EventArgs e)
{
   int ID_p;
   ID_p = ; //TODO: Here I need to obtain the ID of the last edited record from the EditButton
   setProgress(ID_p);
}

存储过程是一个简单的UPDATE语句。

我正在考虑将参数传递给后面的代码,但不确定如何,可能是这样的OnClick="setProcessProgress(@id)"

2 个答案:

答案 0 :(得分:1)

尝试这样,您需要将OnCommand="CommandEventHandler"事件处理程序附加到您的按钮。查看更多信息Button.Command

<asp:Button ID="EditButton" runat="server" CausesValidation="True" CommandName="Update"
                            Text="Edit"  
           CommandArgument="1"
           OnCommand="CommandBtn_Click" />

以及获取ID的代码

protected void CommandBtn_Click(Object sender, CommandEventArgs e) 

{ if (e.CommandName == "Update")
   {
      yourID =Convert.ToInt32(e.CommandArgument); 
   }
} 

答案 1 :(得分:0)

您可以使用out参数进行更新存储过程。这将在

之后为您提供ID

更新

然后您可以使用插入ID。

http://blogs.msdn.com/b/spike/archive/2009/05/07/a-simple-example-on-how-to-get-return-and-out-parameter-values-using-ado-net.aspx