使用发件人确定ListView中按下的按钮

时间:2015-04-09 15:18:54

标签: c# asp.net listview sender

我有一个ListView,它有更新和取消按钮。这两个按钮都有一个CommandName取消,因此它们会触发相同的ListView事件处理程序(ListView_ItemCanceling)。

在此事件句柄中,我执行我的存储过程。我遇到的问题是,因为两个按钮都会触发相同的事件处理程序,它们都会更新。即使没有变化。

我想尝试确定在事件处理程序开始时触发事件的按钮(可能使用发件人?),但我无法弄清楚如何执行此操作。

这就是我目前在ListView_ItemCancelling事件处理程序中尝试做的事情:

Button newButton = (Button)sender;
if(newButton.Text == "Cancel")
{
     Console.Write("this worked");
}

当我执行此代码时,我收到一条错误消息,告诉我无法将发件人对象从ListView对象转换为Button对象。

任何帮助将不胜感激!

3 个答案:

答案 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