[英]How to pass a database value from asp.net to a javascript function (slideshowpro)?
我有一些网页,其中包含由javascript提供支持的幻灯片显示,以及由asp.net提供支持的数据库连接。 幻灯片运行Flash文件,其URL存储在数据库中。
静态页面的标题中应包含以下内容:
> <script type="text/javascript"> var expressInstallSwfurl = {}; var
> flashvars = {}; var params = {}; var attributes = {};
> swfobject.embedSWF("/_flash/2909.swf", "slideshowdisplay", "575",
> "300", "9.0.0", expressInstallSwfurl, flashvars, { wmode:
> "transparent" }, attributes); </script>
...其中/_flash/2909.swf是静态页面的Flash文件的URL,“ slideshowdisplay”是目标div。
现在,我需要动态调用Flash文件,例如用<%#Eval(“ myflashfileURL”)%>之类的东西替换静态2909,以从数据源获取文件名。 失败:swfobject.embedSWF(<%#Eval(“ myflashfileURL”)%>,...。
我的javascript很烂,而且我是asp的初学者(我讲一些VB,但没有C#),所以我非常感谢提供非常准确和完整的解决方案的帮助,因为我一定会弄错语法。
非常感谢。
没有代码就可以查看这一切。 但是,一旦决定使事情动态化,通常会引入像GridView这样的asp控件,该控件包含数据行,其中是指向静态页面的链接,静态页面现在将动态文件名作为参数传递。
因此您的代码应如下所示:
<script type="text/javascript">
var expressInstallSwfurl = {};
var flashvars = {};
var params = {};
var attributes = {};
swfobject.embedSWF('<%=Request("flashfile")%>', "slideshowdisplay", "575", "300", "9.0.0", expressInstallSwfurl, flashvars, { wmode: "transparent" }, attributes);
</script>
其中"flashfile"
是页面的参数
并继续使用GridView的示例,您将具有以下内容(这只是一个片段):
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataSourceID="SqlDataSource1" >
<Columns>
<asp:TemplateField>
<ItemTemplate>
<a href='Your_static_page.aspx?flashfile=<%= Eval("myflashfileURL")%>'
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
请注意,有很多方法可以实现动态解决方案,另一种方法是诸如Modal或ColorBox之类的覆盖实用程序,它可以让您完全绕过对辅助页面的调用。 这完全取决于项目要求。
希望这能使您朝正确的方向前进。
经过几个小时的激怒,这是我设法开始工作的一个非常丑陋的答案。 这是一种“将值放入隐藏控件中”的方法。
1在asp.net表单中的某个位置放置一个空标签控件,并在工具提示中保留URL参数的字段。
<asp:FormView ID="Form1" runat="server" DataSourceID="MyDatabase">
<ItemTemplate>
<asp:Label ID="flashfile"
Tooltip='<%#Eval("myFlashFileURL")%>'
runat="server"
visible="true"
ClientIDMode="static"/>
</ItemTemplate>
</asp:FormView>
这将返回一个空的span元素,以字段值作为标题:
<span id="flashfile" title="/_flash/12345.swf"></span>
请注意,如果隐藏了asp.control(visible =“ false”),则不会生成HTML,因此客户端javascript将无法读取任何内容。
空的span元素似乎是一个合理的技巧,因为它对于用户是不可见的,但是将后台数据放在工具提示中并不是一个好习惯。
2将将加载Flash文件的脚本放在span元素之后(例如,在结尾处,紧接在body标记之前)。
3定义一个javascript变量,从span元素获取其值,然后将该变量放入swfobject.embedSWF中:
<script type="text/javascript">
var mySWFfile = {};
mySWFfile = document.getElementById("flashfile").title;
var expressInstallSwfurl = {};
var flashvars = {};
var params = {};
var attributes = {};
swfobject.embedSWF(mySWFfile, "wideshow", "575", "300", "9.0.0",
expressInstallSwfurl, flashvars, { wmode: "transparent" }, attributes);
</script>
我讨厌这个,但是很有效。 页面性能似乎很慢。
必须有更优雅/更有效的方法来执行相同的操作。
(我以前曾尝试在代码隐藏区中创建变量,从而避免在页面上使用控件,但我发现我无法轻易使该变量对javascript显示,因此我放弃了。也许我应该更努力地尝试)
有什么建议/意见吗?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.