我想在asp.net页面上使用JQuery FancyBox,但我发现的所有示例都显示从锚标记(< a>)触发了一个fancybox。我无法找到从代码隐藏触发fancybox的示例。 更具体地说,我在LinkButton点击时动态创建了一个pdf文件。创建文件后,我想使用fancybox显示它(我第一次使用Jquery和FancyBox)。任何显示如何执行此操作的示例将非常感激。感谢。
答案 0 :(得分:6)
在你的linkbutton刷新页面后(回发),然后你想在你的页面中注入一些脚本。
您的页面应该已经设置了
<a href="#" id="hidden_link" style="display:none;"></a>
<script type="text/javascript">
function LaunchFancyBox() {
$("#hidden_link").fancybox().trigger('click');
}
</script>
然后,您将从按钮单击处理程序中在页面底部注入一些脚本。
因此,在页面底部,您将添加类似
的内容<asp:Literal runat="server" ID="Literal1" />
然后在按钮点击事件处理程序中,您将拥有
Public Sub Button1_Click()
Literal1.Text = "<script>$(document).ready(LaunchFancyBox());</script>"
End Sub
他们blog上的第6号也有助于解释这一点,但他们会在页面加载时启动它,因此他们不需要注入脚本。但是因为你想在回发时做这件事,你需要做一下脚本注入位。
答案 1 :(得分:4)
解决。对rockin的回复进行了一些小的调整。不得不放置
<script language="javascript" type="text/javascript">
$(document).ready(function() {
$("#hidden_link").fancybox({
'title' : 'Test Document',
'titleShow' : true,
'titlePosition' : 'over',
'titleFormat' : 'formatTitle',
'type' : 'iframe',
'width' : '98%',
'height' : '98%',
'hideOnOverlayClick': false,
'hideOnContentClick' : false,
'overlayOpacity': 0.7,
'enableEscapeButton' : false
});
});
</script>
在head标签中,并注入以下代码:
protected void SomeButton_Click(object sender, EventArgs e)
{
hidden_link.Attributes["href"] = "some_file.pdf";
Literal1.Text = "<script>jQuery(document).ready(function() {$(\"#hidden_link\").trigger('click');});</script>";
}
感谢rockinthesixstring建议正确的方向!
答案 2 :(得分:1)
我使用ASP.Net和VB.Net作为代码隐藏
ASPX: 1)我有一个隐藏的锚,其风格为display:none和no Literal 添加隐藏的锚标记id =“hidden_link”clientidmode =“static”style =“display:none;” class =“fancybox fancybox.iframe”
在内容区域或标题中:
script type="text/javascript">
$("#hidden_link").fancybox({
//'title': 'Test Document',`enter code here
//'titleShow': true,
//'titlePosition': 'over',
//'titleFormat': 'formatTitle',
href: "SessioDocqReportPreview.aspx",
'width': '98%',
'height': '98%',
'hideOnOverlayClick': false,
'hideOnContentClick': false,
'overlayOpacity': 0.7,
'enableEscapeButton': false
});
});
2) In the code behind button click event
Dim csMgr As ClientScriptManager = Me.ClientScript
If Not csMgr.IsStartupScriptRegistered("OpenPopUp_Script") Then
Dim sb As New StringBuilder()
sb.AppendLine("$(document).ready(function() {")
sb.AppendLine("$(""#hidden_link"").trigger('click');")
sb.AppendLine("return false;")
sb.AppendLine("});")
hidden_link.Attributes("href") = "xyz.aspx"
csMgr.RegisterStartupScript(Me.GetType(), "OpenPopUp_Script", sb.ToString(), True)
End If
3) This way we can get rid of Literal control, if still want to use the set the sb.Tostring to the text of the literal control with script tags and ofcourse remove the StatupScript.
BTW my fancybox is from www.fancyapps.com and v2.0.