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

のMSDNドキュメントによるとFormViewCommandEventArgs

ItemCommandイベントは、FormViewコントロール内のボタンがクリックされたときに発生します。これにより、このイベントが発生するたびにカスタムルーチンを実行するイベント処理メソッドを提供できます。

FormViewコントロール内のボタンは、コントロールの組み込み機能の一部を呼び出すこともできます。これらの操作のいずれかを実行するには、ボタンのCommandNameプロパティを次の表のいずれかの値に設定します。

イベントはボタンの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") %>'  
于 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 に答える