我有一个动态生成的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
事件没有示例代码,我根本不知道从哪里开始对这个问题
非常感谢有关此主题的任何帮助!
答案 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中的字段。