我有一个ListView
,它有更新和取消按钮。这两个按钮都有一个CommandName
取消,因此它们会触发相同的ListView
事件处理程序(ListView_ItemCanceling)。
在此事件句柄中,我执行我的存储过程。我遇到的问题是,因为两个按钮都会触发相同的事件处理程序,它们都会更新。即使没有变化。
我想尝试确定在事件处理程序开始时触发事件的按钮(可能使用发件人?),但我无法弄清楚如何执行此操作。
这就是我目前在ListView_ItemCancelling
事件处理程序中尝试做的事情:
Button newButton = (Button)sender;
if(newButton.Text == "Cancel")
{
Console.Write("this worked");
}
当我执行此代码时,我收到一条错误消息,告诉我无法将发件人对象从ListView
对象转换为Button
对象。
任何帮助将不胜感激!
答案 0 :(得分:1)
您可以定义每个按钮的命令名称,以检测哪个是单击,例如: 将第一个定义为"取消1"和另一个"取消2" 在代码中你可以这样检查:
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
}
答案 1 :(得分:1)
我在@paqogomez的帮助下找到答案。他建议我使用ItemCommand
的{{1}}事件处理程序来获取为列表视图点击的按钮。
在ListView
事件处理程序中,我检查了它们的命令参数,然后使用了相应的代码。
ItemCommand
答案 2 :(得分:0)
sender
似乎是您的ListView
,而不是Button
。尝试使用Button_OnClick
事件代替ListView_ItemCancelling
。
或尝试对ListView_ItemCancelling
进行一些研究,例如使用ListViewCancelEventArgs e
参数,也许它可以在这种情况下帮助您。您可以阅读更多相关信息on MSDN。