1

我有很多 LinkBut​​ton 例如:

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

他们调用相同的服务器方法,cmdCancellaComunicazione_Click. 但我需要区分它们(例如,传递给服务器一个值)。

我该怎么做?我知道有 CommandArgument,但我无法为其设置一个值,例如 <%= myValue %>

4

4 回答 4

2

您可以使用事件处理程序的 sender 参数。将其转换为LinkButton

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

然后你可以用它的CommandName,IDText来区分。

于 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

在您的方法中,您可以将sendera 转换为 aLinkButton并检查那里的值。

于 2013-01-30T16:56:06.960 回答
0

OnCommand在这里将是一个不错的选择。

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

只需将OnCommandand添加CommandArgumentLinkButton.

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