Hi All,
I have a custom web part which includes RAD Chart control.
Chart is created dynamically as per the web part configuration settings.
We have a data table as shown in below figure, which is used as chart's data source.
|
Status |
ADMIN |
ATL-API |
BACKEND |
DESKTOP |
|
CLOSED |
|
|
3 |
1 |
|
DEFERRED |
|
2 |
12 |
|
|
NOT A BUG |
1 |
12 |
23 |
I create a multiple series chart (Type - Bar).
For each column (column 1 and onward), a new series is created. Series name is same as column name.
Series DataYColumn is set as column name.
Name of first column is set in 'radChartObj.PlotArea.XAxis.DataLabelsColumn' value.
Then data is bind with chart.
Please refer the following code for details:
***************************************************************************************************************************
// Set chart's skin
radChartObj.Skin = "Vista";
radChartObj.Width = new Unit("600 px");
// Set Chart's attributes.
radChartObj.AutoLayout = true;
radChartObj.IntelligentLabelsEnabled = true;
radChartObj.DefaultType = ChartSeriesType.Bar;
// Set chart's data source.
radChartObj.DataSource = chartingDataTable;
// Set chart's x-axis data labels column name.
radChartObj.PlotArea.XAxis.DataLabelsColumn = chartingDataTable.Columns[0].ColumnName;
// For each column (column 1 and onward), add a new series.
for (int colIndex = 1; colIndex < chartingDataTable.Columns.Count; colIndex++)
{
string columnName = chartingDataTable.Columns[colIndex].ColumnName;
// Prepare chart series name.
string seriesName = columnName;
// Create chart series.
ChartSeries chartSeriesObj = new ChartSeries(seriesName);
// Set chart series' type and its DataYColumn name.
chartSeriesObj.Type = ChartSeriesType.Bar;
chartSeriesObj.DataYColumn = columnName;
// Set chart series' tooltip.
chartSeriesObj.ActiveRegionToolTip = "#SERIES: #Y";
// Set chart series' empty value mode as 'Zero'.
chartSeriesObj.Appearance.EmptyValue.Mode = Telerik.Charting.Styles.EmtyValuesMode.Zero;
// Add chart series to chart object.
radChartObj.Series.Add(chartSeriesObj);
}
// Bind data with chart.
radChartObj.DataBind();
***************************************************************************************************************************
If i create a multiple series chart for more values (like 12 series) i.e. data table has more than 10 columns.
Also, first column of data table has 8-9 values.
Then X-Axis labels overlap each other.
If i set radChartObj.AutoTextWrap = true, so that X-Axis labels do not overlap each other, then Web Part page in which my web part is added, takes too much time to load the page and finally, Request Timed Out error occurs.
If i increase the time out value, then page is loaded successfully but it takes a lot to load.
Page should not take more time to load.
Please suggest a solution and let me know why page takes too much time to load if data table size increases.
| <telerik:RadGrid |
| ID="RadGrid1" |
| runat="server" |
| DataSourceID="SQLETAB" |
| Skin="Office2007" |
| GridLines="None" |
| autogeneratecolumns="false" |
| AllowAutomaticInserts="true" |
| AllowAutomaticUpdates="True" |
| AllowAutomaticDeletes="true" |
| HorizontalAlign=left |
| EditFormSettings-FormmaintableStyle-HorizontalAlign=Left |
| Width="98%" |
| > |
| <PagerStyle |
| NextPageText="Suivant" PrevPageText="Précédent" Mode="NextPrevAndNumeric" |
| NextPagesToolTip="Pages suivante" |
| NextPageToolTip="Page suivante" |
| PrevPagesToolTip="Pages précédente" |
| PrevPageToolTip="Page précédente"/> |
| <HierarchySettings ExpandTooltip="Voir les usagers pour votre établissement" CollapseTooltip ="Revenir à votre établissement" /> |
| <MasterTableView |
| Name="MTVUsager" |
| AllowAutomaticInserts=true |
| AllowAutomaticDeletes=true |
| AllowAutomaticUpdates=true |
| DataSourceID="SQLETAB" |
| DataKeyNames="NO_ETAB" |
| CommandItemSettings-AddNewRecordText="Ajouter un établissement" |
| CommandItemSettings-RefreshText="Rafraichir" |
| EditFormSettings-EditColumn-CancelText="Annuler" |
| EditFormSettings-EditColumn-EditText="Modifier" |
| EditFormSettings-EditColumn-UpdateText="Mise à jour" |
| HorizontalAlign=Left |
| CommandItemDisplay=Top |
| EditFormSettings-FormMainTableStyle-HorizontalAlign=Left |
| EditFormSettings-FormTableItemStyle-HorizontalAlign=Left |
| EditFormSettings-FormTableAlternatingItemStyle-HorizontalAlign=Left> |
| <ExpandCollapseColumn> |
| <HeaderStyle Width="20px" /> |
| </ExpandCollapseColumn> |
| <Columns> |
| <telerik:GridBoundColumn |
| SortExpression="TYPE_ECOLE" |
| HeaderText="TYPE_ECOLE" |
| DataField="TYPE_ECOLE" |
| UniqueName="TYPE_ECOLE1" |
| visible="false" |
| readonly="true"> |
| </telerik:GridBoundColumn> |
| <telerik:GridBoundColumn |
| SortExpression="NO_ORG" |
| HeaderText="NO_ORG" |
| DataField="NO_ORG" |
| UniqueName="NO_ORG" Visible=false ReadOnly=true> |
| <ItemStyle HorizontalAlign=Left /> |
| </telerik:GridBoundColumn> |
| <telerik:GridEditCommandColumn |
| ButtonType="ImageButton" |
| UniqueName="EditCommandColumn" EditText="Modifier" > |
| </telerik:GridEditCommandColumn> |
| <telerik:GridButtonColumn |
| ConfirmText="Supprimer cet établissement?" |
| ConfirmDialogType="RadWindow" |
| ConfirmTitle="Supprimer" |
| ButtonType="ImageButton" |
| CommandName="Delete" |
| Text="Supprimer" |
| UniqueName="DeleteColumnEtab"> |
| <ItemStyle HorizontalAlign="Center" /> |
| </telerik:GridButtonColumn> |
| <telerik:GridBoundColumn |
| SortExpression="SIGLE" |
| HeaderText="Unité administrative" |
| DataField="SIGLE" |
| UniqueName="SIGLE"> |
| <ItemStyle HorizontalAlign=Left /> |
| </telerik:GridBoundColumn> |
| <telerik:GridBoundColumn |
| SortExpression="DESCR" |
| HeaderText="Nom de l'établissement" |
| DataField="DESCR" |
| UniqueName="DESCR"> |
| <ItemStyle HorizontalAlign=Left /> |
| </telerik:GridBoundColumn> |
| </Columns> |
| <DetailTables> |
| <telerik:GridTableView |
| Name="DTVUSAGER" |
| DataSourceID="SqlUSAGER" |
| DataKeyNames="NO_IDENT" |
| AllowAutomaticDeletes="True" |
| AllowAutomaticInserts="true" |
| AllowAutomaticUpdates="True" |
| CommandItemDisplay="Bottom" |
| CommandItemSettings-AddNewRecordText="Ajouter un usager" |
| CommandItemSettings-RefreshText="Rafraichir" |
| EditFormSettings-EditColumn-CancelText="Annuler" |
| EditFormSettings-EditColumn-InsertText="Ajouter" |
| EditFormSettings-EditColumn-EditText="Modifier" |
| EditFormSettings-EditColumn-UpdateText="Mise à jour" |
| EditFormSettings-EditColumn-HeaderButtonType="PushButton" |
| NoDetailRecordsText="Il n'y a aucun usager pour cet établissement." |
| EditMode="EditForms" > |
| <ExpandCollapseColumn> |
| <HeaderStyle Width="20px" /> |
| </ExpandCollapseColumn> |
| <ParentTableRelation> |
| <telerik:GridRelationFields DetailKeyField="NO_ETAB" MasterKeyField="NO_ETAB" /> |
| </ParentTableRelation> |
| <Columns> |
| <telerik:GridTemplateColumn UniqueName="Template3" HeaderText="Confirmer"> |
| <ItemTemplate> |
| <asp:LinkButton ID="LlGenererMotDepasse" CommandName="RegenererMotPasse" runat="server">Regénérer mot de passe</asp:LinkButton> |
| </ItemTemplate> |
| </telerik:GridTemplateColumn> |
| <telerik:GridEditCommandColumn |
| ButtonType="ImageButton" |
| UniqueName="EditCommandColumn" |
| EditText="Modifier"> |
| </telerik:GridEditCommandColumn> |
| <telerik:GridButtonColumn |
| ConfirmText="Supprimer cet usager?" |
| ConfirmDialogType="RadWindow" |
| ConfirmTitle="Supprimer" |
| ButtonType="ImageButton" |
| CommandName="Delete" |
| Text="Supprimer" |
| UniqueName="DeleteColumnDomaine"> |
| <ItemStyle HorizontalAlign="Center" /> |
| </telerik:GridButtonColumn> |
| <telerik:GridBoundColumn |
| SortExpression="NO_IDENT" |
| HeaderText="NO_IDENT" |
| DataField="NO_IDENT" |
| UniqueName="NO_IDENT" |
| ReadOnly=true |
| Visible=false> |
| </telerik:GridBoundColumn> |
| <telerik:GridBoundColumn |
| SortExpression="NOM" |
| HeaderText="Nom" |
| DataField="NOM" |
| UniqueName="NOM"> |
| </telerik:GridBoundColumn> |
| <telerik:GridBoundColumn |
| SortExpression="CODE_COURRIEL" |
| HeaderText="Code de courriel" |
| DataField="CODE_COURRIEL" |
| UniqueName="CODE_COURRIEL"> |
| </telerik:GridBoundColumn> |
| <telerik:GridBoundColumn |
| SortExpression="COURRIEL" |
| HeaderText="Courriel" |
| DataField="COURRIEL" |
| UniqueName="COURRIEL"> |
| </telerik:GridBoundColumn> |
| <telerik:GridDropDownColumn |
| DataSourceID="XmlDSType" |
| ListTextField="Text" |
| ListValueField="Value" |
| UniqueName="Type" |
| SortExpression="Type" |
| HeaderText="Type" |
| DropDownControlType="RadComboBox" |
| DataField="TYPE"> |
| </telerik:GridDropDownColumn> |
| <telerik:GridBoundColumn |
| SortExpression="PANIER_MAX" |
| HeaderText="Panier max" |
| DataField="PANIER_MAX" |
| UniqueName="PANIER_MAX"> |
| </telerik:GridBoundColumn> |
| <telerik:GridTemplateColumn EditFormHeaderTextFormat=" " HeaderText="d!" Visible=false> |
| <EditItemTemplate> |
| <asp:Label ID="Label1" runat=server visible=true Text="Le mot de passe de l'usager sera générer automatiquement lors d'un ajout. Celui-ci sera envoyé à la personne concerné par courriel."></asp:Label> |
| </EditItemTemplate> |
| </telerik:GridTemplateColumn> |
| </Columns> |
| </telerik:GridTableView> |
| </DetailTables> |
| </MasterTableView> |
| </telerik:RadGrid> |
| protected void grdEvents_ItemDataBound(object sender, GridItemEventArgs e) |
| { |
| if (e.Item.ItemType == GridItemType.Item || e.Item.ItemType == GridItemType.AlternatingItem) |
| { |
| GridDataItem item = (GridDataItem)e.Item; |
| if (e.Item.OwnerTableView.Name == "EventsGrid")//This is the mastertable |
| { |
| ProtocolRegimenEvent preItem = (ProtocolRegimenEvent)e.Item.DataItem; |
| TableCell td = item[grdEvents.Columns.FindByUniqueNameSafe("colDelete")]; |
| if (preItem.EventTypeId != (int)Enums.EventTypes.Scheduled) |
| { |
| if (td != null && td.Controls.Count > 0) |
| { |
| td.Controls.RemoveAt(0); |
| Label lbl = new Label(); |
| lbl.Text = "-"; |
| td.Controls.Add(lbl); |
| } |
| if (preItem.EventTypeId == (int)Enums.EventTypes.Unscheduled) |
| { |
| td = item[grdEvents.Columns.FindByUniqueNameSafe("colEdit")]; |
| if (td != null && td.Controls.Count > 0) |
| { |
| td.Controls.RemoveAt(0); |
| Label lbl = new Label(); |
| lbl.Text = "-"; |
| td.Controls.Add(lbl); |
| } |
| } |
| } |
| } |
| else //This is a detailtable |
| { |
| ProtocolRegimenEventForm preItem = (ProtocolRegimenEventForm)e.Item.DataItem; TableCell td = e.Item.OwnerTableView.ParentItem[grdEvents.Columns.FindByUniqueNameSafe("colDelete")]; if (preItem.EventTypeId != (int)Enums.EventTypes.Scheduled) { //remove buttons } |
| } |
| } |
| } |
