gridpanel row deselect on ext window close

  1. #1

    gridpanel row deselect on ext window close

    I have a gridpanel that on row select opens an ext window.

    When the window closes the row is still selected and if you click the row a second time the window does not re-open.

    I need to reset the gridpanel after the window closes or make the row available to be reselected.

    <ext:GridPanel ID="gp1" runat="server" Border="true" StoreID="stGroup1" StripeRows="true" Height="165" AutoExpandColumn="myCol">
      <ColumnModel ID="cmGroup1" runat="server">
        <Columns>
          <ext:Column ColumnID="Proc_Name" DataIndex="Proc_Name" Header="Procedure" Width="200" Sortable="true" />
          <ext:Column ColumnID="Proc_Note" DataIndex="Proc_Note" Header="Procedure Note" Width="100" Sortable="true" />
          <ext:Column ColumnID="MyCount" DataIndex="MyCount" Header="My Count" Width="70" Sortable="true" />
          <ext:CheckColumn ColumnID="Active" DataIndex="Active" Header="Active" Width="50" />
        </Columns>
      </ColumnModel>
    
      <BottomBar>
        <ext:PagingToolBar ID="PagingToolBar1" runat="server" PageSize="5" StoreID="stGroup1" />
      </BottomBar>
    
      <LoadMask ShowMask="true" />
    
      <SelectionModel>
        <ext:RowSelectionModel ID="rsmEditProc" runat="server" >
          <AjaxEvents>
            <RowSelect Failure="Ext.MessageBox.alert('Load failed', 'Error during ajax event!');" >
              <EventMask ShowMask="true" Target="CustomTarget" CustomTarget="#{winProcDetails}" /> 
              <ExtraParams>
                <ext:Parameter Name="ProcID" Value="this.getSelected().get('ProcID')" Mode="Raw" />
              </ExtraParams> 
            </RowSelect>
          </AjaxEvents>
          <Listeners>
            <RowSelect Handler="#{winProcDetails}.show();" />
          </Listeners>
        </ext:RowSelectionModel>
      </SelectionModel>
    
    
    </ext:GridPanel>
  2. #2

    RE: gridpanel row deselect on ext window close

    Hi,
    You used the property CloseAction? If used with "Close", you can't
    use re-open, it is only possible with "HIDE". Post the code of the
    window.
    Maia.
  3. #3

    RE: gridpanel row deselect on ext window close

    <ext:Window ID="winProcDetails" runat="server" Modal="true" Title="Procedure Details" X="0" Y="0" Width="695px" Height="630px" BodyStyle="padding: 6px;" CloseAction="Hide" Collapsible="False" ShowOnLoad="false">
      <body>
      </body>
    </ext:window>
    The ext:window control has CloseAction of "Hide". The window displays an "X" in the upper right hand corner. When the window is closed by clicking on the "X" or by some action in the window I need to reset the selected row (or rebind) in the grid panel so that the row can be clicked again (re-open the window).

    The ext:window is in a user control.

    James
  4. #4

    RE: gridpanel row deselect on ext window close

    Hi,
    <div style="text-align: left;" id="result_box" dir="ltr"><div style="text-align: left;" id="result_box" dir="ltr">I use the same scenario (Grid and click on the line open window).
    After saving the record in the window, do a reload in Store.
    See method Gravar:
            public Store GridStore
    <div class="forum-code">        {
                get;
                set;
            }
           protected void Gravar(object sender, AjaxEventArgs e)
            {
                Atualizar();                
                this.GridStore.AddScript(string.Format("{0}.reload();", this.GridStore.ClientID));
    
            }
            protected void Atualizar()
            {
                if (txtTctId.Text == "")
                {
                    CrmTipoContato obj = new CrmTipoContato();
                    obj.tctDescricao = txtTctDescricao.Text;
                    CrmTipoContatoController.Incluir(obj);
                }
                else
                {
                    CrmTipoContato obj = CrmTipoContato.FindById(int.Parse(txtTctId.Text));
                    obj.tctDescricao = txtTctDescricao.Text;
                    CrmTipoContatoController.Alterar(obj);
                }
    
            }
    <div style="text-align: left;" id="result_box" dir="ltr">When return to Grid, if I click on the line re-open window to edit again.

    Maia.

  5. #5

    RE: gridpanel row deselect on ext window close

    Do you run this code in the parent page or the user control page?

    James
  6. #6

    RE: gridpanel row deselect on ext window close

    Hi,
    UserControl Page.

    Grid.ascx:
    <%@ Control Language="C#" AutoEventWireup="true" CodeBehind="GrdTipoContato.ascx.cs" Inherits="CRMWeb.View.grdTipoContato" %>
    <%@ Register Assembly="Coolite.Ext.Web" Namespace="Coolite.Ext.Web" TagPrefix="ext" %>
    <%@ Register Src="~/View/frmTipoContato.ascx" TagName="TipoContato" TagPrefix="UC1" %>
    
    <script type="text/javascript">
        
            function GridPanel1() { return eval('<%=GridPanel1.ClientID%>'); }
    
            function confirmaExclusaoTipoContato(button, e) {
                
                if (GridPanel1().getSelectionModel().hasSelection()) {
                    Ext.Msg.confirm(
                    "Alerta",
                    "Confirma Exclusão <br> " + GridPanel1().getSelectionModel().getSelected().data.tctDescricao + " ?",
                    retornoAjaxEvent.createDelegate(button, [button, e], true),
                    button
                    );
                    return false;
                }
                else {
                    Ext.Msg.alert("Alerta", "Selecione um registro...");
                }
            }
    
            function retornoAjaxEvent(btnId, text, sender, e) {
                if (btnId == 'yes') {
                    sender.ajaxEvents.click.fn.apply(sender, [sender, e]);
                }
            }   
            
    </script>
    
    <ext:ScriptManagerProxy ID="ScriptMangerProxy1" runat="server">
    </ext:ScriptManagerProxy>
    <ext:DesktopWindow 
        ID="TipoContato" 
        runat="server" 
        Collapsible="true" 
        IconCls="icon-phone16" 
        Title="Tipos de Contatos" 
        BodyStyle="padding: 6px;" 
        Width="400" 
        Height="360"      
        Minimizable="false"              
        Maximizable="false">
        <CustomConfig>        
            <ext:ConfigItem Name="maximizable" Value="false" Mode="Raw" />
        </CustomConfig>         
    
        <body>
            <ext:Store ID="StoreTipoContato" runat="server" AutoLoad="true" OnRefreshData="RefreshData1" RefreshAfterSaving="Auto" >
    <%--        <Proxy>
                    <ext:DataSourceProxy/>
                </Proxy>
    --%>            
                <Reader>
                    <ext:JsonReader  ReaderID="tctId">
                        <Fields>
                            <ext:RecordField Name="tctId"/>
                            <ext:RecordField Name="tctDescricao"/>                                        
                        </Fields>
                    </ext:JsonReader>
                </Reader>
            </ext:Store>                    
            <ext:GridPanel 
                ID="GridPanel1" 
                runat="server" 
                StoreID="StoreTipoContato" 
                StripeRows="true"     
                Border="false"                     
                SelectionMemory="Disabled"                            
                Height="265">
                    <TopBar>
                        <ext:Toolbar ID="Toolbar1" runat="server">
                            <Items>                        
                                <ext:ToolbarButton ID="btnInserir" runat="server" Icon="Add">
                                    <AjaxEvents>                                    
                                        <Click OnEvent="Novo">                                        
                                        </Click>
                                    </AjaxEvents>                           
                                    
                                    <ToolTips>
                                        <ext:ToolTip Html="Novo Tipo Contato"></ext:ToolTip>
                                    </ToolTips>                                
                                </ext:ToolbarButton>                                
                                <ext:ToolbarSeparator ID="ToolbarSeparator1" runat="server">                            
                                </ext:ToolbarSeparator>
                                
                                <ext:ToolbarButton ID="btnEditar" runat="server" Icon="ApplicationEdit" Enabled="false">
                                    <AjaxEvents>                                    
                                        <Click OnEvent="Editar">                                        
                                            <ExtraParams>
                                                <ext:Parameter Name="id" Value="#{GridPanel1}.getSelectionModel().hasSelection() ? #{GridPanel1}.getSelectionModel().getSelected().data.tctId : -1" Mode="Raw" />
                                            </ExtraParams>                                                                               
                                        </Click>
                                    </AjaxEvents>                           
                                    <ToolTips>
                                        <ext:ToolTip Html="Editar Tipo Contato"></ext:ToolTip>
                                    </ToolTips>                                
                                </ext:ToolbarButton>
                                <ext:ToolbarSeparator ID="ToolbarSeparator2" runat="server">                            
                                </ext:ToolbarSeparator>                                                  
                                
                                <ext:ToolbarButton ID="btnExcluir" runat="server" Icon="Cross" Enabled="false">                                
                                    <Listeners>                                
                                        <Click fn="confirmaExclusaoTipoContato" />                             
                                    </Listeners>                                                               
                                    <AjaxEvents>
                                        <Click OnEvent="Excluir" >
                                            <ExtraParams>
                                                <ext:Parameter Name="id" Value="#{GridPanel1}.getSelectionModel().hasSelection() ? #{GridPanel1}.getSelectionModel().getSelected().data.tctId : -1" Mode="Raw" />
                                            </ExtraParams>                                        
                                        </Click>
                                    </AjaxEvents>                           
                                    <ToolTips>
                                        <ext:ToolTip Html="Excluir Tipo Contato"></ext:ToolTip>
                                    </ToolTips>                                
                                </ext:ToolbarButton>                            
                                <ext:ToolbarSeparator ID="ToolbarSeparator3" runat="server">                            
                                </ext:ToolbarSeparator>                                                                              
                                <ext:ToolbarButton ID="btnSair" runat="server" Icon="DoorOut">                                
                                    <Listeners>
                                        <Click Handler="#{TipoContato}.hide(null);" />
                                    </Listeners>
                                    <ToolTips>
                                        <ext:ToolTip Html="Sair"></ext:ToolTip>
                                    </ToolTips>                                
                                </ext:ToolbarButton>                                
                                
                            </Items>
                        </ext:Toolbar>
                    </TopBar>
                
                    <ColumnModel ID="ColumnModel1" runat="server">
                        <Columns>                        
                            <ext:Column ColumnID="tctId" Header="Id" Width="25" Sortable="true" DataIndex="tctId"></ext:Column>
                            <ext:Column ColumnID="tctDescricao" Header="Descrição" Width="320" Sortable="true" DataIndex="tctDescricao"></ext:Column>                        
                        </Columns>                                                                
                    </ColumnModel>
                    <SelectionModel>
                        <ext:RowSelectionModel ID="RowSelectionModel1" runat="server">
                            <Listeners>
                                <RowSelect Handler="#{btnEditar}.enable();#{btnExcluir}.enable(); " />                             
                                <RowDeselect Handler="if (!#{GridPanel1}.hasSelection()) {#{btnEditar}.disable();#{btnExcluir}.disable() }" />                
                            </Listeners>                       
                        </ext:RowSelectionModel>
                        
                        
                    </SelectionModel>
                    <LoadMask ShowMask="true" Msg="Atualizando Grid ..."/>
                    <BottomBar>
                        <ext:PagingToolBar ID="PagingToolBar1"                                        
                                           runat="server" 
                                           PageSize="10" 
                                           StoreID="StoreTipoContato" 
                                           PrevText="Página Anterior"                                        
                                           NextText="Próxima Página"
                                           BeforePageText="Página"
                                           AfterPageText="de"
                                           LastText="Última Página"
                                           FirstText="Primeira Página"
                                           DisplayInfo="true"
                                           EmptyMsg="Não há Registros"
                                           RefreshText="Recarregar"
                                           DisplayMsg="Registro {0} - {1} de {2}"/>
                    </BottomBar>
                    <AjaxEvents>                   
                       <RowDblClick OnEvent="Editar">
                            <ExtraParams>
                                <ext:Parameter Name="id" Value="#{GridPanel1}.getSelectionModel().getSelected().data.tctId" Mode="Raw" />                                                                
                            </ExtraParams>                              
                        </RowDblClick>
                    </AjaxEvents>                
                    
            </ext:GridPanel>         
            <UC1:TipoContato ID="uc1" runat="server" />     
        </body>
    </ext:DesktopWindow>
    Grid.cs
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using Coolite.Ext.Web;
    using CRMWeb.Controller;
    using CRMWeb.View;
    using CRMModel.Model;
    
    namespace CRMWeb.View
    {
        public partial class grdTipoContato : System.Web.UI.UserControl
        {
            protected void Page_Init(object sender, EventArgs e)
            {
                this.uc1.GridStore = this.StoreTipoContato;
            }
            
            protected void Page_Load(object sender, EventArgs e)
            {
                if (!Ext.IsAjaxRequest)
                {
                    this.StoreTipoContato.DataSource = CrmTipoContato.FindAll();
                    this.StoreTipoContato.DataBind();                
                }
    
            }
    
            protected void RefreshData1(object sender, StoreRefreshDataEventArgs e)
            {
                this.StoreTipoContato.DataSource = CrmTipoContato.FindAll();
                this.StoreTipoContato.DataBind();
            }
    
            protected void Editar(object sender, AjaxEventArgs e)
            {
                string id = e.ExtraParams["id"];
                if (int.Parse(id) != -1)
                {                
                    this.uc1.SetTipoContato(CrmTipoContatoController.Retornar(int.Parse(id)));
                    this.uc1.ShowTipoContato();
                        
                }
                else
                {
                    this.ScriptMangerProxy1.AddScript("Ext.Msg.alert('Alerta','{0}');", "Selecione um Registro...");
                }
                
            }
    
            protected void Excluir(object sender, AjaxEventArgs e)
            {
                string id = e.ExtraParams["id"];
                if (int.Parse(id) != -1)
                {
                    CrmTipoContato obj = CrmTipoContato.FindById(int.Parse(id));
                    CrmTipoContatoController.Excluir(obj);
                    this.StoreTipoContato.DataSource = CrmTipoContato.FindAll();
                    this.StoreTipoContato.DataBind();                                
                }
                else
                {
                    this.ScriptManagerProxy1.AddScript("Ext.Msg.alert('Alerta','{0}');", "Selecione um Registro...");
                    
                }
    
            }
    
            protected void Novo(object sender, AjaxEventArgs e)
            {
                this.uc1.ShowTipoContato();
    
            }
            protected void Sair(object sender, EventArgs e)
            { 
                
            }       
     
    
    
        }
    
    }

    FrmTipoContato.ascx
    <%@ Control Language="C#" AutoEventWireup="true" CodeBehind="FrmTipoContato.ascx.cs" Inherits="CRMWeb.View.frmTipoContato" %>
    <%@ Register Assembly="Coolite.Ext.Web" Namespace="Coolite.Ext.Web" TagPrefix="ext" %>
    
    <ext:ScriptManagerProxy ID="ScriptManagerProxy1" runat="server">
    </ext:ScriptManagerProxy>
    
    <ext:Window ID="winTipoContato" 
                runat="server" 
                Collapsible="true" 
                IconCls="icon-phone16"
                Title="Cadastro Tipos Contatos"
                Show&#111;nload="false"
                Width="406"
                Height="125"
                BodyStyle="padding: 6px;" 
                CloseAction="Hide" 
                  
                >
                 <TopBar>
                     <ext:Toolbar ID="Toolbar1" runat="server">
                                <Items>
                                    <ext:ToolbarButton ID="btnGravarSair" runat="server" Icon="Disk">
                                        <AjaxEvents>
                                            <Click OnEvent="GravarSair">
                                                <EventMask ShowMask="true" Msg="Gravando Registro ..."/>
                                            </Click>
                                        </AjaxEvents>                                
                                    </ext:ToolbarButton>
                                    <ext:ToolbarButton ID="btnGravar" runat="server" Icon="DiskMagnify">
                                        <AjaxEvents>
                                            <Click OnEvent="Gravar">
                                                <EventMask ShowMask="true" Msg="Gravando Registro ..."/>
                                            </Click>
                                        </AjaxEvents>
                                    </ext:ToolbarButton>
                                     <ext:ToolbarSeparator ID="ts" runat="server">
                                    </ext:ToolbarSeparator>
                                    <ext:Button ID="btnSair" runat="server" Icon="DoorIn">
                                        <AjaxEvents>
                                            <Click OnEvent="Sair"></Click>
                                        </AjaxEvents>
                                    </ext:Button>
                                </Items>
                     </ext:Toolbar> 
                </TopBar>  
        <Body>        
            <ext:TextField ID="txtTctId" runat="server" Hidden="true"></ext:TextField>
            <ext:FormLayout ID="FormLayout1" runat="server" LabelAlign="Top" LabelSeparator="">
                <ext:Anchor>
                      <ext:TextField Name="CrmTipoContato.Descricao"  ID="txtTctDescricao" runat="server" FieldLabel="Descrição" Width="380">  
                      </ext:TextField>
                </ext:Anchor>
            </ext:FormLayout>     
                  
        </Body>
        <AjaxEvents>
            <Hide OnEvent="Sair" Delay="10"></Hide>
        </AjaxEvents>
        
    </ext:Window>
    FrmTipoContato.cs
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using Castle.MonoRail.Framework;
    using CRMModel.Model;
    using CRMWeb.Controller;
    using Coolite.Ext.Web;
    
    
    namespace CRMWeb.View
    {
        public partial class frmTipoContato : System.Web.UI.UserControl
        {
            public Store GridStore
            {
                get;
                set;
            }
    
            public void ShowTipoContato()
            {
                this.winTipoContato.Show();
                this.txtTctDescricao.Focus(true, 1);
            }
    
            public void SetTipoContato(CrmTipoContato obj)
            {
    
                this.txtTctId.Text = obj.tctId.ToString();
                this.txtTctDescricao.Text = obj.tctDescricao;
            }
    
            protected void LimparCampos()
            {
                txtTctDescricao.Text = "";
                txtTctId.Text = "";
    
            }
    
            protected void Atualizar()
            {
                if (txtTctId.Text == "")
                {
                    CrmTipoContato obj = new CrmTipoContato();
                    obj.tctDescricao = txtTctDescricao.Text;
                    CrmTipoContatoController.Incluir(obj);
                }
                else
                {
                    CrmTipoContato obj = CrmTipoContato.FindById(int.Parse(txtTctId.Text));
                    obj.tctDescricao = txtTctDescricao.Text;
                    CrmTipoContatoController.Alterar(obj);
                }
    
            }
    
            protected void Gravar(object sender, AjaxEventArgs e)
            {
                Atualizar();                
                LimparCampos();                
                this.GridStore.AddScript(string.Format("{0}.reload();", this.GridStore.ClientID));
    
            }
    
            protected void GravarSair(object sender, AjaxEventArgs e)
            {
                Atualizar();
                LimparCampos();
                this.GridStore.AddScript(string.Format("{0}.reload();", this.GridStore.ClientID));
                this.winTipoContato.Hide();
            }
    
            protected void Sair(object sender, AjaxEventArgs e)
            {
                LimparCampos();
                this.winTipoContato.Hide();
            }
     
        }
    }

Similar Threads

  1. [CLOSED] how to close window after click button in this window
    By ViDom in forum 1.x Legacy Premium Help
    Replies: 8
    Last Post: Jun 22, 2012, 2:48 PM
  2. [CLOSED] Problem to close Window which has another Window inside
    By asztern in forum 1.x Legacy Premium Help
    Replies: 8
    Last Post: Dec 21, 2010, 5:33 PM
  3. [CLOSED] Gridpanel DeSelect
    By majestic in forum 1.x Legacy Premium Help
    Replies: 1
    Last Post: Dec 17, 2010, 1:22 PM
  4. Replies: 1
    Last Post: Apr 01, 2009, 12:24 PM
  5. reload GridPanel in Window on Window2 Close
    By Tbaseflug in forum 1.x Help
    Replies: 1
    Last Post: Jan 09, 2009, 1:58 PM

Posting Permissions