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.