我有很多LinkButton,例如:
<asp:LinkButton runat="server" onclick="cmdCancellaComunicazione_Click">X</asp:LinkButton>
他们调用相同的服务器方法cmdCancellaComunicazione_Click
。但我需要区分它们(传递给服务器,例如,一个值)。
我该怎么办?我知道有CommandArgument,但我不能设置一个值,例如&lt;%= myValue%&gt;
答案 0 :(得分:2)
您可以使用event-handler的sender参数。将其投放到LinkButton
:
protected void cmdCancellaComunicazione_Click(Object sender, EventArgs e)
{
LinkButton lbtn = (LinkButton) sender;
}
然后您可以使用它CommandName
,ID
或Text
进行区分。
答案 1 :(得分: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;
}
您的方案中还有其他内容未包含在您的问题中吗?
答案 2 :(得分:0)
在您的方法中,您可以将sender
转换为LinkButton
并检查其中的值。
答案 3 :(得分:0)
OnCommand
在这里是个不错的选择。
protected void ButtonCommand(object sender, CommandEventArgs e)
{
string theCommand = e.CommandArgument.ToString();
}
只需将OnCommand
和CommandArgument
添加到LinkButton
。
<asp:LinkButton id="LinkButton1" Text="The Text" OnCommand="ButtonCommand" CommandArgument="YourInfo" runat="server"></asp:LinkButton>