c# - 单击行中的按钮时获取 ListView 项目

标签 c# listview

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

aspx

<asp:ListView runat="server" ID="usersListView">
    <LayoutTemplate>
        <table class="table table-striped">
            <thead>
                <tr>
                    <th>User Name</th>
                    <th>Email</th>
                    <th>Role</th>
                    <th>Actions</th>
                </tr>
            </thead>
            <tbody>
                <asp:PlaceHolder runat="server" ID="groupPlaceHolder"/>
            </tbody>
        </table>
    </LayoutTemplate>
    <GroupTemplate>
        <tr>
            <asp:PlaceHolder runat="server" ID="itemPlaceHolder"/>
        </tr>
    </GroupTemplate>
    <ItemTemplate>
        <td><%# Eval("user.UserName") %></td>
        <td><%# Eval("user.Email") %></td>
        <td><%# Eval("roles") %></td>
        <td>
            <button runat="server" id="modify" class="btn btn-mini" title="Modify" onclick="modify_OnClick">
                <i class="icon-edit"></i>
            </button>&nbsp;
            <button runat="server" id="delete" class="btn btn-mini" title="Delete" onclick="delete_OnClick">
                <i class="icon-trash"></i>
            </button>
        </td>
    </ItemTemplate>
</asp:ListView>

aspx.cs

public void delete_Onclick(object sender, EventArgs e) {

}

public void modify_Onclick(object sender, EventArgs e) {

}

最佳答案

我会尝试回答标题中的问题,因为我不明白问题本身。

您可以将 sender 强制转换为 Button。 Button 的 NamingContainerListViewItem .您可以通过 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");
}

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

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

现在您可以使用如上所示的 FindControl 在代码隐藏中获取对标签的引用。

关于c# - 单击行中的按钮时获取 ListView 项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11460665/

相关文章:

c# - 等待 WebBrowser ajax 内容

c# - 如何使用 LINQ 对从文件加载的数据进行排序

android - 同样的老故事 : OnItemClickListener just not working

android - 使用 ORMLite 填充 ListView

c# - 在 .NET 中注册热键 - 三/四键组合

c# - Xamarin.Forms:用于在 UITableViewCell 上显示披露指示器的自定义渲染器

c# - EWS - 给予预约,获取预约的所有者副本

android - 可点击的 ListView 不起作用

android - 我的 ListView(我的 ViewFilipper)填充了父级,底部的按钮被隐藏了

android - 如果ScrollView只支持一个direct child,如何显示整个layout scrollable?