我有很多 LinkButton 例如:
<asp:LinkButton runat="server" onclick="cmdCancellaComunicazione_Click">X</asp:LinkButton>
他们调用相同的服务器方法,cmdCancellaComunicazione_Click
. 但我需要区分它们(例如,传递给服务器一个值)。
我该怎么做?我知道有 CommandArgument,但我无法为其设置一个值,例如 <%= myValue %>
我有很多 LinkButton 例如:
<asp:LinkButton runat="server" onclick="cmdCancellaComunicazione_Click">X</asp:LinkButton>
他们调用相同的服务器方法,cmdCancellaComunicazione_Click
. 但我需要区分它们(例如,传递给服务器一个值)。
我该怎么做?我知道有 CommandArgument,但我无法为其设置一个值,例如 <%= myValue %>
您可以使用事件处理程序的 sender 参数。将其转换为LinkButton
:
protected void cmdCancellaComunicazione_Click(Object sender, EventArgs e)
{
LinkButton lbtn = (LinkButton) sender;
}
然后你可以用它的CommandName
,ID
或Text
来区分。
您的代码没有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;
}
您的问题中是否还有其他内容未包含在您的问题中?
在您的方法中,您可以将sender
a 转换为 aLinkButton
并检查那里的值。
OnCommand
在这里将是一个不错的选择。
protected void ButtonCommand(object sender, CommandEventArgs e)
{
string theCommand = e.CommandArgument.ToString();
}
只需将OnCommand
and添加CommandArgument
到LinkButton
.
<asp:LinkButton id="LinkButton1" Text="The Text" OnCommand="ButtonCommand" CommandArgument="YourInfo" runat="server"></asp:LinkButton>