Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/463.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/32.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将数据库值从asp.net传递到javascript函数(slideshowpro)?_Javascript_Asp.net - Fatal编程技术网

如何将数据库值从asp.net传递到javascript函数(slideshowpro)?

如何将数据库值从asp.net传递到javascript函数(slideshowpro)?,javascript,asp.net,Javascript,Asp.net,我的网页包含javascript支持的幻灯片,以及asp.net支持的数据库连接。幻灯片运行flash文件,其URL存储在数据库中 静态页面的headscript中将包含以下内容: > <script type="text/javascript"> var expressInstallSwfurl = {}; var > flashvars = {}; var params = {}; var attributes = {}; > swfobject.embedSW

我的网页包含javascript支持的幻灯片,以及asp.net支持的数据库连接。幻灯片运行flash文件,其URL存储在数据库中

静态页面的headscript中将包含以下内容:

> <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>
>var expressInstallSwfurl={};变量
>flashvars={};var params={};var属性={};
>swfobject.embeddeswf(“/_flash/2909.swf”,“幻灯片显示”,“575”,
>“300”、“9.0.0”、expressInstallSwfurl、flashvars、{wmode:
>“透明”},属性);
。。。其中,/\u flash/2909.swf是静态页面的flash文件的URL,“slideshowdisplay”是目标div

现在我需要动态调用flash文件,例如用类似于从数据源获取文件名的东西替换静态2909。此操作失败:swfobject.embedSWF(

我的javascript很烂,而且我是asp的初学者(我会说一些VB,但不会说C),所以我非常感谢您为我提供一个非常精确和完整的解决方案,因为我肯定会弄错语法


非常感谢。

没有代码来查看这一切都是猜测。但是一旦你决定将事情动态化,你通常会引入asp控件,就像GridView一样,它包含数据行,其中有一个指向静态页面的链接,现在动态的文件名作为参数传递

因此,您的代码如下所示:

<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>
记住,有很多方法可以实现动态解决方案,另一种方法是覆盖实用程序,如Modal或ColorBox,它允许您完全绕过对辅助页面的调用。这取决于项目要求


希望这能让你走上正确的方向。

经过几个小时的愤怒,我终于找到了一个非常难听的答案。这是一个“将值放入隐藏控件”的方法

1在asp.net表单中的某个位置放置一个空标签控件,其中包含工具提示中包含URL参数的字段



这将返回一个以字段值为标题的空span元素:

<span id="flashfile" title="/_flash/12345.swf"></span>

请注意,如果asp.control是隐藏的(visible=“false”),则不会生成HTML,因此客户端javascript将无法读取任何内容

空跨度元素似乎是一个合理的技巧,因为用户看不见它,但将后台数据放在工具提示中并不是一个好做法

2将加载flash文件的脚本放在span元素之后(例如,在末尾,就在结束正文标记之前)

3定义一个javascript变量,从span元素获取其值,并将该变量放入swfobject.embeddeswf:



var mySWFfile={};
mySWFfile=document.getElementById(“flashfile”).title;
var expressInstallSwfurl={};
var flashvars={};
var params={};
var属性={};
embedSWF(myswf文件,“wideshow”、“575”、“300”、“9.0.0”,
expressInstallSwfurl,flashvars,{wmode:“transparent”},属性);
我讨厌这个,但它很有效。不过页面性能似乎很慢

必须有更优雅/高效的方法来做同样的事情

(我以前曾尝试在代码隐藏中创建变量,从而避免了对页面控件的需要,但我发现我无法轻松使该变量对javascript可见,因此我放弃了。也许我应该更努力地尝试。)


有任何建议/评论吗?

非常感谢fnostro。我不会让您的javascript使用此asp.net控件从数据源获取URL:--传递到页面的源代码是swfobject.embedSWF(“”,“wideshow”,“575”,“300”,“9.0.0”,…有什么想法吗?。只是澄清一下,这是一个母版页,因此我现在添加到label control*ClientIDMode=static*。页面源现在包含这个看起来正确的id和内容:/_flash/12345。swfIt很好,您可以从DB中提取文件名。这是第一步。但标签不是链接,因此无法将您发送到静态页面。静态页面中的javascript确实可以工作,它返回了
'
,这意味着它试图拉入
flashfile
参数,但没有找到,这是因为您更改了指向标签的链接。此外,ClientID在这方面不起作用,因此将模式设置为静态不会影响您尝试执行的操作只有在有子页面时才有效,子页面是您正在谈论的静态页面吗?如果是,那么这将改变一些情况谢谢。我似乎对URL感到困惑-最终页面上显示的是指向flash文件的链接,而不是指向另一个页面的链接。这是swfobject的参数。虽然这不是一个很好的解决方案,但我n不要把它放在标签工具提示中,你可以使用HiddenField并从javascript获取它的值,我现在不能做任何示例,因为我在手机上。另一个示例是通过AJAX和Web服务获取你需要的数据。这样你就不会有任何垃圾控件,但对于你的示例来说,这似乎有点过头了。好吧,我明白你的意思了现在我还没有看到与母版页的关系,因为这似乎都是自包含的,但是,正如Mackwerk所说的,用隐藏字段替换标签并使用相同的前提。也可以考虑使用<代码> WMODE:“不透明”。以提高性能。谢谢@Mackwerk。我正在尝试让你的HiddenField方法发挥作用。非常欢迎。你能更新上面的代码示例以显示当前更新吗?上面的代码示例是最新的;如果/当我能让“HiddenField”示例发挥作用时,我将添加更新。
<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 id="flashfile" title="/_flash/12345.swf"></span>
<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>