Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/252.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 单击行中的按钮时获取ListView项_C#_Listview - Fatal编程技术网

C# 单击行中的按钮时获取ListView项

C# 单击行中的按钮时获取ListView项,c#,listview,C#,Listview,我有一个创建表的ListView。表中的每一行都有两个按钮-删除和修改。我正在为每个按钮触发一个click事件,但我不确定如何获取单击该按钮的行中的数据句柄 aspx 我将尝试回答标题中的问题,因为我不理解问题本身 您可以将发送者强制转换为按钮。按钮的NamingContainer是最简单的容器。通过使用item.FindControl(“OtherControlID”),您可以使用它来获取该项中的所有其他控件 比如, public void delete_Onclick(object send

我有一个创建表的
ListView
。表中的每一行都有两个按钮-删除和修改。我正在为每个按钮触发一个click事件,但我不确定如何获取单击该按钮的行中的数据句柄

aspx


我将尝试回答标题中的问题,因为我不理解问题本身

您可以将
发送者
强制转换为按钮。按钮的
NamingContainer
是最简单的容器。通过使用
item.FindControl(“OtherControlID”)
,您可以使用它来获取该项中的所有其他控件

比如,

public void delete_Onclick(object sender, EventArgs e) {
    var btn = (Button)sender;
    var item = (ListViewItem)btn.NamingContainer;
    // find other controls:
    var btnModify = (Button)item.FindControl("modify");
}

找不到不在服务器控件中的文本。但是您可以使用
LiteralControl
标签来显示用户名或电子邮件

<td><asp:Label id="Label1" runat="server"
          Text='<%# Eval("user.UserName") %>' />
</td> 


现在,您可以使用如上所示的
FindControl
获取对codebehind中标签的引用。

您应该使用GridView,因为数据是表格格式的。无论如何,您都可以实现ItemCommand事件。这个

您可以自定义
按钮
控件的
命令名
命令参数
属性。CommandArgument可以包含一些ID或相关信息。

我知道两种解决方案:


1-命令名和命令参数如下


2-您可以使用链接而不是按钮,并发送包含以下内容的查询字符串 您的记录的id与您所在的页面相同,并将querystring放入 代码隐藏(页面加载)并将其用于删除sqlcommadns或将其重定向到另一个页面以进行
编辑目的并最终响应.Redirect()再次返回到您所在的页面。

一旦我有了
,我是否应该能够获取所选行的“用户名”列?您无法找到不在服务器控件中的文本。但是您可以使用LiteralControl或Label来代替。编辑了我的答案。我能不能在
td
中添加一个runat=“server”并以这种方式访问它?@bflemi3:哦,是的,它应该与
runat=“server”
和ID一起工作,我想你可以将它转换到
HtmlTableCell
并使用
InnerText
public void delete_Onclick(object sender, EventArgs e) {
    var btn = (Button)sender;
    var item = (ListViewItem)btn.NamingContainer;
    // find other controls:
    var btnModify = (Button)item.FindControl("modify");
}
<td><asp:Label id="Label1" runat="server"
          Text='<%# Eval("user.UserName") %>' />
</td>