FineUI 官方论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

本论坛已关闭(禁止注册、发帖和回复)
请移步 三石和他的朋友们

FineUI首页 WebForms - MVC & Core - JavaScript 常见问题 - QQ群 - 十周年征文活动

FineUI(开源版) 下载源代码 - 下载空项目 - 获取ExtJS - 文档 在线示例 - 版本更新 - 捐赠作者 - 教程

升级到 ASP.NET Core 3.1,快、快、快! 全新ASP.NET Core,比WebForms还简单! 欢迎加入【三石和他的朋友们】(基础版下载)

搜索
查看: 16672|回复: 12
打印 上一主题 下一主题

【已解决】求教:自定义一个菜单 想用JS刷新 iframe

[复制链接]
跳转到指定楼层
楼主
发表于 2013-3-18 09:59:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
用HTML自定义了一个菜单,我想通过点击菜单项来刷新 panel的 iframeURL
HTML的菜单不是FineUI控件所以我不能在后台设置iframeURL,所以我只能用JS来设置。
看了下源码
        public string GetRefreshIFrameReference()
        {
            return String.Format("{0}.body.query('iframe')[0].contentWindow.location.reload();", ScriptID);
        }

我换成JS代码如下:
var v=Ext.getCmp("RegionPanel1_Region2");
v.body.query('iframe')[0].src="http://www.google.com";
v.body.query('iframe')[0].contentWindow.location.reload();
结果还是没刷新页面。


哪位同仁碰到过这样的需求 帮忙解答下。




推荐
发表于 2013-3-19 14:45:10 | 只看该作者
更新后的代码:
  1. <!DOCTYPE html>
  2. <head runat="server">
  3.     <title></title>
  4. </head>
  5. <body>
  6.     <form id="form1" runat="server">
  7.     <x:PageManager ID="PageManager1" runat="server" AutoSizePanelID="RegionPanel1" />
  8.     <x:RegionPanel ID="RegionPanel1" runat="server" ShowBorder="false">
  9.         <Regions>
  10.             <x:Region ID="Region1" runat="server" Position="Top" ShowHeader="true" Split="false"
  11.                 Height="200px">
  12.                 <Items>
  13.                     <x:ContentPanel ID="ContentPanel1" runat="server" BodyPadding="5px" ShowBorder="true"
  14.                         ShowHeader="true" Title="ContentPanel">
  15.                         <ol>
  16.                             <li><a href="javascript:reload('http://www.baidu.com')">刷新iframe</a></li>
  17.                             <li><a href="javascript:reload('http://fineui.com/bbs')">刷新iframe</a></li>
  18.                         </ol>
  19.                     </x:ContentPanel>
  20.                 </Items>
  21.             </x:Region>
  22.             <x:Region ID="Region2" runat="server" Position="Center" ShowHeader="true" Title="Center Region" IFrameUrl="about:blank;"
  23.                 EnableIFrame="true">
  24.             </x:Region>
  25.         </Regions>
  26.     </x:RegionPanel>
  27.     </form>
  28.     <script type="text/javascript">
  29.         function reload(url) {
  30.             var region2 = Ext.getCmp('<%= Region2.ClientID %>');
  31.    var iframe = region2.body.query('iframe')[0];
  32.             iframe.src = url;
  33.         }
  34.     </script>
  35. </body>
  36. </html>
复制代码

注意:
1. 要设置 IFrameUrl="about:blank;" ,否则不会渲染 iframe 节点
2. Ext.getCmp得到的是extjs组件对象,而我们要找的是其中的iframe节点:region2.body.query('iframe')[0]

沙发
发表于 2013-3-19 02:28:16 | 只看该作者
把页面的ASPX代码贴一下
板凳
 楼主| 发表于 2013-3-19 03:39:29 | 只看该作者
本帖最后由 虫豸 于 2013-3-19 04:15 编辑

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Demo.aspx.cs" Inherits="YFKindergarten.Demo" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
    <script type="text/javascript">
        function reload() {
            //刷新iframeURL
            var iframeT = Ext.getCmp("RegionPanel1_Region2");
            iframeT.src = "http://www.baidu.com";
            iframeT.body.query('iframe')[0].contentWindow.location.reload()
        }
    </script>

    <style type="text/css">
        li{ float:left}
    </style>
</head>
<body>
    <form id="form1" runat="server">
        <ext:PageManager ID="PageManager1" runat="server" AutoSizePanelID="RegionPanel1"/>
        <ext:RegionPanel ID="RegionPanel1" runat="server" ShowBorder="false">
            <Regions>
                <ext:Region ID="Region1" runat="server" Position="Top" ShowHeader="true" Split="false" Height="200px">
                    <Items>
                        <ext:ContentPanel ID="ContentPanel1" runat="server" BodyPadding="5px" ShowBorder="true"
                            ShowHeader="true" Title="ContentPanel">                        
                            <ol>
                                    <li><a href="javascript:reload()">刷新iframe</a></li>
                                <li><a href="javascript:reload()">刷新iframe</a></li>
                                <li><a href="javascript:reload()">刷新iframe</a></li>
                                <li><a href="javascript:reload()">刷新iframe</a></li>
                                <li><a href="javascript:reload()">刷新iframe</a></li>
                            </ol>

                        </ext:ContentPanel>
                    </Items>
                </ext:Region>
                <ext:Region ID="Region2" runat="server" Position="Center" ShowHeader="true" Title="Center Region"
                 EnableIFrame="true">
                </ext:Region>
            </Regions>
        </ext:RegionPanel>
    </form>
</body>
</html>

5#
 楼主| 发表于 2013-3-19 15:40:59 | 只看该作者
谢谢三石兄 {:soso_e183:}
6#
发表于 2013-3-19 16:03:14 | 只看该作者
留个印记
7#
发表于 2013-3-21 04:38:48 | 只看该作者
不错  用处比较多
8#
发表于 2013-3-24 04:15:12 | 只看该作者
保存一下先,以后用。
9#
发表于 2013-4-19 15:59:21 | 只看该作者
不错,收藏
10#
发表于 2013-6-7 17:57:55 | 只看该作者
本帖最后由 不思议手 于 2013-6-7 18:00 编辑

我想问呢,如果这个刷新不是在同一个页面,而是在另一个页面,要怎样才可以做到刷新那个frame呢?
我的帖子,http://www.fineui.com/bbs/forum.php?mod=viewthread&tid=3170&extra=
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|FineUI 官方论坛 ( 皖ICP备2021006167号-1 )

GMT+8, 2024-5-16 00:01 , Processed in 0.046697 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表