Hi
I'm trying to implement client side hierarchial RadGrids as described here:
http://blogs.telerik.com/vladimirenchev/posts/08-09-09/how-to-telerik-radgrid-master-detail-client-side-data-binding-using-linq-to-sql-and-webservice.aspx
This works great for 2 levels of hierarchy (RadGrid1 has a NestedView in which RadGrid2 is placed).
But as soon as I try to implement third level of hierarchy and add a RadGrid3 inside of NestedView of RadGrid2 I get dramatically worse performance - about 2 minutes to get page rendered (against 7 seconds for page with 2 levels). Page contains just pure markup, without any data bound.
Please advise, what can be done in order to workaround this performance issue.
These are the test samples I've made:
First one is a quite fast 2 levels case (contains just a label inside of RadGrid2 NestedView), second is a slow one with RadGrid3 instead of label:
Label:
RadGrid:
I'm trying to implement client side hierarchial RadGrids as described here:
http://blogs.telerik.com/vladimirenchev/posts/08-09-09/how-to-telerik-radgrid-master-detail-client-side-data-binding-using-linq-to-sql-and-webservice.aspx
This works great for 2 levels of hierarchy (RadGrid1 has a NestedView in which RadGrid2 is placed).
But as soon as I try to implement third level of hierarchy and add a RadGrid3 inside of NestedView of RadGrid2 I get dramatically worse performance - about 2 minutes to get page rendered (against 7 seconds for page with 2 levels). Page contains just pure markup, without any data bound.
Please advise, what can be done in order to workaround this performance issue.
These are the test samples I've made:
First one is a quite fast 2 levels case (contains just a label inside of RadGrid2 NestedView), second is a slow one with RadGrid3 instead of label:
Label:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="HierarchyTest-Label.aspx.cs" Inherits="HierarchyTest" %>
<%@ Register TagPrefix="telerik" Namespace="Telerik.Web.UI" Assembly="Telerik.Web.UI" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<
html
xmlns
=
"http://www.w3.org/1999/xhtml"
>
<
head
runat
=
"server"
>
<
title
></
title
>
</
head
>
<
body
>
<
script
type
=
"text/javascript"
language
=
"javascript"
>
RadGrid1_Command = function () {
console.log('RadGrid1_Command');
}
RadGrid2_Command = function () {
console.log('RadGrid2_Command');
}
RadGrid3_Command = function () {
console.log('RadGrid3_Command');
}
RadGrid1_HierarchyExpanding = function (sender, args) {
console.log('RadGrid1_HierarchyExpanding');
}
RadGrid2_HierarchyExpanding = function (sender, args) {
console.log('RadGrid2_HierarchyExpanding');
}
</
script
>
<
form
id
=
"form1"
runat
=
"server"
>
<
div
>
<
asp:ScriptManager
ID
=
"ScriptManager1"
runat
=
"server"
/>
<
telerik:RadGrid
ID
=
"RadGrid1"
runat
=
"server"
AllowPaging
=
"True"
AllowSorting
=
"False"
GridLines
=
"None"
PageSize
=
"10"
Width
=
"97%"
Skin
=
"Windows7"
>
<
ClientSettings
AllowColumnHide
=
"True"
AllowRowHide
=
"True"
AllowColumnsReorder
=
"True"
ReorderColumnsOnClient
=
"True"
>
<
Resizing
EnableRealTimeResize
=
"True"
ResizeGridOnColumnResize
=
"True"
AllowColumnResize
=
"true"
ClipCellContentOnResize
=
"false"
></
Resizing
>
<
ClientEvents
OnCommand
=
"RadGrid1_Command"
OnHierarchyExpanding
=
"RadGrid1_HierarchyExpanding"
/>
</
ClientSettings
>
<
MasterTableView
TableLayout
=
"Fixed"
AutoGenerateColumns
=
"false"
DataKeyNames
=
"ServerId"
ClientDataKeyNames
=
"ServerId"
HierarchyLoadMode
=
"Client"
>
<
Columns
>
<
telerik:GridBoundColumn
DataType
=
"System.String"
DataField
=
"Server"
HeaderText
=
"Server"
UniqueName
=
"Server"
/>
<
telerik:GridBoundColumn
DataType
=
"System.String"
DataField
=
"Username"
HeaderText
=
"Username"
UniqueName
=
"Username"
/>
<
telerik:GridBoundColumn
DataType
=
"System.String"
DataField
=
"ServerId"
UniqueName
=
"ServerId"
Visible
=
"false"
/>
</
Columns
>
<
NestedViewTemplate
>
<
telerik:RadGrid
runat
=
"server"
ID
=
"RadGrid2"
AllowPaging
=
"False"
AllowSorting
=
"False"
GridLines
=
"None"
Width
=
"97%"
Skin
=
"Windows7"
>
<
ClientSettings
AllowColumnHide
=
"True"
AllowRowHide
=
"True"
AllowColumnsReorder
=
"True"
ReorderColumnsOnClient
=
"True"
>
<
Resizing
EnableRealTimeResize
=
"True"
ResizeGridOnColumnResize
=
"True"
AllowColumnResize
=
"true"
ClipCellContentOnResize
=
"false"
></
Resizing
>
<
ClientEvents
OnCommand
=
"RadGrid2_Command"
OnHierarchyExpanding
=
"RadGrid2_HierarchyExpanding"
/>
</
ClientSettings
>
<
MasterTableView
TableLayout
=
"Fixed"
AutoGenerateColumns
=
"false"
ClientDataKeyNames
=
"Id"
HierarchyLoadMode
=
"Client"
>
<
Columns
>
<
telerik:GridImageColumn
DataType
=
"System.String"
HeaderText
=
"St"
DataImageUrlFormatString
=
"Images\{0}.gif"
DataImageUrlFields
=
"Active"
ImageWidth
=
"16px"
ImageHeight
=
"16px"
HeaderStyle-Width
=
"26px"
/>
<
telerik:GridBoundColumn
DataType
=
"System.String"
DataField
=
"JobName"
UniqueName
=
"JobName"
HeaderText
=
"Job Name"
HeaderStyle-Width
=
"170px"
/>
<
telerik:GridBoundColumn
DataType
=
"System.String"
DataField
=
"Description"
UniqueName
=
"Description"
HeaderText
=
"Description"
HeaderStyle-Width
=
"250px"
/>
<
telerik:GridBoundColumn
DataType
=
"System.String"
DataField
=
"Result"
UniqueName
=
"Result"
HeaderText
=
"Result"
/>
<
telerik:GridBoundColumn
DataType
=
"System.String"
DataField
=
"NextRunStr"
UniqueName
=
"NextRunStr"
HeaderText
=
"Next run"
HeaderStyle-Width
=
"120px"
/>
<
telerik:GridBoundColumn
DataType
=
"System.String"
DataField
=
"DateCreatedStr"
UniqueName
=
"DateCreatedStr"
HeaderText
=
"Date created"
HeaderStyle-Width
=
"120px"
/>
<
telerik:GridBoundColumn
DataType
=
"System.String"
DataField
=
"Status"
UniqueName
=
"Status"
HeaderText
=
"Status"
/>
<
telerik:GridBoundColumn
DataType
=
"System.String"
DataField
=
"Id"
UniqueName
=
"ID"
Visible
=
"false"
/>
</
Columns
>
<
NestedViewTemplate
>
<
asp:Label
runat
=
"server"
Text
=
"Level 3"
/>
</
NestedViewTemplate
>
</
MasterTableView
>
</
telerik:RadGrid
>
</
NestedViewTemplate
>
</
MasterTableView
>
</
telerik:RadGrid
>
</
div
>
</
form
>
</
body
>
</
html
>
RadGrid:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="HierarchyTest-Label.aspx.cs" Inherits="HierarchyTest" %>
<%@ Register TagPrefix="telerik" Namespace="Telerik.Web.UI" Assembly="Telerik.Web.UI" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<
html
xmlns
=
"http://www.w3.org/1999/xhtml"
>
<
head
id
=
"Head1"
runat
=
"server"
>
<
title
></
title
>
</
head
>
<
body
>
<
script
type
=
"text/javascript"
language
=
"javascript"
>
RadGrid1_Command = function () {
console.log('RadGrid1_Command');
}
RadGrid2_Command = function () {
console.log('RadGrid2_Command');
}
RadGrid3_Command = function () {
console.log('RadGrid3_Command');
}
RadGrid1_HierarchyExpanding = function (sender, args) {
console.log('RadGrid1_HierarchyExpanding');
}
RadGrid2_HierarchyExpanding = function (sender, args) {
console.log('RadGrid2_HierarchyExpanding');
}
</
script
>
<
form
id
=
"form1"
runat
=
"server"
>
<
div
>
<
asp:ScriptManager
ID
=
"ScriptManager1"
runat
=
"server"
/>
<
telerik:RadGrid
ID
=
"RadGrid1"
runat
=
"server"
AllowPaging
=
"True"
AllowSorting
=
"False"
GridLines
=
"None"
PageSize
=
"10"
Width
=
"97%"
Skin
=
"Windows7"
>
<
ClientSettings
AllowColumnHide
=
"True"
AllowRowHide
=
"True"
AllowColumnsReorder
=
"True"
ReorderColumnsOnClient
=
"True"
>
<
Resizing
EnableRealTimeResize
=
"True"
ResizeGridOnColumnResize
=
"True"
AllowColumnResize
=
"true"
ClipCellContentOnResize
=
"false"
></
Resizing
>
<
ClientEvents
OnCommand
=
"RadGrid1_Command"
OnHierarchyExpanding
=
"RadGrid1_HierarchyExpanding"
/>
</
ClientSettings
>
<
MasterTableView
TableLayout
=
"Fixed"
AutoGenerateColumns
=
"false"
DataKeyNames
=
"ServerId"
ClientDataKeyNames
=
"ServerId"
HierarchyLoadMode
=
"Client"
>
<
Columns
>
<
telerik:GridBoundColumn
DataType
=
"System.String"
DataField
=
"Server"
HeaderText
=
"Server"
UniqueName
=
"Server"
/>
<
telerik:GridBoundColumn
DataType
=
"System.String"
DataField
=
"Username"
HeaderText
=
"Username"
UniqueName
=
"Username"
/>
<
telerik:GridBoundColumn
DataType
=
"System.String"
DataField
=
"ServerId"
UniqueName
=
"ServerId"
Visible
=
"false"
/>
</
Columns
>
<
NestedViewTemplate
>
<
telerik:RadGrid
runat
=
"server"
ID
=
"RadGrid2"
AllowPaging
=
"False"
AllowSorting
=
"False"
GridLines
=
"None"
Width
=
"97%"
Skin
=
"Windows7"
>
<
ClientSettings
AllowColumnHide
=
"True"
AllowRowHide
=
"True"
AllowColumnsReorder
=
"True"
ReorderColumnsOnClient
=
"True"
>
<
Resizing
EnableRealTimeResize
=
"True"
ResizeGridOnColumnResize
=
"True"
AllowColumnResize
=
"true"
ClipCellContentOnResize
=
"false"
></
Resizing
>
<
ClientEvents
OnCommand
=
"RadGrid2_Command"
OnHierarchyExpanding
=
"RadGrid2_HierarchyExpanding"
/>
</
ClientSettings
>
<
MasterTableView
TableLayout
=
"Fixed"
AutoGenerateColumns
=
"false"
ClientDataKeyNames
=
"Id"
HierarchyLoadMode
=
"Client"
>
<
Columns
>
<
telerik:GridImageColumn
DataType
=
"System.String"
HeaderText
=
"St"
DataImageUrlFormatString
=
"Images\{0}.gif"
DataImageUrlFields
=
"Active"
ImageWidth
=
"16px"
ImageHeight
=
"16px"
HeaderStyle-Width
=
"26px"
/>
<
telerik:GridBoundColumn
DataType
=
"System.String"
DataField
=
"JobName"
UniqueName
=
"JobName"
HeaderText
=
"Job Name"
HeaderStyle-Width
=
"170px"
/>
<
telerik:GridBoundColumn
DataType
=
"System.String"
DataField
=
"Description"
UniqueName
=
"Description"
HeaderText
=
"Description"
HeaderStyle-Width
=
"250px"
/>
<
telerik:GridBoundColumn
DataType
=
"System.String"
DataField
=
"Result"
UniqueName
=
"Result"
HeaderText
=
"Result"
/>
<
telerik:GridBoundColumn
DataType
=
"System.String"
DataField
=
"NextRunStr"
UniqueName
=
"NextRunStr"
HeaderText
=
"Next run"
HeaderStyle-Width
=
"120px"
/>
<
telerik:GridBoundColumn
DataType
=
"System.String"
DataField
=
"DateCreatedStr"
UniqueName
=
"DateCreatedStr"
HeaderText
=
"Date created"
HeaderStyle-Width
=
"120px"
/>
<
telerik:GridBoundColumn
DataType
=
"System.String"
DataField
=
"Status"
UniqueName
=
"Status"
HeaderText
=
"Status"
/>
<
telerik:GridBoundColumn
DataType
=
"System.String"
DataField
=
"Id"
UniqueName
=
"ID"
Visible
=
"false"
/>
</
Columns
>
<
NestedViewTemplate
>
<
telerik:RadGrid
runat
=
"server"
ID
=
"RadGrid3"
AllowPaging
=
"False"
AllowSorting
=
"False"
GridLines
=
"None"
>
<
ClientSettings
AllowColumnHide
=
"False"
AllowRowHide
=
"False"
AllowColumnsReorder
=
"False"
ReorderColumnsOnClient
=
"False"
>
<
ClientEvents
OnCommand
=
"RadGrid3_Command"
/>
</
ClientSettings
>
<
MasterTableView
TableLayout
=
"Fixed"
AutoGenerateColumns
=
"false"
DataKeyNames
=
"TaskId"
>
<
Columns
>
<
telerik:GridImageColumn
DataType
=
"System.String"
HeaderText
=
"St"
DataImageUrlFormatString
=
"Images\{0}.gif"
DataImageUrlFields
=
"Active"
ImageWidth
=
"16px"
ImageHeight
=
"16px"
HeaderStyle-Width
=
"26px"
/>
<
telerik:GridBoundColumn
DataType
=
"System.String"
DataField
=
"TaskName"
UniqueName
=
"TaskName"
HeaderText
=
"Task Name"
HeaderStyle-Width
=
"170px"
/>
<
telerik:GridBoundColumn
DataType
=
"System.String"
DataField
=
"TaskId"
UniqueName
=
"TaskId"
HeaderStyle-Width
=
"170px"
Visible
=
"False"
/>
</
Columns
>
</
MasterTableView
>
</
telerik:RadGrid
>
</
NestedViewTemplate
>
</
MasterTableView
>
</
telerik:RadGrid
>
</
NestedViewTemplate
>
</
MasterTableView
>
</
telerik:RadGrid
>
</
div
>
</
form
>
</
body
>
</
html
>