ASP.NET Listview->单击Row->执行操作

时间:2013-11-20 14:14:05

标签: c# asp.net events listview linq-to-sql

我需要以下帮助。

我有一个列表视图,我填写代码隐藏:

Linq-> SQL:

        ListView1.DataSource = from x in database.ITEMS
                               select x;
        ListView1.DataBind();

项目内容:

  • ID
  • 名称
  • 数量

我只显示字段的名称:

        <tr>
            <td>
                <asp:Label ID="nameLabel" runat="server" Text='<%# Eval("Name") %>' />
            </td>
        </tr>

假设我在数据库中有25行,我用25行填充列表视图。接下来是我需要帮助的。用户需要单击25个名称中的一个(完整行)并重定向到显示该行内容的页面。所以,假设有人点击“汽车”,他将被重定向,他会看到:你选择了汽车,汽车的ID为19,数量为6。

我已经浏览过互联网,但我无法找到可以理解的解决方案。在列表视图和其他数据显示方法方面,我有点像菜鸟。

我的2个问题:

  1. 如何点击一行(而不是该行中的按钮或链接)来启动活动?
  2. 当我点击一行并开始某个活动时,如何查看哪一个被点击了?
  3. 我希望有人可以向我解释如何以用户友好的noob方式完成这项工作,或者将我重定向到讨论我的问题的教程,以及用户友好的方式。提前谢谢。

2 个答案:

答案 0 :(得分:1)

好的 - 我不确定这是否是最好的方式(我会对其他人的想法感兴趣)......但这会奏效。

将您的列表视图更新为以下内容:

        <script type="text/javascript">
            // simple redirect to your detail page, passing the selected ID 
            function redir(id) {
                window.location.href = "mydetailpage.aspx?id=" + id;
            }
        </script>
        <table>
        <asp:ListView ID="ListView1" runat="server">
            <ItemTemplate>
                <tr onclick="redir('<%# Eval("ID") %>');">
                    <td>
                        <asp:Label ID="nameLabel" runat="server" Text='<%# Eval("Name") %>' />
                    </td>
                </tr>
            </ItemTemplate>
        </asp:ListView>
        </table>

然后创建另一个页面以显示您的详细信息(例如mydetailpage.aspx) - 这应该重新查询您的数据库并显示其他字段,给定在查询字符串中传递的ID。

答案 1 :(得分:1)

你可以定义onclick属性来调用tr元素上的javascript函数,如下所示:

onclick="yourfunction('<%# Eval("Name") %>');"

然后你可以在你的javascript函数中添加任何内容,例如重定向到另一个页面