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

C# 使用发件人确定在ListView中按下的按钮,c#,asp.net,listview,sender,C#,Asp.net,Listview,Sender,我有一个列表视图,它有更新和取消按钮。这两个按钮都具有取消的CommandName,因此它们触发相同的ListView事件处理程序(ListView\u ItemCanceling) 在这个事件句柄中,我执行我的存储过程。我遇到的问题是,两个按钮都会触发相同的事件处理程序,它们都会更新。即使没有任何改变 我想尝试在事件处理程序的开头确定触发事件的按钮(可能使用sender?),但我不知道如何执行此操作 这就是我当前在ListView\u itemconcelling事件处理程序中尝试执行的操作:

我有一个
列表视图
,它有更新和取消按钮。这两个按钮都具有取消的
CommandName
,因此它们触发相同的
ListView
事件处理程序(ListView\u ItemCanceling)

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

我想尝试在事件处理程序的开头确定触发事件的按钮(可能使用sender?),但我不知道如何执行此操作

这就是我当前在
ListView\u itemconcelling
事件处理程序中尝试执行的操作:

Button newButton = (Button)sender;
if(newButton.Text == "Cancel")
{
     Console.Write("this worked");
}
执行此代码时,我收到一条错误消息,告诉我无法将发送者对象从
列表视图
对象转换为
按钮
对象


任何帮助都将不胜感激

发件人似乎是您的
列表视图
,而不是
按钮
。尝试使用
按钮\u OnClick
事件,而不是
ListView\u itemscanceling


或者尝试对
ListView\u ItemCancelling
进行一些研究,例如使用
ListViewCancelEventArgs e
参数,也许它可以在这种情况下帮助您。您可以阅读更多信息。

您可以为每个按钮定义命令名称,以检测正在单击的按钮,例如: 将第一个定义为“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的帮助下找到答案的。他建议我使用
列表视图的
项目命令
事件处理程序
来获取正在单击的列表视图按钮

ItemCommand
事件处理程序中,我检查了它们的命令参数,然后使用了相应的代码

protected void LV_Tickets_ItemCommand(object sender, ListViewCommandEventArgs e)
{
    if(e.CommandName == "Update")
    {
        //code here
    }
}

我不确定这是否是一个解决方案,但可能会帮助你。将
作为
关键字进行一点说明,而不是像你一样尝试使用它。也许这会有帮助。嘿,谢谢你的阅读。我实际上只是在读那篇文章,并尝试使用AS关键字。当我这样做时,
newButton
显示为null,然后if语句失败。
sender
在这种情况下不是按钮,而是您的完整列表视图。你需要使用事件来知道按下了哪个按钮。啊,该死。这是我过去一直遇到的难题,我从未找到我想要的解决方案,而是想出了一些解决办法。我希望这会有助于埃迪尝试一下@paqogomez所说的。感谢您的帮助sab669Yes,我理解这一点,但是我在evnt处理程序中找不到按钮。yes,为每个按钮分配不同的命令名,并在RowCommand事件处理程序中检查commandname抛出“e”argsAlright,我将尝试一下。我做完后会告诉你的。非常感谢。等待您的反馈:)我实际上尝试了@papogomez的建议。它成功了。谢谢你的帮助!我完全知道发件人返回ListView以及itemcancelling事件正在执行的操作。我只是想知道如何从这个事件处理程序中获取按钮。@ChaseErnst我不确定,但这样做的方法似乎是将指针存储到其他地方的按钮上,然后使用它们。但是我不知道整个代码上下文,所以这个解决方案可能不适合您。