2012-07-10 33 views
1

我正在使用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)"

+1

事实上,这已经无关'SCOPE_IDENTITY()',从如何我明白你的问题。我的意思是,你说你的存储过程是一个简单的'UPDATE'语句,但'SCOPE_IDENTITY()'用于获取最近***插入的***(not * updated *)行的ID。你的程序如何知道哪一行更新?你不是通过ID作为参数吗?如果没有,请显示您的存储过程的定义。 – 2012-07-10 10:49:22

回答

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); 
    } 
} 
+0

我得到一个“没有超载'CommandBtn_Click匹配委托System.EventHandler。不知道为什么。 – leonsas 2012-07-10 14:21:41

+0

Nevermind。我使用OnClick而不是OnCommand。 – leonsas 2012-07-10 14:48:07

相关问题