FineUI 官方论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

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

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

搜索
查看: 5451|回复: 7
打印 上一主题 下一主题

请教如何刷新Tab

[复制链接]
跳转到指定楼层
楼主
发表于 2012-4-5 16:04:14 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
有两个页面,一个是新闻列表页面News.aspx,另一个是新闻编辑页面NewsEdit.aspx。
当打开NewsEdit.aspx添加一条新闻时,点“保存”关闭本页面并刷新News.aspx页,这样新添加的新闻也会立即显示出来。
捣鼓了好几天,无奈对extjs所知甚少,只实现了关闭,请教高手不吝赐教!
下面是关闭的代码:
function closeTab() {
    var mainTab = parent.window.X('RegionPanel1_mainRegion_mainTabStrip');

    //刷新
    //alert(mainTab.findById('dynamic_added_tab_News1'));
    var listTab = mainTab.findById('dynamic_added_tab_News1');
     if (listTab != null) {
         listTab.getUpdater().refresh();
         //listTab.load();
     }


     //移除
     var tabid = mainTab.getActiveTab().getId();
     mainTab.removeTab(tabid);
}
上面虽有刷新代码,不过不起作用,也不报错,搞不出来了,只好来求救啦。

官方示例中已经有关闭当前窗体刷新父窗体的例子了,但没有关闭当前Tab并刷新另一Tab的功能,希望三石老大能加上!



沙发
 楼主| 发表于 2012-4-9 15:41:27 | 只看该作者
郁闷,怎么没有人回答啊,老大都移帖子了也不顺便给解答一下啊
板凳
发表于 2012-4-9 15:49:43 | 只看该作者
至冰 发表于 2012-4-9 15:41
郁闷,怎么没有人回答啊,老大都移帖子了也不顺便给解答一下啊

其实你可以换种思路,不需要打开两个tab,新闻列表和新闻编辑都属于新闻管理,在列表中点编辑以后,跳转到编辑页,编辑完再跳转回列表页   不是也可以吗?? 我个人觉着没必要把一个简单的动作复杂化
地板
发表于 2012-4-9 16:35:26 | 只看该作者
弹出窗体编辑呗
5#
发表于 2012-4-9 16:52:57 | 只看该作者
有个简单的办法吧!在保存后,刷新本页就可以了,或者添加一个Response.Redirect()到本页面,不是也可以吗?还有一个办法就是在tab chage的时候,刷新News.aspx,我想既然用了tab,就不会两个页面同时显现吧!菜鸟的言论,呵呵!
6#
发表于 2012-11-13 08:58:26 | 只看该作者
    <script type='text/javascript' language="javascript">
    function OpenTab(tabID, url, title) {
        var mainTabStrip = Ext.getCmp('<%= mainTabStrip.ClientID %>');
        var currentTab = mainTabStrip.getTab(tabID);
        if (!currentTab) {
            mainTabStrip.addTab({
            'id': tabID,
            'url': url,
            'title': title,
            'closable': true,
            'bodyStyle': 'padding:0px;'
            });
        } else {
            mainTabStrip.setActiveTab(currentTab);
            var iframe = Ext.DomQuery.selectNode('iframe', mainTabStrip.getActiveTab().body.dom);
            iframe.src = url;// iframe.src;对
iframe.src 重新赋值即可刷新对应tabID 页面,但整个页面刷新,截入时间较长
        }
    }
    </script>
7#
发表于 2012-11-13 09:14:20 | 只看该作者
    //主程序main.aspx脚本
    <script type='text/javascript' language="javascript">
    function OpenTab(tabID, url, title) {
        var mainTabStrip = Ext.getCmp('<%= mainTabStrip.ClientID %>');
        var currentTab = mainTabStrip.getTab(tabID);
        if (!currentTab) {
            mainTabStrip.addTab({
            'id': tabID,
            'url': url,
            'title': title,
            'closable': true,
            'bodyStyle': 'padding:0px;'
            });
        } else {
            mainTabStrip.setActiveTab(currentTab);
            //var iframe = Ext.DomQuery.selectNode('iframe', mainTabStrip.getActiveTab().body.dom);
            //iframe.src = url;// iframe.src;
        }
    }
    </script>

        //在要打开其它子网页程序中添加脚本
    <script type="text/javascript">
        function openHelloExtAspNet() {
            var nID = '<%= ID.ClientID %>';
            var mID = Ext.get(ntbxID).dom.value;
            var murl = "K_Search/K_CZJQ_Search.aspx?ID=" + mID;
            var tabID = 'dynamic_added_tab61';
            OpenTab(tabID, murl, "XXXXX查询");
            __doPostBack('SetSessionPostBack_ID', mID);
        }

        function OpenTab(tabid, url, title) {
            parent.OpenTab(tabid, url, title);
        }
    </script>
        //在要打开其它子网页程序Page_Load中添加
        protected void Page_Load(object sender, EventArgs e)
        {
            this.ClientScript.GetPostBackEventReference(this, string.Empty);
            if (!IsPostBack)
            {
                //...................
                HttpContext.Current.Session["ID"] = "";
            }
            else
            {
                string eventTarget = (this.Request["__EVENTTARGET"] == null) ? string.Empty : this.Request["__EVENTTARGET"];
                string eventArgument = (this.Request["__EVENTARGUMENT"] == null) ? string.Empty : this.Request["__EVENTARGUMENT"];
                if (eventTarget == "SetSessionPostBack_ID")
                    HttpContext.Current.Session["ID"] = eventArgument;
            }
        }
    //在子网页程序中增加定时器检测Session["ID"]变化,如Session["ID"]不为空,且与旧的ID不同,且重新检索数据,刷新部分页面
        protected void Timer1_Tick(object sender, EventArgs e)
        {
            Timer1.Enabled = false;
            mID = "";
            if (HttpContext.Current.Session["ID" ] != null)
            {
                mID = (string)HttpContext.Current.Session["ID"].ToString();
            } else  mID = Request.Params["ID"];
            if (mID  == null) mID  = "";
            if (mID  != "" && mID  != oldID.Text)
            {
                 ldID.Text= mID;
                 Grid_.PageIndex = 0;
                 Bind_Grid_();//重新绑定数据
                 HttpContext.Current.Session["ID"] = "";
            }
            Timer1.Enabled = true;
        }

//这种方式比整个页面刷新效率要高
8#
发表于 2012-11-13 09:23:09 | 只看该作者
修正补充:
其中ntbxID应改为nID
61为主菜单Tree的node.NodeID ,建议在生成菜单时自行主动对node.NodeID 赋值,不要使用默认值,以便能够准确确定子网页的tabID值
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-11-29 23:47 , Processed in 0.044916 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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