【问题标题】:Create PopUp with <asp:HyperLink> that is passing parameters使用传递参数的 <asp:HyperLink> 创建弹出窗口
【发布时间】:2009-04-22 16:05:58
【问题描述】:

HyperLink 语法无法将参数传递给小弹出窗口:

<asp:HyperLink ID="HyperLink2" runat="server" Text="Manage Related Items"
    NavigateUrl='<%# "editRelatedItems.aspx?" + "ProductSID=" + Eval("ProductSID") + "&CollectionTypeID=" + Eval("CollectionTypeID")+ "&ProductTypeID=" + Eval("ProductTypeID") %>'
    onclick="window.open('editRelatedItems.aspx?','name','height=550, width=790,toolbar=no,directories=no,status=no, menubar=no,scrollbars=yes,resizable=no'); return false;)
    target="_blank" />

看起来&lt;asp:HyperLink&gt; 标记不采用"onclick"。关于如何获得可以获取这些参数的弹出窗口的任何想法?我正在使用 C#,所以也许有一种方法可以在后面的代码中构建 NavigateURL 字符串?

感谢您提供的任何见解。

【问题讨论】:

    标签: asp.net javascript parameters


    【解决方案1】:

    从服务器端代码你可以做

    HyperLink2.Attributes.Add("OnClick", "yourstuffhere");
    

    这将允许您指定 OnClick 项目。

    如果需要,您也可以将NavigateUrl 设置为类似“javascript: window.open...”,同样,可以从后面的代码中完成。

    还有

    鉴于超链接只是磨房锚标记的标准运行,如果您在后面的代码中完成所有这些处理,那么您自己构建整个链接可能会更容易以节省一些麻烦。

    【讨论】:

    • 感谢 Mitchel,在 OnClick 中我必须以 JavaScript 类型的方式指定我的 C# 派生的 Eval("ProductSID") 参数 - 否则这些参数将不会传递到 url 字符串和目标页面.关于如何将我的 Eval("ProductSID") 类型语句转换为 JavaScript.. 的任何语法想法?这甚至可能吗?
    【解决方案2】:
    <asp:HyperLink 
         ID="HyperLink2" 
         runat="server" 
         Text="Manage Related Items"
         NavigateUrl="#"
         onClick='<%# "window.open('editRelatedItems.aspx" + 
                      "?ProductSID=" + Eval("ProductSID") + 
                      "&CollectionTypeID=" + Eval("CollectionTypeID")+ 
                      "&ProductTypeID=" + Eval("ProductTypeID") + 
                      ",'name','height=550, width=790,toolbar=no,
                      directories=no,status=no,
                      menubar=no,scrollbars=yes,resizable=no'); 
                      return false;%>'  
         Target="_blank" />
    

    应该可以,但我真的会创建一个 javascript 方法来调用它来打开窗口。

    <script type="text/javascript">
       function openRelatedItems(productSID, collectionTypeId, productTypeId) { 
    
           window.open('editRelatedItems.aspx" + 
                      "?ProductSID=" + productSID + 
                      "&CollectionTypeID=" + collectionTypeID + 
                      "&ProductTypeID=" + productTypeID + 
                      ",'name','height=550, width=790,toolbar=no,
                      directories=no,status=no,
                      menubar=no,scrollbars=yes,resizable=no'); 
    
       }
    </script>
    

    【讨论】:

    • 感谢 Bob - 以及所有回答的人。这段代码确实有效,但正如其他人所提到的,使用 javascript 的 asp:HyperLink 控件已被证明不是一个优雅的解决方案。我现在是这个建议的代码,因为要求很简单。问候,道格
    【解决方案3】:

    您需要服务器端的超链接控件吗?如果没有,我建议只使用标准的 HTML 锚标记,或者如果您需要它动态显示,只需使用文字标记在后端生成它并将标记写入该标记(包括 onclick)。你需要问自己的问题是“你觉得幸运吗?”和“我需要服务器控件吗?”

    如果不熟悉,请研究一下 ItemDataBound 事件。

    要放入 DataList 的 ItemDataBound 事件的关键代码:

    Dim lit as Literal = CType(e.Item.FindControl("Literal1"), Literal)
    
    lit.Text = "<a onclick='YOURJAVASCRIPT' href='#'>YOUR TEXT</a>"
    

    这绝不是您应该在活动中放入的全部代码,就像我说的那样,研究活动可以提供什么并从那里开始。

    【讨论】:

    • Dan,对不起,我之前没有提到这个事实:超链接位于 DataList 的 内 - 因此超链接将为每个产品获取不同的产品属性。至于改用 Literal,我对您的建议很模糊 - 只需将 HyperLink 替换为 Literal 并设置 Literal1.text = "someThingHereComingFromCodeBehind" ?
    【解决方案4】:

    您在代码中对 onclick 的使用缺少结束引号 " 并且有一个额外的括号 )。那可能是你的问题。

    onclick="window.open('editRelatedItems.aspx?','name','height=550, width=790,toolbar=no,directories=no,status=no, menubar=no,scrollbars=yes,resizable=no'); return false;"
    

    我发现 javascript 弹出窗口不能很好地与 ASP:HyperLink 配合使用;尝试通过普通的锚标签创建链接:

    <a id="HyperLink2" 
         runat="server" 
         NavigateUrl='<%# "editRelatedItems.aspx?ProductSID=" + Eval("ProductSID") + "&CollectionTypeID=" + Eval("CollectionTypeID")+ "&ProductTypeID=" + Eval("ProductTypeID") %>'  
         onclick="window.open('editRelatedItems.aspx?','name','height=550, width=790,toolbar=no,directories=no,status=no, menubar=no,scrollbars=yes,resizable=no'); return false;" 
         Target="_blank">
    Manage Related Items
    </a>
    

    【讨论】:

      【解决方案5】:

      NavigateUrl 会覆盖“a”标签的 onclick 事件。

      你要设置目标属性并放下onclick

      http://www.w3schools.com/tags/tag_a.asp

      【讨论】:

        【解决方案6】:

        使用OnClientClick 代替OnClick

        【讨论】:

          【解决方案7】:
          <asp:HyperLink 
               ID="HyperLink2" 
               runat="server" 
               Text="Manage Related Items"
               NavigateUrl="#"
               onClick='<%# "window.open('editRelatedItems.aspx" + 
                            "?ProductSID=" + Eval("ProductSID") + 
                            "&CollectionTypeID=" + Eval("CollectionTypeID")+ 
                            "&ProductTypeID=" + Eval("ProductTypeID") + 
                            ",'name','height=550, width=790,toolbar=no,
                            directories=no,status=no,
                            menubar=no,scrollbars=yes,resizable=no'); 
                            return false;%>'  
               Target="_blank" />
          

          您在启动 url 值后关闭“的位置。此代码显示错误,服务器标签不符合要求

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2014-03-14
            • 1970-01-01
            • 1970-01-01
            • 2021-10-07
            • 1970-01-01
            • 1970-01-01
            • 2011-11-12
            相关资源
            最近更新 更多