【问题标题】:ASP.NET Listview->Click Row->Perform actionASP.NET Listview->单击行->执行操作
【发布时间】:2013-12-04 13:58:39
【问题描述】:

我需要以下方面的帮助。

我有一个使用代码隐藏填充的列表视图:

Linq->Sql:

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

项目内容:

  • 身份证
  • 姓名
  • 数量

我只显示字段的名称:

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

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

我已经浏览过互联网,但找不到我能理解的解决方案。在列表视图和其他数据显示方法方面,我是个菜鸟。

我的两个问题:

  1. 如何在我单击一行(而不是该行中的按钮或链接)时启动事件?
  2. 当我点击一行并开始一个事件时,如何查看点击的是哪一个?

我希望有人可以以用户友好的菜鸟方式向我解释这是如何完成的,或者将我重定向到讨论我的问题的教程,并且以用户友好的方式。提前致谢。

【问题讨论】:

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


    【解决方案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。

    【讨论】:

    • 很遗憾,当我点击该名称时没有任何反应。
    • 抱歉 - 请参阅编辑。您需要添加一个虚拟链接按钮以包含适当的 js 资源
    • 好的,我可以“触发”事件,但 if 语句返回 false,因为 __EVENTARGUMENT 不等于行。该语句始终为假,因此不会进入事件并“执行”其中的代码。我不明白为什么会这样,你知道它为什么会这样吗?
    • 好的,我已经简化为使用 JS 函数。无需在此处进行 ASP.NET 回发。您可以在后面的代码中删除处理 _EVENTTARGET 的代码...希望对您有用;)
    • 谢谢,这对我有用。但是,我想知道,这是一种安全的方法。如果用户更改 URL 中的 id,该用户是否会被重定向到他或她没有权限的页面?
    【解决方案2】:

    你可以像这样定义 onclick 属性来调用 tr 元素上的 javascript 函数:

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

    然后你可以在你的javascript函数中加入任何东西,比如重定向到另一个页面

    【讨论】:

      猜你喜欢
      • 2016-03-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-21
      • 1970-01-01
      • 1970-01-01
      • 2022-12-02
      • 2018-08-04
      相关资源
      最近更新 更多