I think only one incorrect behaviour in v2
Grid refreshes own view twice at initial rendering (if you don't use any proxy). We will fix it soon
At this moment, i can sugest to set AutoLoad="false" for the store and call 'load' method manually
I created two test cases (one for v2 and one for v1), 500 rows and 30 columns (v2 test case contains the fix are mentioned above)
I don't see big performance degradation in v2 beside v1
we need both buffered view and grouped view in order to make it work for us.
It is impossible, conceptions of buffering (load records in parts by demand) and grouping (sort all records by group field and show records with group separation) are different therefore it cannot be used at one time
Here is my test cases
v1
<%@ Page Language="C#" %>
<%@ Register Assembly="Ext.Net" Namespace="Ext.Net" TagPrefix="ext" %>
<!DOCTYPE html>
<html>
<head runat="server">
<title></title>
<script runat="server">
protected void Page_Load(object sender, EventArgs e)
{
ResourceManager.GetInstance().RegisterBeforeClientInitScript("window._start = new Date().getTime();");
var data = new System.Collections.Generic.List<object>();
for (int i = 0; i < 500; i++)
{
data.Add(new {
Group = i % 100,
Value1 = "1_" + i,
Value2 = "2_" + i,
Value3 = "3_" + i,
Value4 = "4_" + i,
Value5 = "5_" + i,
Value6 = "6_" + i,
Value7 = "7_" + i,
Value8 = "8_" + i,
Value9 = "9_" + i,
Value10 = "10_" + i,
Value11 = "11_" + i,
Value12 = "12_" + i,
Value13 = "13_" + i,
Value14 = "14_" + i,
Value15 = "15_" + i,
Value16 = "16_" + i,
Value17 = "17_" + i,
Value18 = "18_" + i,
Value19 = "19_" + i,
Value20 = "20_" + i,
Value21 = "21_" + i,
Value22 = "22_" + i,
Value23 = "23_" + i,
Value24 = "24_" + i,
Value25 = "25_" + i,
Value26 = "26_" + i,
Value27 = "27_" + i,
Value28 = "28_" + i,
Value29 = "29_" + i,
Value30 = "30_" + i
});
}
GridPanel1.GetStore().DataSource = data;
GridPanel1.GetStore().DataBind();
}
</script>
</head>
<body>
<form runat="server">
<ext:ResourceManager runat="server" />
<ext:GridPanel
ID="GridPanel1"
runat="server"
Width="600"
Height="450"
Title="Grid"
Frame="true">
<Store>
<ext:Store runat="server" GroupField="Group">
<Reader>
<ext:JsonReader>
<Fields>
<ext:RecordField Name="Group" />
<ext:RecordField Name="Value1" />
<ext:RecordField Name="Value2" />
<ext:RecordField Name="Value3" />
<ext:RecordField Name="Value4" />
<ext:RecordField Name="Value5" />
<ext:RecordField Name="Value6" />
<ext:RecordField Name="Value7" />
<ext:RecordField Name="Value8" />
<ext:RecordField Name="Value9" />
<ext:RecordField Name="Value10" />
<ext:RecordField Name="Value11" />
<ext:RecordField Name="Value12" />
<ext:RecordField Name="Value13" />
<ext:RecordField Name="Value14" />
<ext:RecordField Name="Value15" />
<ext:RecordField Name="Value16" />
<ext:RecordField Name="Value17" />
<ext:RecordField Name="Value18" />
<ext:RecordField Name="Value19" />
<ext:RecordField Name="Value20" />
<ext:RecordField Name="Value21" />
<ext:RecordField Name="Value22" />
<ext:RecordField Name="Value23" />
<ext:RecordField Name="Value24" />
<ext:RecordField Name="Value25" />
<ext:RecordField Name="Value26" />
<ext:RecordField Name="Value27" />
<ext:RecordField Name="Value28" />
<ext:RecordField Name="Value29" />
<ext:RecordField Name="Value30" />
</Fields>
</ext:JsonReader>
</Reader>
<SortInfo Field="Group" Direction="ASC" />
</ext:Store>
</Store>
<ColumnModel runat="server">
<Columns>
<ext:Column runat="server" Header="Group" DataIndex="Group" />
<ext:Column runat="server" Header="Value1" DataIndex="Value1" Width="30" />
<ext:Column runat="server" Header="Value2" DataIndex="Value2" Width="30" />
<ext:Column runat="server" Header="Value3" DataIndex="Value3" Width="30" />
<ext:Column runat="server" Header="Value4" DataIndex="Value4" Width="30" />
<ext:Column runat="server" Header="Value5" DataIndex="Value5" Width="30" />
<ext:Column runat="server" Header="Value6" DataIndex="Value6" Width="30" />
<ext:Column runat="server" Header="Value7" DataIndex="Value7" Width="30" />
<ext:Column runat="server" Header="Value8" DataIndex="Value8" Width="30" />
<ext:Column runat="server" Header="Value9" DataIndex="Value9" Width="30" />
<ext:Column runat="server" Header="Value10" DataIndex="Value10" Width="30" />
<ext:Column runat="server" Header="Value11" DataIndex="Value11" Width="30" />
<ext:Column runat="server" Header="Value12" DataIndex="Value12" Width="30" />
<ext:Column runat="server" Header="Value13" DataIndex="Value13" Width="30" />
<ext:Column runat="server" Header="Value14" DataIndex="Value14" Width="30" />
<ext:Column runat="server" Header="Value15" DataIndex="Value15" Width="30" />
<ext:Column runat="server" Header="Value16" DataIndex="Value16" Width="30" />
<ext:Column runat="server" Header="Value17" DataIndex="Value17" Width="30" />
<ext:Column runat="server" Header="Value18" DataIndex="Value18" Width="30" />
<ext:Column runat="server" Header="Value19" DataIndex="Value19" Width="30" />
<ext:Column runat="server" Header="Value20" DataIndex="Value20" Width="30" />
<ext:Column runat="server" Header="Value21" DataIndex="Value21" Width="30" />
<ext:Column runat="server" Header="Value22" DataIndex="Value22" Width="30" />
<ext:Column runat="server" Header="Value23" DataIndex="Value23" Width="30" />
<ext:Column runat="server" Header="Value24" DataIndex="Value24" Width="30" />
<ext:Column runat="server" Header="Value25" DataIndex="Value25" Width="30" />
<ext:Column runat="server" Header="Value26" DataIndex="Value26" Width="30" />
<ext:Column runat="server" Header="Value27" DataIndex="Value27" Width="30" />
<ext:Column runat="server" Header="Value28" DataIndex="Value28" Width="30" />
<ext:Column runat="server" Header="Value29" DataIndex="Value29" Width="30" />
<ext:Column runat="server" Header="Value30" DataIndex="Value30" Width="30" />
</Columns>
</ColumnModel>
<View>
<ext:GroupingView runat="server" HideGroupedColumn="true">
<Listeners>
<Refresh Handler="Ext.MessageBox.notify('Refresh:', (new Date().getTime() - window._start).toString());" />
</Listeners>
</ext:GroupingView>
</View>
</ext:GridPanel>
</form>
</body>
</html>
v2
<%@ Page Language="C#" %>
<%@ Register Assembly="Ext.Net" Namespace="Ext.Net" TagPrefix="ext" %>
<!DOCTYPE html>
<html>
<head runat="server">
<title></title>
<script runat="server">
protected void Page_Load(object sender, EventArgs e)
{
ResourceManager.GetInstance().RegisterBeforeClientInitScript("window._start = new Date().getTime();");
var data = new List<object>();
for (int i = 0; i < 500; i++)
{
data.Add(new {
Group = i % 100,
Value1 = "1_" + i,
Value2 = "2_" + i,
Value3 = "3_" + i,
Value4 = "4_" + i,
Value5 = "5_" + i,
Value6 = "6_" + i,
Value7 = "7_" + i,
Value8 = "8_" + i,
Value9 = "9_" + i,
Value10 = "10_" + i,
Value11 = "11_" + i,
Value12 = "12_" + i,
Value13 = "13_" + i,
Value14 = "14_" + i,
Value15 = "15_" + i,
Value16 = "16_" + i,
Value17 = "17_" + i,
Value18 = "18_" + i,
Value19 = "19_" + i,
Value20 = "20_" + i,
Value21 = "21_" + i,
Value22 = "22_" + i,
Value23 = "23_" + i,
Value24 = "24_" + i,
Value25 = "25_" + i,
Value26 = "26_" + i,
Value27 = "27_" + i,
Value28 = "28_" + i,
Value29 = "29_" + i,
Value30 = "30_" + i
});
}
GridPanel1.GetStore().DataSource = data;
GridPanel1.GetStore().DataBind();
}
</script>
</head>
<body>
<form runat="server">
<ext:ResourceManager runat="server" />
<ext:GridPanel
ID="GridPanel1"
runat="server"
Width="600"
Height="450"
Title="Grid"
Frame="true">
<Store>
<ext:Store runat="server" GroupField="Group" AutoLoad="false">
<Model>
<ext:Model runat="server">
<Fields>
<ext:ModelField Name="Group" />
<ext:ModelField Name="Value1" />
<ext:ModelField Name="Value2" />
<ext:ModelField Name="Value3" />
<ext:ModelField Name="Value4" />
<ext:ModelField Name="Value5" />
<ext:ModelField Name="Value6" />
<ext:ModelField Name="Value7" />
<ext:ModelField Name="Value8" />
<ext:ModelField Name="Value9" />
<ext:ModelField Name="Value10" />
<ext:ModelField Name="Value11" />
<ext:ModelField Name="Value12" />
<ext:ModelField Name="Value13" />
<ext:ModelField Name="Value14" />
<ext:ModelField Name="Value15" />
<ext:ModelField Name="Value16" />
<ext:ModelField Name="Value17" />
<ext:ModelField Name="Value18" />
<ext:ModelField Name="Value19" />
<ext:ModelField Name="Value20" />
<ext:ModelField Name="Value21" />
<ext:ModelField Name="Value22" />
<ext:ModelField Name="Value23" />
<ext:ModelField Name="Value24" />
<ext:ModelField Name="Value25" />
<ext:ModelField Name="Value26" />
<ext:ModelField Name="Value27" />
<ext:ModelField Name="Value28" />
<ext:ModelField Name="Value29" />
<ext:ModelField Name="Value30" />
</Fields>
</ext:Model>
</Model>
<Sorters>
<ext:DataSorter Property="Group" Direction="ASC" />
</Sorters>
</ext:Store>
</Store>
<ColumnModel runat="server">
<Columns>
<ext:Column runat="server" Text="Group" DataIndex="Group" />
<ext:Column runat="server" Text="Value1" DataIndex="Value1" Flex="1" />
<ext:Column runat="server" Text="Value2" DataIndex="Value2" Flex="1" />
<ext:Column runat="server" Text="Value3" DataIndex="Value3" Flex="1" />
<ext:Column runat="server" Text="Value4" DataIndex="Value4" Flex="1" />
<ext:Column runat="server" Text="Value5" DataIndex="Value5" Flex="1" />
<ext:Column runat="server" Text="Value6" DataIndex="Value6" Flex="1" />
<ext:Column runat="server" Text="Value7" DataIndex="Value7" Flex="1" />
<ext:Column runat="server" Text="Value8" DataIndex="Value8" Flex="1" />
<ext:Column runat="server" Text="Value9" DataIndex="Value9" Flex="1" />
<ext:Column runat="server" Text="Value10" DataIndex="Value10" Flex="1" />
<ext:Column runat="server" Text="Value11" DataIndex="Value11" Flex="1" />
<ext:Column runat="server" Text="Value12" DataIndex="Value12" Flex="1" />
<ext:Column runat="server" Text="Value13" DataIndex="Value13" Flex="1" />
<ext:Column runat="server" Text="Value14" DataIndex="Value14" Flex="1" />
<ext:Column runat="server" Text="Value15" DataIndex="Value15" Flex="1" />
<ext:Column runat="server" Text="Value16" DataIndex="Value16" Flex="1" />
<ext:Column runat="server" Text="Value17" DataIndex="Value17" Flex="1" />
<ext:Column runat="server" Text="Value18" DataIndex="Value18" Flex="1" />
<ext:Column runat="server" Text="Value19" DataIndex="Value19" Flex="1" />
<ext:Column runat="server" Text="Value20" DataIndex="Value20" Flex="1" />
<ext:Column runat="server" Text="Value21" DataIndex="Value21" Flex="1" />
<ext:Column runat="server" Text="Value22" DataIndex="Value22" Flex="1" />
<ext:Column runat="server" Text="Value23" DataIndex="Value23" Flex="1" />
<ext:Column runat="server" Text="Value24" DataIndex="Value24" Flex="1" />
<ext:Column runat="server" Text="Value25" DataIndex="Value25" Flex="1" />
<ext:Column runat="server" Text="Value26" DataIndex="Value26" Flex="1" />
<ext:Column runat="server" Text="Value27" DataIndex="Value27" Flex="1" />
<ext:Column runat="server" Text="Value28" DataIndex="Value28" Flex="1" />
<ext:Column runat="server" Text="Value29" DataIndex="Value29" Flex="1" />
<ext:Column runat="server" Text="Value30" DataIndex="Value30" Flex="1" />
</Columns>
</ColumnModel>
<Features>
<ext:Grouping
runat="server"
HideGroupedHeader="true"
/>
</Features>
<View>
<ext:GridView runat="server">
<Listeners>
<Refresh Handler="Ext.MessageBox.notify('Refresh:', (new Date().getTime() - window._start).toString());" />
</Listeners>
</ext:GridView>
</View>
<Listeners>
<Render Handler="this.store.load();" />
</Listeners>
</ext:GridPanel>
</form>
</body>
</html>