我有一个用于编辑记录的FormView,但是当用户按下Button时,它还需要在代码隐藏中执行一些后端操作。为此,我需要传递记录的ID。
目前这是我在页面中的代码:
<asp:LinkButton ID="savebtn" runat="server" CausesValidation="True"
CommandName="Update" Text="Save Changes"
OnClick="setProcessProgress" CommandArgument='<%# Eval("id") %>' />
这是我的代码隐藏的简化版本:
protected void setProcessProgress(object sender, FormViewCommandEventArgs e)
{
if (e.CommandName == "Update")
ID_p = Int32.Parse((string)e.CommandArgument);
}
我收到了No overload for 'setProcessProgress' matches delegate 'System.EventHandler'
我尝试将EventArgs更改为CommandEventArgs,但它也无法正常工作。
如果我使用OnCommand
代替OnClick
,则不会调用setProcessProgress
。有什么想法吗?
答案 0 :(得分:1)
根据FormViewCommandEventArgs
上的MSDN文档。
在FormView中的按钮时引发ItemCommand事件 单击控件。这允许您提供事件处理 每当发生此事件时执行自定义例程的方法。
FormView控件中的按钮也可以调用一些内置控件 控件的功能。要执行其中一个操作,请设置 一个按钮的CommandName属性,其中一个值 下表。
该事件未分配给Button的OnClick事件,实际上已分配给FormViews
ItemCommand
事件
即
<asp:FormView ID="FormView1" runat="server"
onitemcommand="setProcessProgress">
<asp:LinkButton ID="savebtn" runat="server" CausesValidation="True"
CommandName="Update" Text="Save Changes"
CommandArgument='<%# Eval("id") %>'
答案 1 :(得分:0)
也许您可以在方法中尝试EventArgs e
。
答案 2 :(得分:0)
protected void setProcessProgress(object sender, EventArgs e)
{
LinkButton btn = sender as LinkButton;
if (btn.CommandName=="Update")
{
...
Response.Write("Updated");
...
}
}