如何检索与LinkBut​​ton在同一行中的ListView项的值

时间:2016-04-23 16:48:02

标签: c# asp.net sql-server

我有一个动态生成的ListView,它显示从数据库中检索的一组组。 ListView模板如下所示:

<asp:ListView ID="lvGroups" runat="server">
        <ItemTemplate>
            <tr>
                <td>
                    <asp:Label ID="lblGroupName" runat="server" Text='<%# Eval("GroupName") %>' />
                </td>
                <td>
                    <asp:LinkButton ID="lnkRemove" runat="server" Text="Remove" OnClick="lnkGroupRemove" OnClientClick="Confirm()" />
                </td>
            </tr>

        </ItemTemplate>
    </asp:ListView>

如您所见,有一个值,从数据库中提取,然后是一个用于删除该值的链接按钮。单击链接按钮时,它会显示一条javascript确认消息,如果您在该消息上单击“是”,则该特定条目将从数据库中删除。

不幸的是,我不能简单地删除ID =行号的GroupName,因为你可以添加和删除组,这样很快就会变得不一致。

我真正需要的是一种从与被点击的链接按钮相同的行检索GroupName的方法,如果我能弄清楚如何做到这一点,那么我可以轻松配置数据库查询以成功删除该条目。但是,如果你有另一个解决方案,那也很棒。

I&#39; M悲伤地说,我对lnkGroupRemove事件没有示例代码,我根本不知道从哪里开始对这个问题

非常感谢有关此主题的任何帮助!

1 个答案:

答案 0 :(得分:2)

您可以使用DataKeyNames属性:

<asp:ListView ID="lvGroups" runat="server" DataKeyNames="ID,GroupName" >

并在代码隐藏中以这种方式获取值:

protected void lnkGroupRemove(object sender, EventArgs e)
{
    ListViewItem item = (sender as LinkButton).NamingContainer as ListViewItem;
    int ID = (int)lvGroups.DataKeys[item.DataItemIndex].Values["ID"];
    string groupName = (string)lvGroups.DataKeys[item.DataItemIndex].Values["GroupName"];
}

我添加了一个ID值,表明可以将其他字段添加到DataKeyNames并从代码隐藏中检索,包括数据源中但未显示在ListView中的字段。