DirectEvents not firering - gridPanel

  1. #1

    DirectEvents not firering - gridPanel

    Hi all!

    I create a gridpanel in code behind, and add columns to it.

    Then I need to add some DirectEvents to the columns : here is an example (gp is the gridpanel):
     foreach (Column col in gp.ColumnModel.Columns)
                {
                    col.DirectEvents.ColumnMoved.Event += ColumnMoved_Event;
                    col.DirectEvents.Move.Event += Move_Event;
                    col.DirectEvents.HiddenChange.Event += HiddenChange_Event;
                    col.DirectEvents.Hide.Event += Hide_Event;
                    col.DirectEvents.Show.Event += Show_Event;
                }
    For some reason i do not understand , some events are fired, others are never fired :
    Fired events :
    • Move
    • Hide,
    • Show

    Never Fired :
    • ColumnMoved
    • HiddenChange



    I belive I am doing something wrong, but cannot figure aout what.

    Below is an full demo example:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using Ext.Net;
    namespace WebApplication1
    {
        public partial class WebForm2 : System.Web.UI.Page
        {
            public class Dummy
            {
                public string val0 { get; set; }
                public int val1 { get; set; }
                public int val2 { get; set; }
                public static Ext.Net.Store GetStore()
                {
    
                    return new Store
                    {
                        Model = 
                        { 
                            new Model 
                            {
                                Fields = 
                                        {
                                           new ModelField("val0", ModelFieldType.String),
                                           new ModelField("val1", ModelFieldType.Int),
                                           new ModelField("val2", ModelFieldType.Int)
                                        }
                            }
                        }
    
                    };
    
                }
                public static Ext.Net.ItemsCollection<Ext.Net.ColumnBase> GetColumns()
                {
                    Ext.Net.ItemsCollection<Ext.Net.ColumnBase> Cols = new ItemsCollection<ColumnBase>
                    {
                      
                        new Column
                        {
                            Text = "Value 0", 
                            DataIndex = "val0",
                            Flex=1
                        },
                        new Column
    
                        {
                            Text = "Value 1",
                            DataIndex = "val1"
                        },
                        new Column
    
                        {
                            Text = "Value 2",
                            DataIndex = "val2"
                        }
                        
                    };
    
                    return Cols;
                }
    
            };
            protected void Page_Load(object sender, EventArgs e)
            {
                // creating a dummy store
    
                List<Dummy> mylist = new List<Dummy>();
                for (int i = 0; i < 24; i++)
                {
                    mylist.Add(new Dummy()
                    {
                        val1 = i,
                        val2 = (i+1) * 2,
                        val0 = Guid.NewGuid().ToString("N").Substring(0, i + 4)
                    });
                }
    
                //creating a gridpabnel to see store data
                GridPanel gp = new GridPanel()
                {
                    Border = true,
                    Title = "title",
                    MarginSpec = "0 0 3 0",
                    Flex=1,
                    SelectionModel = 
                    { 
                        new RowSelectionModel() { Mode = SelectionMode.Multi }
                    },
    
                    View =
                    {
                       new Ext.Net.GridView()
                       {
                            StripeRows = true,
                            TrackOver = true 
                       }
                    }
                };
                FilterHeader fh = new FilterHeader() { CaseSensitive = false };
                gp.Plugins.Add(fh);
                Store myStore = Dummy.GetStore();
                myStore.ID = "dummyStore";
              
                myStore.DataSource = mylist;
                gp.ColumnModel.Columns.AddRange(Dummy.GetColumns());
                foreach (Column col in gp.ColumnModel.Columns)
                {
                    col.DirectEvents.ColumnMoved.Event += ColumnMoved_Event;
                    col.DirectEvents.Move.Event += Move_Event;
                    col.DirectEvents.HiddenChange.Event += HiddenChange_Event;
                    col.DirectEvents.Hide.Event += Hide_Event;
                    col.DirectEvents.Show.Event += Show_Event;
                }
                gp.Store.Add(myStore);
               MyTabPanel.Items.Add(gp);
    
            }
    
            void Show_Event(object sender, DirectEventArgs e)
            {
                X.Msg.Notify(((Column)sender).Text, "Show").Show();
            }
    
            void Hide_Event(object sender, DirectEventArgs e)
            {
                X.Msg.Notify(((Column)sender).Text, "Hide").Show();
            }
            [DirectMethod]
            void HiddenChange_Event(object sender, DirectEventArgs e)
            {
                X.Msg.Notify(((Column)sender).Text, "HiddenChange").Show();
            }
    
            void Move_Event(object sender, DirectEventArgs e)
            {
                X.Msg.Notify(((Column)sender).Text, "Moved").Show();
            }
    
            void ColumnMoved_Event(object sender, DirectEventArgs e)
            {
                X.Msg.Notify(((Column)sender).Text, "ColumnMoved").Show();
            }
    
      
        }
    }
    And the corresponding aspx:
    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm2.aspx.cs" Inherits="WebApplication1.WebForm2" %>
    
    <!DOCTYPE html>
    
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title></title>
    </head>
    <body>
       
        <form id="Form1" runat="server">
            <ext:ResourceManager ID="ResourceManager1" runat="server" />
            <ext:Viewport ID="Viewport1" Layout="border" runat="server">
                <Items>
                    <ext:Container ID="Container1" runat="server" Region="Center" Layout="FitLayout">
                        <LayoutConfig>
                            <ext:FitLayoutConfig DefaultMargins="5 5 5 5" />
                        </LayoutConfig>
                        <Items>
                            <ext:TabPanel runat="server">
                                <Items>
                                    <ext:Panel ID="MyTabPanel" runat="server" Title="Test" Layout="FitLayout" Margins="5" UI="Success">
                                        <TabConfig ID="TabConfig2" runat="server" UI="Danger" />
                                    </ext:Panel>
                                   
                                </Items>
    
                            </ext:TabPanel>
                        </Items>
                    </ext:Container>
                </Items>
            </ext:Viewport>
        </form>
    </body>
    </html>
    Thanks !
  2. #2
    Hi @bruneweb,

    Yes, a Column's ColumnMoved event appears to be not working. It looks to be a rudiment.

    Please use a ColumnModel's ColumnMove.
    gp.ColumnModel.DirectEvents.ColumnMove.Event += ColumnMoved_Event;
    The same situation with HiddenChange. Though, seems there is no a big need in this event since a Column's Hide and Show event work.

    There are also a ColumnModel's ColumnHide and ColumnShow events.
    Last edited by Daniil; Mar 20, 2014 at 4:49 PM.
  3. #3
    Hi Daniil,
    thank you for your answer, i'll use gp.ColumnModel !
    Have a nice day !
  4. #4
    We've removed a Column's HiddenChange and ColumnMoved events to avoid any confusion (the SVN revision #5726). Thank you for pointing that out.
  5. #5
    Hi Daniil,
    thank you for the info.
    By the way : for the SortChange Event : during directEvent, how is it possible to know what column fired the event, and what sort direction is now?

    gp.ColumnModel.DirectEvents.SortChange.Event += SortChange_Event;
    ...
     void SortChange_Event(object sender, DirectEventArgs e)
            {
              
                foreach (ColumnBase item in ((GridHeaderContainer)sender).Columns)
                {
                   ?????
                }
            }
    thanks
  6. #6
    Here is an example.

    Example
    <%@ Page Language="C#" %>
     
    <%@ Register Assembly="Ext.Net" Namespace="Ext.Net" TagPrefix="ext" %>
    
    <script runat="server">
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!X.IsAjaxRequest)
            {
                Store store = this.GridPanel1.GetStore();
                store.DataSource = new object[] 
                { 
                    new object[] { "test", "test" },
                    new object[] { "test", "test" },
                    new object[] { "test", "test" }
                };
            }
        }
    
        protected void ColumnModel_SortChange(object sender, DirectEventArgs e)
        {
            X.Msg.Alert("ColumnModel_SortChange", e.ExtraParams["columnId"] + " " + e.ExtraParams["direction"]).Show();
        }
    </script>
    
    <!DOCTYPE html>
    
    <html>
    <head runat="server">
        <title>Ext.NET v2 Example</title>
    </head>
    <body>
        <form runat="server">
            <ext:ResourceManager runat="server" />
            <ext:GridPanel ID="GridPanel1" runat="server">
                <Store>
                    <ext:Store runat="server">
                        <Model>
                            <ext:Model runat="server">
                                <Fields>
                                    <ext:ModelField Name="test1" />
                                    <ext:ModelField Name="test2" />
                                </Fields>
                            </ext:Model>
                        </Model>
                    </ext:Store>
                </Store>
                <ColumnModel runat="server">
                    <Columns>
                        <ext:Column ID="Column1" runat="server" Text="Test 1" DataIndex="test1" />
                        <ext:Column ID="Column2" runat="server" Text="Test 2" DataIndex="test2" />
                    </Columns>
                    <DirectEvents>
                        <SortChange OnEvent="ColumnModel_SortChange">
                            <ExtraParams>
                                <ext:Parameter Name="columnId" Value="column.id" Mode="Raw" />
                                <ext:Parameter Name="direction" Value="direction" Mode="Raw" />
                            </ExtraParams>
                        </SortChange>
                    </DirectEvents>
                </ColumnModel>
            </ext:GridPanel>
        </form>
    </body>
    </html>
    See also
    http://docs.sencha.com/extjs/4.2.1/#...ent-sortchange
  7. #7
    Hi Daniil,
    thank you very much !

Similar Threads

  1. Replies: 10
    Last Post: Jan 30, 2014, 11:42 PM
  2. [CLOSED] GridPanel DirectEvents
    By thchuong in forum 2.x Legacy Premium Help
    Replies: 2
    Last Post: Jan 21, 2013, 2:12 PM
  3. [CLOSED] directevents in RowExpander with dynamic gridpanel
    By HansWapenaar in forum 2.x Legacy Premium Help
    Replies: 4
    Last Post: Nov 30, 2012, 6:39 AM
  4. Help with GridPanel DirectEvents
    By sleong in forum 1.x Help
    Replies: 0
    Last Post: Sep 29, 2011, 6:39 PM
  5. GRIDPANEL ROWEDITOR DIRECTEVENTS ERROR
    By PoloTheMonk in forum 1.x Help
    Replies: 1
    Last Post: Dec 16, 2009, 9:14 AM

Posting Permissions