代码之家  ›  专栏  ›  技术社区  ›  Doug

使用正在传递参数的<asp:hyperlink>创建弹出窗口

  •  1
  • Doug  · 技术社区  · 17 年前

    这个 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" />
    

    看起来像 <asp:HyperLink> 标签不接受 "onclick" .关于如何让一个弹出窗口触发可以得到这些参数有什么想法吗?我正在使用C,因此可能有一种方法可以构建 NavigateURL 后面的代码中有字符串吗?

    谢谢你的洞察力。

    7 回复  |  直到 11 年前
        1
  •  1
  •   Bob    17 年前
    <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>
    
        2
  •  3
  •   Mitchel Sellers    17 年前

    从服务器端代码可以

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

    这将允许您指定onclick项。

    你也可以设置 NavigateUrl 类似于“javascript:window.open…”如果您愿意,也可以从后面的代码中完成。

    考虑到超链接只是一个标准的mill锚标记运行,如果您在代码后面进行所有这些处理,那么自己构建整个链接可能会更容易,从而节省一些麻烦。

        3
  •  1
  •   Dan Appleyard    17 年前

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

    如果不熟悉它,可以对itemdatabound事件进行一些研究。

    要放入数据列表的itemDataBound事件的键代码:

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

    这绝不是你应该在你的事件中放入的全部代码,就像我说的,研究事件可以提供什么,然后从那里开始。

        4
  •  1
  •   Gavin Miller    17 年前

    您在代码中使用的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
  •  0
  •   Chris Brandsma    17 年前

    navigateURL重写“a”标记的onclick事件。

    要设置目标属性并删除onclick

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

        6
  •  0
  •   orip    17 年前

    使用 OnClientClick 而不是 OnClick .

        7
  •  0
  •   user3035224    12 年前
    <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值后关闭的位置。此代码显示错误,服务器标记不是Welformed