使用 sender 判断 ListView 中按下了什么按钮
Using sender to determine what button is pressed in ListView
我有一个 ListView
有更新和取消按钮。这两个按钮都有一个 CommandName
取消,因此它们触发相同的 ListView
事件处理程序 (ListView_ItemCanceling)。
在这个事件句柄中,我执行了我的存储过程。我遇到的问题是因为两个按钮都会触发它们都更新的相同事件处理程序。即使没有进行任何更改。
我想尝试确定在事件处理程序开始时触发事件的按钮(可能使用发送器?),但我不知道该怎么做。
这是我目前在 ListView_ItemCancelling
事件处理程序中尝试做的事情:
Button newButton = (Button)sender;
if(newButton.Text == "Cancel")
{
Console.Write("this worked");
}
当我执行这段代码时,我收到一条错误消息,告诉我无法将发件人对象从 ListView
对象转换为 Button
对象。
任何帮助将不胜感激!
sender
似乎是你的 ListView
,而不是 Button
。尝试使用 Button_OnClick
事件而不是 ListView_ItemCancelling
.
或者尝试对 ListView_ItemCancelling
做一些研究,比如使用 ListViewCancelEventArgs e
参数,也许在这种情况下它可以帮助你。您可以阅读更多相关信息 on MSDN.
您可以为每个按钮定义命令名称以检测点击了哪个按钮,例如:
将第一个定义为 "Cancel1",将另一个定义为 "Cancel2"
在代码中你可以这样检查:
if(CommandName == "Cancel1")
{
// do some thing
}
else if(CommandName == "Cancel2")
{
// do other staff
}
或者如果两者都在做同样的工作但你需要确定发件人
if(CommandName == "Cancel1" || CommandName == "Cancel2")
{
// do some thing common
}
if(CommandName == "Cancel1")
{
// do some thing if button 1 clicked
}
if(CommandName == "Cancel2")
{
// do some thing if button 2 clicked
}
我在@paqogomez 的帮助下找到了答案。他建议我使用 ListView
的 ItemCommand
事件处理程序来获取为列表视图单击的按钮。
在 ItemCommand
事件处理程序中,我检查了它们的命令参数,然后使用了适当的代码。
protected void LV_Tickets_ItemCommand(object sender, ListViewCommandEventArgs e)
{
if(e.CommandName == "Update")
{
//code here
}
}
我有一个 ListView
有更新和取消按钮。这两个按钮都有一个 CommandName
取消,因此它们触发相同的 ListView
事件处理程序 (ListView_ItemCanceling)。
在这个事件句柄中,我执行了我的存储过程。我遇到的问题是因为两个按钮都会触发它们都更新的相同事件处理程序。即使没有进行任何更改。
我想尝试确定在事件处理程序开始时触发事件的按钮(可能使用发送器?),但我不知道该怎么做。
这是我目前在 ListView_ItemCancelling
事件处理程序中尝试做的事情:
Button newButton = (Button)sender;
if(newButton.Text == "Cancel")
{
Console.Write("this worked");
}
当我执行这段代码时,我收到一条错误消息,告诉我无法将发件人对象从 ListView
对象转换为 Button
对象。
任何帮助将不胜感激!
sender
似乎是你的 ListView
,而不是 Button
。尝试使用 Button_OnClick
事件而不是 ListView_ItemCancelling
.
或者尝试对 ListView_ItemCancelling
做一些研究,比如使用 ListViewCancelEventArgs e
参数,也许在这种情况下它可以帮助你。您可以阅读更多相关信息 on MSDN.
您可以为每个按钮定义命令名称以检测点击了哪个按钮,例如: 将第一个定义为 "Cancel1",将另一个定义为 "Cancel2" 在代码中你可以这样检查:
if(CommandName == "Cancel1")
{
// do some thing
}
else if(CommandName == "Cancel2")
{
// do other staff
}
或者如果两者都在做同样的工作但你需要确定发件人
if(CommandName == "Cancel1" || CommandName == "Cancel2")
{
// do some thing common
}
if(CommandName == "Cancel1")
{
// do some thing if button 1 clicked
}
if(CommandName == "Cancel2")
{
// do some thing if button 2 clicked
}
我在@paqogomez 的帮助下找到了答案。他建议我使用 ListView
的 ItemCommand
事件处理程序来获取为列表视图单击的按钮。
在 ItemCommand
事件处理程序中,我检查了它们的命令参数,然后使用了适当的代码。
protected void LV_Tickets_ItemCommand(object sender, ListViewCommandEventArgs e)
{
if(e.CommandName == "Update")
{
//code here
}
}