Dear Telerik Team,
I can't get HierarchyLoadMode="ServerOnDemand" to work. Could you please point me a direction where to search for solving the problem ?
Here is my code : the RadGridProgramme contains 1.000 records. It contains Programs. Each Program contains 500 Projects. If I bind everything in the same time, ServerBind, it's very slow. That's why I would like to bind each RadGridProjetNested on ItemExpand command. But it doesn't work. In any of my trials, RadGridProjetNested bind in the first load, then bind another time on ItemExpand command...
Aspx :
Aspx.cs :
I abstracted some logic to make the code more clear but that's it.
Please help I'm stuck !!
S.F.
I can't get HierarchyLoadMode="ServerOnDemand" to work. Could you please point me a direction where to search for solving the problem ?
Here is my code : the RadGridProgramme contains 1.000 records. It contains Programs. Each Program contains 500 Projects. If I bind everything in the same time, ServerBind, it's very slow. That's why I would like to bind each RadGridProjetNested on ItemExpand command. But it doesn't work. In any of my trials, RadGridProjetNested bind in the first load, then bind another time on ItemExpand command...
Aspx :
<%@ Page Language="C#" MasterPageFile="~/Pages/Master/MasterPage.master" AutoEventWireup="true"
CodeFile="Programme.aspx.cs" Inherits="Pages_Projets_Programme" Title="Programme" %>
<
asp:Content
ID
=
"Content1"
ContentPlaceHolderID
=
"head"
runat
=
"Server"
>
</
asp:Content
>
<
asp:Content
ID
=
"Content2"
ContentPlaceHolderID
=
"ContentPlaceHolder1"
runat
=
"Server"
>
<
telerik:RadAjaxManager
ID
=
"RessourceManager"
runat
=
"server"
>
<
AjaxSettings
>
<
telerik:AjaxSetting
AjaxControlID
=
"RessourceManager"
>
<
UpdatedControls
>
<
telerik:AjaxUpdatedControl
ControlID
=
"RadGridProgramme"
LoadingPanelID
=
"RadAjaxLoadingPanel1"
/>
</
UpdatedControls
>
</
telerik:AjaxSetting
>
<
telerik:AjaxSetting
AjaxControlID
=
"RadGridProgramme"
>
<
UpdatedControls
>
<
telerik:AjaxUpdatedControl
ControlID
=
"RadGridProgramme"
LoadingPanelID
=
"RadAjaxLoadingPanel1"
/>
</
UpdatedControls
>
</
telerik:AjaxSetting
>
<
telerik:AjaxSetting
AjaxControlID
=
"RadGridProjetNested"
>
<
UpdatedControls
>
<
telerik:AjaxUpdatedControl
ControlID
=
"RadGridProjetNested"
LoadingPanelID
=
"RadAjaxLoadingPanel1"
/>
</
UpdatedControls
>
</
telerik:AjaxSetting
>
</
AjaxSettings
>
</
telerik:RadAjaxManager
>
<
fieldset
>
<
telerik:RadGrid
ID
=
"RadGridProgramme"
runat
=
"server"
AutoGenerateColumns
=
"False"
DataSourceID
=
"SqlDataSourceProgramme"
GridLines
=
"None"
ShowFooter
=
"True"
AllowSorting
=
"True"
EnableLinqExpressions
=
"False"
OnItemCreated
=
"RadGridProgramme_ItemCreated"
OnDataBound
=
"RadGridProgramme_DataBound"
OnItemCommand
=
"RadGridProgramme_ItemCommand"
EnableEmbeddedSkins
=
"false"
>
<
MasterTableView
DataKeyNames
=
"IdProgramme"
DataSourceID
=
"SqlDataSourceProgramme"
ShowHeader
=
"true"
AutoGenerateColumns
=
"False"
AllowPaging
=
"true"
HierarchyLoadMode
=
"ServerOnDemand"
CommandItemDisplay
=
"Top"
Name
=
"Master"
>
<
NestedViewTemplate
>
<
asp:Panel
runat
=
"server"
ID
=
"InnerContainer"
Visible
=
"false"
class
=
"PanelTache"
>
<
asp:Label
ID
=
"IdprogProjet"
Font-Bold
=
"true"
Font-Italic
=
"true"
Text='<%# Eval("IdProgramme") %>'
Visible="false" runat="server" />
<
telerik:RadGrid
AllowSorting
=
"False"
DataSourceID
=
"ProjectsDataSource"
AutoGenerateColumns
=
"False"
EnableEmbeddedSkins
=
"false"
EnableLinqExpressions
=
"false"
GridLines
=
"None"
ID
=
"RadGridProjetNested"
OnItemCommand
=
"RadGridProjetNested_ItemCommand"
OnItemCreated
=
"RadGridProjetNested_ItemCreated"
runat
=
"server"
ShowFooter
=
"true"
OnItemDataBound
=
"RadGridProjetNested_ItemDataBound"
>
<
MasterTableView
ShowHeader
=
"true"
AutoGenerateColumns
=
"False"
AllowPaging
=
"false"
HierarchyLoadMode
=
"ServerOnDemand"
CommandItemDisplay
=
"Top"
DataKeyNames
=
"IdProjet"
RetrieveAllDataFields
=
"true"
AdditionalDataFieldNames
=
"IdProgramme"
Name
=
"RadGridProjetNestedMDView"
>
<
ParentTableRelation
>
<
telerik:GridRelationFields
DetailKeyField
=
"IdProjet"
MasterKeyField
=
"IdProgramme"
/>
</
ParentTableRelation
>
<
Columns
>
<
telerik:GridBoundColumn
DataField
=
"Libelle"
DefaultInsertValue
=
""
HeaderText
=
"Libellé"
SortExpression
=
"Libelle"
UniqueName
=
"Libelle"
/>
</
Columns
>
</
MasterTableView
>
</
telerik:RadGrid
>
<
asp:SqlDataSource
ID
=
"ProjectsDataSource"
runat
=
"server"
ConnectionString="<%$ ConnectionStrings:CSSA %>"
SelectCommand="LIST_Project" SelectCommandType="StoredProcedure">
<
SelectParameters
>
<
asp:SessionParameter
Name
=
"IdRequester"
SessionField
=
"IdUser"
Type
=
"Int32"
/>
<
asp:ControlParameter
ControlID
=
"IdprogProjet"
PropertyName
=
"Text"
Type
=
"String"
Name
=
"IdProgrammeParent"
/>
</
SelectParameters
>
</
asp:SqlDataSource
>
</
asp:Panel
>
</
NestedViewTemplate
>
<
ExpandCollapseColumn
Visible
=
"True"
>
</
ExpandCollapseColumn
>
<
Columns
>
<
telerik:GridBoundColumn
DataField
=
"IdProgramme"
DataType
=
"System.Int32"
DefaultInsertValue
=
""
HeaderText
=
"IdProgramme"
ReadOnly
=
"True"
SortExpression
=
"IdProgramme"
UniqueName
=
"IdProgramme"
Visible
=
"false"
>
</
telerik:GridBoundColumn
>
<
telerik:GridBoundColumn
DataField
=
"Libelle"
DefaultInsertValue
=
""
HeaderText
=
"Libellé"
SortExpression
=
"Libelle"
UniqueName
=
"Libelle"
>
</
telerik:GridBoundColumn
>
</
Columns
>
</
MasterTableView
>
</
telerik:RadGrid
>
</
fieldset
>
<
asp:SqlDataSource
ID
=
"SqlDataSourceProgramme"
runat
=
"server"
ConnectionString="<%$ ConnectionStrings:CSSA %>"
SelectCommand="LIST_Programme" SelectCommandType="StoredProcedure">
<
SelectParameters
>
<
asp:SessionParameter
Name
=
"idRequester"
SessionField
=
"IdUser"
Type
=
"Int32"
/>
</
SelectParameters
>
</
asp:SqlDataSource
>
<
telerik:RadAjaxLoadingPanel
ID
=
"RadAjaxLoadingPanel1"
runat
=
"server"
Skin
=
"Default"
>
</
telerik:RadAjaxLoadingPanel
>
</
asp:Content
>
Aspx.cs :
using
System;
using
System.Collections.Generic;
using
System.Configuration;
using
System.Linq;
using
System.Web;
using
System.Web.UI;
using
System.Web.UI.WebControls;
using
Telerik.Web.UI;
public
partial
class
Pages_Projets_Programme : Page
{
/// <summary>
/// Handles the Load event of the Page control.
/// </summary>
/// <param name="sender">The source of the event.</param>
/// <param name="e">The <see cref="System.EventArgs"/> instance containing the event data.</param>
protected
void
Page_Load(
object
sender, EventArgs e)
{
}
/// <summary>
/// Handles the DataBound event of the RadGridProgramme control.
/// </summary>
/// <param name="sender">The source of the event.</param>
/// <param name="e">The <see cref="System.EventArgs"/> instance containing the event data.</param>
protected
void
RadGridProgramme_DataBound(
object
sender, EventArgs e)
{
if
(!String.IsNullOrEmpty(SessionObject.IndexItemExpanded))
{
foreach
(String strIndex
in
SessionObject.IndexItemExpanded.Split(
'-'
))
{
if
(!String.IsNullOrEmpty(strIndex))
{
Int32 Index = Convert.ToInt32(strIndex);
RadGridProgramme.Items[Index].Expanded =
true
;
RadGridProgramme.Items[Index].ChildItem.FindControl(
"InnerContainer"
).Visible =
true
;
}
}
}
}
/// <summary>
/// Display the list of associated projects
/// </summary>
/// <param name="source"></param>
/// <param name="e"></param>
protected
void
RadGridProgramme_ItemCommand(
object
source, GridCommandEventArgs e)
{
// Multi-Items stays expanded after Rebind()
if
(e.CommandName == RadGrid.ExpandCollapseCommandName)
{
if
(!e.Item.Expanded)
{
SessionObject.IndexItemExpanded +=
"-"
+ e.Item.ItemIndexHierarchical;
}
else
{
if
(!String.IsNullOrEmpty(SessionObject.IndexItemExpanded))
{
SessionObject.IndexItemExpanded = SessionObject.IndexItemExpanded.Replace(
"-"
+ e.Item.ItemIndexHierarchical,
""
);
}
}
e.Item.Selected = !e.Item.Selected;
((GridDataItem)e.Item).ChildItem.FindControl(
"InnerContainer"
).Visible =
!((GridDataItem)e.Item).ChildItem.FindControl(
"InnerContainer"
).Visible;
}
if
(e.CommandName == RadGrid.PageCommandName)
{
SessionObject.IndexItemExpanded =
null
;
}
}
/// <summary>
///
/// </summary>
/// <param name="sender">The source of the event.</param>
/// <param name="e">The <see cref="Telerik.Web.UI.GridItemEventArgs"/> instance containing the event data.</param>
protected
void
RadGridProgramme_ItemCreated(
object
sender, GridItemEventArgs e)
{
}
/// <summary>
///
/// </summary>
/// <param name="source"></param>
/// <param name="e"></param>
protected
void
RadGridProjetNested_ItemCommand(
object
sender, GridCommandEventArgs e)
{
}
/// <summary>
/// Handles the ItemCreated event of the RadGridProjetNested control.
/// ItemCreated is fired before the item is data-bound. Thus no data is still in the cells' text or input controls.
/// </summary>
/// <param name="sender">The source of the event.</param>
/// <param name="e">The <see cref="Telerik.Web.UI.GridItemEventArgs"/> instance containing the event data.</param>
protected
void
RadGridProjetNested_ItemCreated(
object
sender, GridItemEventArgs e)
{
}
/// <summary>
/// Handles the ItemDataBound event of the RadGridProjetNested control.
/// </summary>
/// <param name="sender">The source of the event.</param>
/// <param name="e">The <see cref="Telerik.Web.UI.GridItemEventArgs"/> instance containing the event data.</param>
protected
void
RadGridProjetNested_ItemDataBound(
object
sender, GridItemEventArgs e)
{
}
}
I abstracted some logic to make the code more clear but that's it.
Please help I'm stuck !!
S.F.