0

我有一个用于编辑记录的 FormView,但是当用户按下按钮时,它还需要在代码隐藏中做一些后端工作。为此,我需要传递记录的 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. 有任何想法吗?

4

3 回答 3

1

根据FormViewCommandEventArgs.

当单击 FormView 控件中的按钮时,将引发 ItemCommand 事件。这允许您提供一种事件处理方法,该方法在此事件发生时执行自定义例程。

FormView 控件中的按钮也可以调用控件的一些内置功能。若要执行这些操作之一,请将按钮的 CommandName 属性设置为下表中的值之一。

该事件没有分配给Button的OnClick事件,它实际上是分配给了FormViews ItemCommandEvent

IE

 <asp:FormView ID="FormView1" runat="server" 
        onitemcommand="setProcessProgress">


<asp:LinkButton ID="savebtn" runat="server" CausesValidation="True"    
                CommandName="Update" Text="Save Changes"  
                CommandArgument='<%# Eval("id") %>'  
于 2012-07-11T02:52:05.333 回答
0

也许你可以试试EventArgs e你的方法。

于 2012-07-11T03:19:13.140 回答
0
   protected void setProcessProgress(object sender, EventArgs e)
   {
       LinkButton btn = sender as LinkButton;
       if (btn.CommandName=="Update")
       {
           ...
           Response.Write("Updated");
           ...
       }
   }
于 2012-07-11T03:22:27.997 回答