FineUI 官方论坛

标题: ext:window局部刷新 [打印本页]

作者: 版本    时间: 2013-5-9 16:07
标题: ext:window局部刷新
      用ext:window定义了一个控件Subwindow,它的url加入指向"Test.aspx",定义按钮Button_User点击的时候刷新Subwindow页面。
      具体如下<ext:Window ID="SubWindow" runat="server"></ext:Window>初始化的时候SubWindow.IFrameUrl = "Test.aspx?";。Button_User.OnClientClick = SubWindow.GetShowReference("Test.aspx?", "Test");
      现在不想每次点击按钮Button_User,都整个刷新Test.aspx,想只刷新其中的一部分,也就是第一次的时候执行(!IsPostBack),下面的时候执行IsPostBack。应该如何实现?我现在是了用Ext.getCmp(‘id’).refresh,load等方法都没实现。期望大家能给解答下啊,非常感谢!!

作者: sanshi    时间: 2013-5-10 13:21
你的window控件内嵌了iframe,所以点击按钮相当于重新加载iframe中页面。也可以点击按钮时,调用iframe中的__doPostBack函数,来实现局部刷新,只不过要不要写js代码
作者: 版本    时间: 2013-5-10 14:14
谢谢老大的回复,非常感谢!我尝试调用__doPostBack函数,但是只是刷新了window控件所在页,没有刷新它url指向的页面。我用了以下js调用:
var currentwindow = Ext.getCmp('RegionPanel1_mainRegion_Panel_Main_Window');
                        var targetid = currentwindow.getContentTarget().id;
                        var iframe = currentwindow.body.query('iframe')[0].contentWindow;
                        __doPostBack(iframe,'test');
希望老大再指点下啊。谢谢!
作者: 版本    时间: 2013-5-10 14:15
感觉我用的__doPostBack参数指向的iframe还是不对,但是不知道应该下面再具体发给谁了
作者: 版本    时间: 2013-5-10 14:24
贴错了。代码调试了好几次,写的有点乱了。应该是__doPostBack('RegionPanel1_mainRegion_Panel_Main_Window','test'); 或__doPostBack(targetid ,'test'); 都试过,没成功。觉得ifame调用__doPostBack却发现ifame没有这个函数功能。
作者: sanshi    时间: 2013-5-10 15:02
版本 发表于 2013-5-10 14:24
贴错了。代码调试了好几次,写的有点乱了。应该是__doPostBack('RegionPanel1_mainRegion_Panel_Main_Windo ...

找到iframe的window对象,然后调用它的__doPostBack 函数。 IFrame中的页面要包含PageManager控件
作者: 版本    时间: 2013-5-11 14:52
还是不行。父页面定义如下:
<extageManager ID="ageManager1" AutoSizePanelID="RegionPanel1"  runat="server" EnableAjaxLoading="false"/>
    <ext:RegionPanel ID="RegionPanel1" runat="server">
    <Regions>
    <ext:Region ID="mainRegion" ShowHeader="false" Layout="Fit" Margins="0 0 0 0" Position="Center"
                runat="server" EnableIFrame="true" IFrameName="iframe" >
            
        <Items>  
        <extanel ID="anel_Main_Window" ShowHeader="false"  
            runat="server"  ShowBorder="false" BodyPadding="0" Layout="fit">     
        <Items>
        <ext:Window ID="SubWindow" runat="server" OnClose="SubWindow_Close"  Layout="fit"
        AnchorValue="100% 100%"  IFrameUrl="about:blank;"
         EnableIFrame="true"  AutoHeight="true" AutoWidth="true" BoxMargin="0,0,0,0"
         WindowPosition="GoldenSection" Top="0"  BodyPadding="0" Title="Net Struct Manager" EnableClose="false"></ext:Window>
        </Items>
        </extanel>
        </Items>
    </ext:Region>
    </Regions>
     </ext:RegionPanel>
子页面:
<extageManager ID="ageManager1" runat="server" />
     <ext:Form  EnableBackgroundColor="true" BodyPadding="0px"
        ID="extForm" runat="server" Title="Edit Area" AutoWidth="true" LabelWidth="120px">
        <Rows>
           
            
            <ext:FormRow>
                <Items>
                    <ext:TextBox ID="AreaName" Label="Area Name" Required="true" runat="server"
                        ShowRedStar="True" />
                    <ext:ToolbarFill ID="ToolbarFill1" runat="server"></ext:ToolbarFill>
                </Items>
            </ext:FormRow>
            
                        
            
            <ext:FormRow>
                <Items>
                    <extropDownList ID="DropDownList_Area" Label="Area" Required="true" runat="server">
                   </extropDownList>
                   <ext:ToolbarFill ID="ToolbarFill2" runat="server"></ext:ToolbarFill>
                </Items>
            </ext:FormRow>
        </Rows>
    </ext:Form>。
我在父页面用var currentwindow = Ext.getCmp('RegionPanel1_mainRegion_Panel_Main_Window_SubWindow').body.query('iframe')[0].contentWindow;得到的应该是window对象吧。但是没有__doPostBack 方法。目前我用父页发送消息给子页,然后子页自己刷新的方法暂时解决。但是不是直接__doPostBack 调用。希望sanshi老大有时间能再指点下,谢谢!




欢迎光临 FineUI 官方论坛 (https://fineui.com/bbs/) Powered by Discuz! X3.4