使用<asp:hyperlink>传递参数</asp:hyperlink>创建PopUp

时间:2009-04-22 16:05:59

标签: asp.net javascript parameters

HyperLink语法无法将参数传递给小型PopUp窗口:

<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 个答案:

答案 0 :(得分:3)

您可以从服务器端代码

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

将允许您指定OnClick项目。

您还可以将NavigateUrl设置为“javascript:window.open ...”,如果您愿意,可以再次使用后面的代码完成。

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

答案 1 :(得分:1)

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

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

放入DataList的ItemDataBound事件的密钥代码:

Dim lit as Literal = CType(e.Item.FindControl("Literal1"), Literal)

lit.Text = "<a onclick='YOURJAVASCRIPT' href='#'>YOUR TEXT</a>"

这绝不是您应该在活动中加入的整个代码,就像我说的那样,研究活动可以提供的内容并从那里开始。

答案 2 :(得分:1)

您在代码中使用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>

答案 3 :(得分:1)

<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>

答案 4 :(得分:0)

NavigateUrl会覆盖'a'标记的onclick事件。

您想要设置目标属性并删除onclick

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

答案 5 :(得分:0)

使用OnClientClick代替OnClick

答案 6 :(得分:0)

<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值之后关闭了。这段代码显示错误,服务器标签没有被接通