[CLOSED] Question about multselect

  1. #1

    [CLOSED] Question about multselect

    Hi guys,

    I can trigger the event multselect after I release the ctrl key?

    My code:

    <ext:MultiSelect ID="MultiSelectTipoDocumentoID" 
                            runat="server"                         
                            MultiSelect="true" 
                            DisplayField="nome" 
                            ValueField="id"
                            Width="350" 
                            X="10" Y="100" 
                            FieldLabel="Tipo Documento"  
                            LabelAlign="Top"                                               
                            EmptyText="Carregando..." 
                            ValueNotFoundText="Nenhum tipo encontrado..." 
                            StoreID = "StoreTipoDocumentoID"
                            EnableViewState="true"                        
                            MsgTarget="Side" 
                            AllowBlank="false"                                                  
                            > 
                            <DirectEvents>
                                <Click 
                                        Before="if(#{MultiSelectTipoDocumentoID}.getRawValue() <= 0) return false;"
                                        OnEvent ="MultiSelectTipoDocumento_Clique">
                                        <EventMask ShowMask="true" Msg="Aguarde ..." MinDelay="500" />
                                </Click>                                                        
                            </DirectEvents>      
                        </ext:MultiSelect>
    protected void MultiSelectTipoDocumento_Clique(object sender, DirectEventArgs e)
            {
                if(this.RadioIndice.Checked)
                {
                    int contador = this.MultiSelectTipoDocumentoID.SelectedItems.Count;
    
                    if (contador == 1)
                    {
                        int tipoDocumentoID = int.Parse(this.MultiSelectTipoDocumentoID.SelectedItems[0].Value);
    
                        this.CriarControlesDinamicos(tipoDocumentoID, this.PanelComponenteDinamico, true);
                    }
                    else
                    {
                        List<int> tipoDocumentoIDs = new List<int>();
    
                        for (int i = 0; i < contador; i++)
                        {
                            tipoDocumentoIDs.Add(int.Parse(this.MultiSelectTipoDocumentoID.SelectedItems[i].Value));
                        }
    
                        this.CriarControlesDinamicos(tipoDocumentoIDs, this.PanelComponenteDinamico, true);                
                    }
                }
            }
    So each item selected event is triggered.

    Any suggestion?

    Thanks !
  2. #2
    Unfortunately, not all browsers allow to intercept keys for non focusable elements (like div elements)
    If you click by mouse then we can check Ctrl key but we cannot determine when Ctrl key will be unpressed

    I was able to detect Ctrl unpressed under IE only (FF and Chrome doesn't allow it)
    <%@ Page Language="C#" %>
    
    
    <%@ Register Assembly="Ext.Net" Namespace="Ext.Net" TagPrefix="ext" %>
    <!DOCTYPE html  PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html id="ctHtml" xmlns="http://www.w3.org/1999/xhtml">
    <head id="ctHead" runat="server">
        <title id="ctTitle"></title>
    
    
        <script runat="server">
            [DirectMethod]
            public void ShowSelection()
            {
                X.Msg.Alert("Selection", "You selected " + Select1.SelectedItems.Count + " items").Show();
            }
        </script>
        
        <script type="text/javascript">
            function listenCtrl(field)
            {   
                field.el.select(".ux-mselect-item").removeClass("x-unselectable").set({"unselectable":"off"});
                
                field.fs.body.on("keyup", function(e){
                    if (e.getKey() == e.CTRL){
                        Ext.net.DirectMethods.ShowSelection();
                    }
                });
            }
        </script>
    
    
    </head>
    <body id="ctBody">
        <form id="Form1" runat="server">
            <ext:ResourceManager runat="server" />
            
            <ext:MultiSelect ID="Select1" runat="server" Width="300" Height="250" KeepSelectionOnClick="WithCtrlKey">
                <Items>
                    <ext:ListItem Text="Item 1" Value="1" />
                    <ext:ListItem Text="Item 2" Value="2" />
                    <ext:ListItem Text="Item 3" Value="3" />
                    <ext:ListItem Text="Item 4" Value="4" />
                    <ext:ListItem Text="Item 5" Value="5" />
                </Items>              
                <Listeners>
                    <AfterRender Fn="listenCtrl" />
                </Listeners>          
            </ext:MultiSelect>      
        </form>
    </body>
    </html>
  3. #3
    Very sad. :(

    Ok Vladimir, thanks for your help.

    Please, mark as solved!
  4. #4
    I was able to make working sample for all base browsers (tested under IE, FF, Chrome)
    <%@ Page Language="C#" %>
     
     
    <%@ Register Assembly="Ext.Net" Namespace="Ext.Net" TagPrefix="ext" %>
    <!DOCTYPE html  PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html id="ctHtml" xmlns="http://www.w3.org/1999/xhtml">
    <head id="ctHead" runat="server">
        <title id="ctTitle"></title>
     
     
        <script runat="server">
            [DirectMethod]
            public void ShowSelection()
            {
                X.Msg.Alert("Selection", "You selected " + Select1.SelectedItems.Count + " items").Show();
            }
        </script>
         
        <script type="text/javascript">
            function onItemClick(field, e)
            {   
                if(e.ctrlKey){
                    if(!field.listening){
                        field.listening = true;
                        Ext.getDoc().on("keyup", function(e){
                            if (e.getKey() == e.CTRL){
                                field.listening = false;
                                Ext.net.DirectMethods.ShowSelection();
                            }    
                        });
                    }
                }            
                else{
                    Ext.net.DirectMethods.ShowSelection();
                }
            }
        </script>
     
     
    </head>
    <body id="ctBody">
        <form id="Form1" runat="server">
            <ext:ResourceManager runat="server" />
             
            <ext:MultiSelect ID="Select1" runat="server" Width="300" Height="250" KeepSelectionOnClick="WithCtrlKey">
                <Items>
                    <ext:ListItem Text="Item 1" Value="1" />
                    <ext:ListItem Text="Item 2" Value="2" />
                    <ext:ListItem Text="Item 3" Value="3" />
                    <ext:ListItem Text="Item 4" Value="4" />
                    <ext:ListItem Text="Item 5" Value="5" />
                </Items>              
                <Listeners>
                    <Click Fn="onItemClick" />
                </Listeners>          
            </ext:MultiSelect>      
        </form>
    </body>
    </html>
  5. #5
    You're the man! :)

    It worked beautiful.

    Thanks for your exemple.

    Please, mark as solved !!
  6. #6
    The thread is related to:
    http://forums.ext.net/showthread.php?22865

Similar Threads

  1. [CLOSED] Sorry~ one more question.
    By kkapjin in forum 1.x Legacy Premium Help
    Replies: 1
    Last Post: Apr 05, 2012, 11:16 AM
  2. [CLOSED] [1.0] Question on
    By ljankowski in forum 1.x Legacy Premium Help
    Replies: 1
    Last Post: Mar 11, 2010, 7:49 AM
  3. [CLOSED] VTypes Question
    By bruce in forum 1.x Help
    Replies: 7
    Last Post: Feb 18, 2009, 9:48 AM
  4. [CLOSED] EventMask question
    By Jurke in forum 1.x Legacy Premium Help
    Replies: 2
    Last Post: Feb 13, 2009, 11:11 AM
  5. [CLOSED] svn question
    By pkellner in forum 1.x Legacy Premium Help
    Replies: 3
    Last Post: Sep 24, 2008, 9:59 AM

Tags for this Thread

Posting Permissions