Mar 20, 2014, 12:45 PM
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):
Fired events :
Never Fired :
I belive I am doing something wrong, but cannot figure aout what.
Below is an full demo example:
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 !