Ext.net:PreviousPage.FindControl проблема

У меня есть главная страница что-то вроде этого.

<ext:ResourceManager ID="ResourceManager1" runat="server" Theme="Gray" />
    <form id="form2" runat="server">
    <ext:Panel runat="server" ID="anaPanel" Title="OSO" Icon="Car">
        <TopBar>
            <ext:Toolbar runat="server" Layout="FitLayout">
                <Items>
                    <ext:Menu ID="Menu1" runat="server" Floating="false" Layout="HBoxLayout" ShowSeparator="false"
                        AnimCollapse="true" Cls="horizontal-menu">
                        <Defaults>
                            <ext:Parameter Name="MenuAlign" Value="tl-bl?" Mode="Value" />
                        </Defaults>
                        <Items>
                            <ext:MenuItem ID="MenuItem1" runat="server" Text="" Icon="Group">
                                <Menu>
                                    <ext:Menu ID="Menu2" runat="server">
                                        <Items>
                                            <ext:MenuItem Text="new card" Icon="GroupAdd">
                                           <DirectEvents>
                                           <Click OnEvent="AddNewCart_Click"></Click>
                                           </DirectEvents>

                                            </ext:MenuItem>
                                            ...............
                                            ...............
                                            </ext:Panel>
 <ext:Window runat="server" ID="MyWindow" Hidden="true"></ext:Window>
    </form>

Мой код maninpage выглядит примерно так.

 protected void AddNewCart_Click(object sender, DirectEventArgs e)
    {

        string path = "Pages/Kart.aspx";
        Window win = CreateWindows(MyWindow,Icon.Group,path,"new card", 420, 500);
        //private Window CreateWindows(Window Mywindow , Icon ic,string path,string Title, int Heigh, int With){......};
       //I get the MyWindow and pass some values and turn it back.
        win.Render(this.Form);
        win.Show();
    }

внутри Kart.aspx у меня есть несколько кнопок, мой первый вопрос, как я могу закрыть это окно. Я поместил кнопку, чтобы закрыть это окно (окно, которое загрузило Kart.aspx), вот как я это сделал. но ни один из них не работал.

1-

 if (PreviousPage != null)//previouspage come as a null.
            {


                Window wnd = PreviousPage.FindControl("MyWindow") as Window;
                wnd.Close();
            } 

2-

 Window wnd =   Parent.Page.FindControl("MyWindow") as Window;
  wnd.Close();

3-Я также пытался сделать MyWindow общедоступным на главной странице и попытаться получить к нему доступ из Kart.aspx, но также не сработал, мой второй вопрос: как передать параметры между этими страницами.


person sakir    schedule 10.07.2013    source источник


Ответы (1)


вы можете сделать это на стороне клиента, позвонив

    window.parent.Ext.getCmp('MyWindow').close();

Изменить

наиболее близким к коду позади вызова является использование

    btnClose.AddScript("window.parent.Ext.getCmp('MyWindow').close();");

Изменить 2

если вы кодируете более сложный код, например перезагрузку сетки или изменение форм, вы делаете следующее:

Код

    X.Call("ReloadGrid");

JavaScript

    function ReloadGrid() {
                var grid = window.parent.Ext.getCmp('GridId');
                //grid reloading code
    }
person Mahmoud Darwish    schedule 10.07.2013
comment
есть ли способ сделать это из codebehind.plus, что именно делает getCmp в этом примере, спасибо - person sakir; 10.07.2013
comment
хорошо, большое спасибо, это работает нормально, но есть ли другое решение для доступа к элементу управления родительской страницы, так как у меня есть сетки внутри главной страницы, и когда я добавляю новый элемент внутри ifame, мне всегда приходится перезагружать представления сетки, - person sakir; 10.07.2013
comment
@ user2460637 вам придется делать это из JavaScript, а для вызова метода JavaScript из кода программной части вы можете использовать X.Call(methodName); - person Mahmoud Darwish; 10.07.2013
comment
можете ли вы привести конкретный пример последнего комментария, спасибо - person sakir; 11.07.2013
comment
хм, я вижу, большое спасибо, не могли бы вы взглянуть и на этот вопрос, я также разместил его stackoverflow.com/questions/17589313/ - person sakir; 11.07.2013
comment
друг, последнее, о чем я хочу тебя спросить, ты сказал: function ReloadGrid() { var grid = window.parent.Ext.getCmp('GridId'); // код перезагрузки сетки } что-то вроде этого. как я могу загрузить сетку, я пытаюсь сделать окно. код позади, как это, mystore.DataSource () = bll.getCustomer (); mystore.DataBind (); как я могу запустить эту функцию, еще раз большое спасибо - person sakir; 13.07.2013
comment
@ user2460637 этот вопрос расширяется, пожалуйста, задайте его в новом вопросе и включите как исходный код загрузки данных, так и код обновления. - person Mahmoud Darwish; 13.07.2013
comment
да, да, вы правы, поэтому я размещаю свой вопрос здесь stackoverflow.com/questions/17669862/ - person sakir; 16.07.2013