1

次のような多くの LinkBut​​ton があります。

<asp:LinkButton runat="server" onclick="cmdCancellaComunicazione_Click">X</asp:LinkButton> 

これらは同じサーバー メソッドを呼び出しますcmdCancellaComunicazione_Click。しかし、それらを区別する必要があります (値などをサーバーに渡す)。

どうすればいいですか?CommandArgument があることは知っていますが、<%= myValue %> のような値を設定できません。

4

4 に答える 4

2

イベント ハンドラの送信者引数を使用できます。にキャストしLinkButtonます:

protected void cmdCancellaComunicazione_Click(Object sender, EventArgs e) 
{
   LinkButton lbtn = (LinkButton) sender;
}

CommandName次に、それを、IDまたはText区別するために使用できます。

于 2013-01-30T16:55:00.550 に答える
1

あなたのコードには、奇妙に思えるID指定がありません。LinkButton

CommandArgumentサーバー側を次のように割り当てることができるはずです。

yourLinkButton.CommandArgument = yourValue;

そして、OnClickハンドラーでサーバー側で読み取られます。

 protected void cmdCancellaComunicazione_Click(object sender, EventArgs e)
 {
     LinkButton btn = (LinkButton)sender;
     if (btn.CommandArgument.Equals(something here))
     {
          // do something
     }
     else
     {
          // do something else
     }
 }

これはグリッドまたはバインドされている何かで作成されていますか? もしそうなら、私は次OnDataBindingのようなイベントを実装しますLinkButton:

<asp:LinkButton ID="yourLinkButton"
    runat="server" OnDataBinding="yourLinkButton_DataBinding"
    onclick="cmdCancellaComunicazione_Click">X</asp:LinkButton>

サーバー側のコード (可能な限りインライン コードを避けるようにしています):

protected void protected void lblID_DataBinding(object sender, System.EventArgs e)
{
    LinkButton btn = (LinkButton)sender;
    btn.CommandArgument = yourValue;
}

あなたのシナリオには、質問に含まれていないものがありますか?

于 2013-01-30T17:17:35.627 に答える
0

OnCommandここで良いオプションになります。

protected void ButtonCommand(object sender, CommandEventArgs e)
{
    string theCommand = e.CommandArgument.ToString();
}

OnCommandCommandArgumentをに追加するだけLinkButtonです。

<asp:LinkButton id="LinkButton1" Text="The Text" OnCommand="ButtonCommand" CommandArgument="YourInfo" runat="server"></asp:LinkButton>
于 2013-01-30T16:58:06.497 に答える
0

senderメソッドでは、を aにキャストして、LinkButtonそこで値を調べることができます。

于 2013-01-30T16:56:06.960 に答える