【问题标题】:How to retrieve the value of a ListView item in the same row as a LinkButton如何检索与 LinkBut​​ton 在同一行中的 ListView 项的值
【发布时间】:2016-04-23 16:48:02
【问题描述】:

我有一个动态生成的 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 的方法,如果我能弄清楚如何做到这一点,那么我可以轻松配置数据库查询以成功删除该条目。但是,如果您有其他解决方案,那也很好。

很遗憾,我没有 lnkGroupRemove 事件的示例代码,因为我根本不知道从哪里开始解决这个问题。

非常感谢您对此主题的任何帮助!

【问题讨论】:

  • 在您的点击事件中。您可以使用 sender.parent 引用 tr 然后您可以执行 findcontrol 来获取 lblgroupname。

标签: c# asp.net sql-server


【解决方案1】:

你可以使用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 中的字段。

【讨论】:

  • 老实说,在过去的几天里,我从这个项目中学到了很多东西,我不得不说其中绝大多数都与你回答的问题有关。我以前不知道 DataKeyNames,但现在我肯定会回去看看我能用这个功能做什么。效果很好,谢谢!
  • 很高兴能帮上忙!我不知道我们之前有过交流,因为您的用户名很难与其他几个类似的用户名区分开来。我会尽量记住以“169”结尾的用户。 :-)
猜你喜欢
  • 1970-01-01
  • 2017-09-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-31
  • 1970-01-01
  • 2011-08-04
相关资源
最近更新 更多