从按钮调用代码隐藏 - 匹配没有重载

时间:2012-07-11 01:49:41

标签: asp.net c#-4.0

我有一个用于编辑记录的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。有什么想法吗?

3 个答案:

答案 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");
           ...
       }
   }