hi,
i have been following this example to build a chart with drill down functionality.
https://demos.telerik.com/aspnet-ajax/htmlchart/examples/drilldownchart/defaultcs.aspx
<div class="dashboard_div_doublewidth">
Business Unit Task Distribution
<telerik:RadCodeBlock ID="codeBlock" runat="server">
<script type="text/javascript">
function OnClientSeriesClicked(sender, args) {
if (args.get_seriesName() != "Users") $find("<%= RadAjaxManager1.ClientID %>").ajaxRequest(args.get_category());
}
</script>
</telerik:RadCodeBlock>
<telerik:RadAjaxManager ID="RadAjaxManager1" runat="server" OnAjaxRequest="RadAjaxManager1_AjaxRequest">
<AjaxSettings>
<telerik:AjaxSetting AjaxControlID="RadAjaxManager1">
<UpdatedControls>
<telerik:AjaxUpdatedControl ControlID="RadHtmlChart4" LoadingPanelID="LoadingPanel1">
</telerik:AjaxUpdatedControl>
</UpdatedControls>
</telerik:AjaxSetting>
<telerik:AjaxSetting AjaxControlID="Refresh">
<UpdatedControls>
<telerik:AjaxUpdatedControl ControlID="RadHtmlChart4" LoadingPanelID="LoadingPanel1">
</telerik:AjaxUpdatedControl>
</UpdatedControls>
</telerik:AjaxSetting>
</AjaxSettings>
</telerik:RadAjaxManager>
<telerik:RadHtmlChart ID="RadHtmlChart4" runat="server" DataSourceID="SqlDataSource_DrillDownL1"
OnClientSeriesClicked="OnClientSeriesClicked" Height="330px" Skin="Office2010Blue"
Width="750px">
<PlotArea>
<Series>
<telerik:ColumnSeries DataFieldY="TotalTasks" Name="TotalTasks">
<TooltipsAppearance Color="White" />
</telerik:ColumnSeries>
<telerik:ColumnSeries DataFieldY="CompletedTasks" Name="CompletedTasks">
</telerik:ColumnSeries>
<telerik:ColumnSeries DataFieldY="IncompletedTasks" Name="IncompletedTasks">
</telerik:ColumnSeries>
</Series>
<XAxis DataLabelsField="CBUName">
</XAxis>
</PlotArea>
</telerik:RadHtmlChart>
<asp:SqlDataSource ID="SqlDataSource_DrillDownL1" runat="server" ConnectionString="<%$ ConnectionStrings:customerRelationshipIndexDB_FinalConnectionString %>"
SelectCommand="SELECT CBUName, SUM(TotalTasks) AS TotalTasks, SUM(CompletedTasks) AS CompletedTasks, SUM(TotalTasks) - SUM(CompletedTasks) AS IncompletedTasks FROM (SELECT CBUName, COUNT(TaskId) AS TotalTasks, 0 AS CompletedTasks FROM V_ContactsToBeCompleted WHERE (DueDate BETWEEN @start AND @end ) GROUP BY CBUName UNION SELECT CBUName, 0 AS TotalTasks, COUNT(TaskId) AS CompletedTasks FROM V_ContactsToBeCompleted AS V_ContactsToBeCompleted_1 WHERE (DueDate BETWEEN @start AND @end ) AND (IsTaskCompleted = 'true') GROUP BY CBUName) AS t GROUP BY CBUName">
<SelectParameters>
<asp:Parameter Name="start" />
<asp:Parameter Name="end" />
</SelectParameters>
</asp:SqlDataSource>
<asp:HiddenField ID="HiddenField1" runat="server" />
<asp:SqlDataSource ID="SqlDataSource_DrillDownL2" runat="server" ConnectionString="<%$ ConnectionStrings:customerRelationshipIndexDB_FinalConnectionString %>"
SelectCommand="SELECT Brand, SUM(TotalTasks) AS Brand_TotalTasks, SUM(CompletedTasks) AS Brand_CompletedTasks, SUM(TotalTasks) - SUM(CompletedTasks) AS Brand_IncompletedTasks FROM (SELECT Brand, COUNT(TaskId) AS TotalTasks, 0 AS CompletedTasks FROM V_ContactsToBeCompleted WHERE (DueDate BETWEEN @start AND @end ) AND (CBUName = @cbu) GROUP BY Brand UNION SELECT Brand, 0 AS TotalTasks, COUNT(TaskId) AS CompletedTasks FROM V_ContactsToBeCompleted AS V_ContactsToBeCompleted_1 WHERE (DueDate BETWEEN @start AND @end ) AND (IsTaskCompleted = 'true') AND (CBUName = @cbu) GROUP BY Brand) AS t GROUP BY Brand">
<SelectParameters>
<asp:Parameter Name="start" />
<asp:Parameter Name="end" />
<asp:Parameter Name="cbu" />
</SelectParameters>
</asp:SqlDataSource>
<asp:HiddenField ID="HiddenField2" runat="server" />
<asp:SqlDataSource ID="SqlDataSource_DrillDownL3" runat="server"
ConnectionString="<%$ ConnectionStrings:customerRelationshipIndexDB_FinalConnectionString %>"
SelectCommand="SELECT AccountName, SUM(TotalTasks) AS Account_TotalTasks, SUM(CompletedTasks) AS Account_CompletedTasks, SUM(TotalTasks) - SUM(CompletedTasks) AS Account_IncompletedTasks FROM (SELECT AccountName, COUNT(TaskId) AS TotalTasks, 0 AS CompletedTasks FROM V_ContactsToBeCompleted WHERE (DueDate BETWEEN @start AND @end ) AND (CBUName = @cbu) AND (Brand = @brand) GROUP BY AccountName UNION SELECT AccountName, 0 AS TotalTasks, COUNT(TaskId) AS CompletedTasks FROM V_ContactsToBeCompleted AS V_ContactsToBeCompleted_1 WHERE (DueDate BETWEEN @start AND @end ) AND (IsTaskCompleted = 'true') AND (CBUName = @cbu) AND (Brand = @brand) GROUP BY AccountName) AS t GROUP BY AccountName">
<SelectParameters>
<asp:Parameter Name="start" />
<asp:Parameter Name="end" />
<asp:Parameter Name="cbu" />
<asp:Parameter Name="brand" />
</SelectParameters>
</asp:SqlDataSource>
<telerik:RadAjaxLoadingPanel ID="LoadingPanel1" Height="77px" Width="113px" runat="server">
</telerik:RadAjaxLoadingPanel>
<br />
</div>
public void RadAjaxManager1_AjaxRequest(object sender, AjaxRequestEventArgs e)
{
string seriesName = RadHtmlChart4.PlotArea.Series[0].Name;
if (seriesName == "TotalTasks")
{
string cbu = e.Argument;
HiddenField1.Value = cbu;
SqlDataSource_DrillDownL2.SelectParameters[0].DefaultValue = GetStartDate();
SqlDataSource_DrillDownL2.SelectParameters[1].DefaultValue = GetEndDate();
SqlDataSource_DrillDownL2.SelectParameters[2].DefaultValue = cbu;
RadHtmlChart4.PlotArea.XAxis.DataLabelsField = "Brand";
RadHtmlChart4.PlotArea.Series[0].DataFieldY = "Brand_TotalTasks";
RadHtmlChart4.PlotArea.Series[0].Name = "Brand_TotalTasks";
RadHtmlChart4.PlotArea.Series[1].DataFieldY = "Brand_CompletedTasks";
RadHtmlChart4.PlotArea.Series[1].Name = "Brand_CompletedTasks";
RadHtmlChart4.PlotArea.Series[2].DataFieldY = "Brand_IncompletedTasks";
RadHtmlChart4.PlotArea.Series[2].Name = "Brand_IncompletedTasks";
RadHtmlChart4.DataSourceID = "SqlDataSource_DrillDownL2";
}
else
{
if (seriesName == "Brand_TotalTasks")
{
string brand = e.Argument;
HiddenField2.Value = brand;
SqlDataSource_DrillDownL3.SelectParameters[0].DefaultValue = GetStartDate();
SqlDataSource_DrillDownL3.SelectParameters[1].DefaultValue = GetEndDate();
SqlDataSource_DrillDownL3.SelectParameters[2].DefaultValue = HiddenField1.Value;
SqlDataSource_DrillDownL3.SelectParameters[3].DefaultValue = brand;
RadHtmlChart4.PlotArea.XAxis.DataLabelsField = "Brand";
RadHtmlChart4.PlotArea.Series[0].DataFieldY = "Account_TotalTasks";
RadHtmlChart4.PlotArea.Series[0].Name = "Account_TotalTasks";
RadHtmlChart4.PlotArea.Series[1].DataFieldY = "Account_CompletedTasks";
RadHtmlChart4.PlotArea.Series[1].Name = "Account_CompletedTasks";
RadHtmlChart4.PlotArea.Series[2].DataFieldY = "Account_IncompletedTasks";
RadHtmlChart4.PlotArea.Series[2].Name = "Account_IncompletedTasks";
RadHtmlChart4.DataSourceID = "SqlDataSource_DrillDownL3";
}
else
{
if (seriesName == "Account_TotalTasks")
{
string brand = e.Argument;
HiddenField2.Value = brand;
SqlDataSource_DrillDownL3.SelectParameters[0].DefaultValue = GetStartDate();
SqlDataSource_DrillDownL3.SelectParameters[1].DefaultValue = GetEndDate();
SqlDataSource_DrillDownL3.SelectParameters[2].DefaultValue = HiddenField1.Value;
SqlDataSource_DrillDownL3.SelectParameters[3].DefaultValue = brand;
RadHtmlChart4.PlotArea.XAxis.DataLabelsField = "Brand";
RadHtmlChart4.PlotArea.Series[0].DataFieldY = "Brand_TotalTasks";
RadHtmlChart4.PlotArea.Series[0].Name = "TotalTasks";
RadHtmlChart4.PlotArea.Series[1].DataFieldY = "Brand_CompletedTasks";
RadHtmlChart4.PlotArea.Series[1].Name = "CompletedTasks";
RadHtmlChart4.PlotArea.Series[2].DataFieldY = "Brand_IncompletedTasks";
RadHtmlChart4.PlotArea.Series[2].Name = "IncompletedTasks";
RadHtmlChart4.DataSourceID = "SqlDataSource_DrillDownL3";
}
}
}
}
this is my code... it's not fully completed but this is how it's supposed to be like. i want to drill my data in the following order starting from "Business Unit" -> "Brand" -> "Account" -> "User"
for some reason i can only click and view 1 level of detail, that is i can go from "Business Unit" -> "Brand".
the chart doesn't allow me to click on columns that i see when "Brand" details are loaded.
can you suggest a reason for that and a solution for me. Thank you.
i have been following this example to build a chart with drill down functionality.
https://demos.telerik.com/aspnet-ajax/htmlchart/examples/drilldownchart/defaultcs.aspx
<div class="dashboard_div_doublewidth">
Business Unit Task Distribution
<telerik:RadCodeBlock ID="codeBlock" runat="server">
<script type="text/javascript">
function OnClientSeriesClicked(sender, args) {
if (args.get_seriesName() != "Users") $find("<%= RadAjaxManager1.ClientID %>").ajaxRequest(args.get_category());
}
</script>
</telerik:RadCodeBlock>
<telerik:RadAjaxManager ID="RadAjaxManager1" runat="server" OnAjaxRequest="RadAjaxManager1_AjaxRequest">
<AjaxSettings>
<telerik:AjaxSetting AjaxControlID="RadAjaxManager1">
<UpdatedControls>
<telerik:AjaxUpdatedControl ControlID="RadHtmlChart4" LoadingPanelID="LoadingPanel1">
</telerik:AjaxUpdatedControl>
</UpdatedControls>
</telerik:AjaxSetting>
<telerik:AjaxSetting AjaxControlID="Refresh">
<UpdatedControls>
<telerik:AjaxUpdatedControl ControlID="RadHtmlChart4" LoadingPanelID="LoadingPanel1">
</telerik:AjaxUpdatedControl>
</UpdatedControls>
</telerik:AjaxSetting>
</AjaxSettings>
</telerik:RadAjaxManager>
<telerik:RadHtmlChart ID="RadHtmlChart4" runat="server" DataSourceID="SqlDataSource_DrillDownL1"
OnClientSeriesClicked="OnClientSeriesClicked" Height="330px" Skin="Office2010Blue"
Width="750px">
<PlotArea>
<Series>
<telerik:ColumnSeries DataFieldY="TotalTasks" Name="TotalTasks">
<TooltipsAppearance Color="White" />
</telerik:ColumnSeries>
<telerik:ColumnSeries DataFieldY="CompletedTasks" Name="CompletedTasks">
</telerik:ColumnSeries>
<telerik:ColumnSeries DataFieldY="IncompletedTasks" Name="IncompletedTasks">
</telerik:ColumnSeries>
</Series>
<XAxis DataLabelsField="CBUName">
</XAxis>
</PlotArea>
</telerik:RadHtmlChart>
<asp:SqlDataSource ID="SqlDataSource_DrillDownL1" runat="server" ConnectionString="<%$ ConnectionStrings:customerRelationshipIndexDB_FinalConnectionString %>"
SelectCommand="SELECT CBUName, SUM(TotalTasks) AS TotalTasks, SUM(CompletedTasks) AS CompletedTasks, SUM(TotalTasks) - SUM(CompletedTasks) AS IncompletedTasks FROM (SELECT CBUName, COUNT(TaskId) AS TotalTasks, 0 AS CompletedTasks FROM V_ContactsToBeCompleted WHERE (DueDate BETWEEN @start AND @end ) GROUP BY CBUName UNION SELECT CBUName, 0 AS TotalTasks, COUNT(TaskId) AS CompletedTasks FROM V_ContactsToBeCompleted AS V_ContactsToBeCompleted_1 WHERE (DueDate BETWEEN @start AND @end ) AND (IsTaskCompleted = 'true') GROUP BY CBUName) AS t GROUP BY CBUName">
<SelectParameters>
<asp:Parameter Name="start" />
<asp:Parameter Name="end" />
</SelectParameters>
</asp:SqlDataSource>
<asp:HiddenField ID="HiddenField1" runat="server" />
<asp:SqlDataSource ID="SqlDataSource_DrillDownL2" runat="server" ConnectionString="<%$ ConnectionStrings:customerRelationshipIndexDB_FinalConnectionString %>"
SelectCommand="SELECT Brand, SUM(TotalTasks) AS Brand_TotalTasks, SUM(CompletedTasks) AS Brand_CompletedTasks, SUM(TotalTasks) - SUM(CompletedTasks) AS Brand_IncompletedTasks FROM (SELECT Brand, COUNT(TaskId) AS TotalTasks, 0 AS CompletedTasks FROM V_ContactsToBeCompleted WHERE (DueDate BETWEEN @start AND @end ) AND (CBUName = @cbu) GROUP BY Brand UNION SELECT Brand, 0 AS TotalTasks, COUNT(TaskId) AS CompletedTasks FROM V_ContactsToBeCompleted AS V_ContactsToBeCompleted_1 WHERE (DueDate BETWEEN @start AND @end ) AND (IsTaskCompleted = 'true') AND (CBUName = @cbu) GROUP BY Brand) AS t GROUP BY Brand">
<SelectParameters>
<asp:Parameter Name="start" />
<asp:Parameter Name="end" />
<asp:Parameter Name="cbu" />
</SelectParameters>
</asp:SqlDataSource>
<asp:HiddenField ID="HiddenField2" runat="server" />
<asp:SqlDataSource ID="SqlDataSource_DrillDownL3" runat="server"
ConnectionString="<%$ ConnectionStrings:customerRelationshipIndexDB_FinalConnectionString %>"
SelectCommand="SELECT AccountName, SUM(TotalTasks) AS Account_TotalTasks, SUM(CompletedTasks) AS Account_CompletedTasks, SUM(TotalTasks) - SUM(CompletedTasks) AS Account_IncompletedTasks FROM (SELECT AccountName, COUNT(TaskId) AS TotalTasks, 0 AS CompletedTasks FROM V_ContactsToBeCompleted WHERE (DueDate BETWEEN @start AND @end ) AND (CBUName = @cbu) AND (Brand = @brand) GROUP BY AccountName UNION SELECT AccountName, 0 AS TotalTasks, COUNT(TaskId) AS CompletedTasks FROM V_ContactsToBeCompleted AS V_ContactsToBeCompleted_1 WHERE (DueDate BETWEEN @start AND @end ) AND (IsTaskCompleted = 'true') AND (CBUName = @cbu) AND (Brand = @brand) GROUP BY AccountName) AS t GROUP BY AccountName">
<SelectParameters>
<asp:Parameter Name="start" />
<asp:Parameter Name="end" />
<asp:Parameter Name="cbu" />
<asp:Parameter Name="brand" />
</SelectParameters>
</asp:SqlDataSource>
<telerik:RadAjaxLoadingPanel ID="LoadingPanel1" Height="77px" Width="113px" runat="server">
</telerik:RadAjaxLoadingPanel>
<br />
</div>
public void RadAjaxManager1_AjaxRequest(object sender, AjaxRequestEventArgs e)
{
string seriesName = RadHtmlChart4.PlotArea.Series[0].Name;
if (seriesName == "TotalTasks")
{
string cbu = e.Argument;
HiddenField1.Value = cbu;
SqlDataSource_DrillDownL2.SelectParameters[0].DefaultValue = GetStartDate();
SqlDataSource_DrillDownL2.SelectParameters[1].DefaultValue = GetEndDate();
SqlDataSource_DrillDownL2.SelectParameters[2].DefaultValue = cbu;
RadHtmlChart4.PlotArea.XAxis.DataLabelsField = "Brand";
RadHtmlChart4.PlotArea.Series[0].DataFieldY = "Brand_TotalTasks";
RadHtmlChart4.PlotArea.Series[0].Name = "Brand_TotalTasks";
RadHtmlChart4.PlotArea.Series[1].DataFieldY = "Brand_CompletedTasks";
RadHtmlChart4.PlotArea.Series[1].Name = "Brand_CompletedTasks";
RadHtmlChart4.PlotArea.Series[2].DataFieldY = "Brand_IncompletedTasks";
RadHtmlChart4.PlotArea.Series[2].Name = "Brand_IncompletedTasks";
RadHtmlChart4.DataSourceID = "SqlDataSource_DrillDownL2";
}
else
{
if (seriesName == "Brand_TotalTasks")
{
string brand = e.Argument;
HiddenField2.Value = brand;
SqlDataSource_DrillDownL3.SelectParameters[0].DefaultValue = GetStartDate();
SqlDataSource_DrillDownL3.SelectParameters[1].DefaultValue = GetEndDate();
SqlDataSource_DrillDownL3.SelectParameters[2].DefaultValue = HiddenField1.Value;
SqlDataSource_DrillDownL3.SelectParameters[3].DefaultValue = brand;
RadHtmlChart4.PlotArea.XAxis.DataLabelsField = "Brand";
RadHtmlChart4.PlotArea.Series[0].DataFieldY = "Account_TotalTasks";
RadHtmlChart4.PlotArea.Series[0].Name = "Account_TotalTasks";
RadHtmlChart4.PlotArea.Series[1].DataFieldY = "Account_CompletedTasks";
RadHtmlChart4.PlotArea.Series[1].Name = "Account_CompletedTasks";
RadHtmlChart4.PlotArea.Series[2].DataFieldY = "Account_IncompletedTasks";
RadHtmlChart4.PlotArea.Series[2].Name = "Account_IncompletedTasks";
RadHtmlChart4.DataSourceID = "SqlDataSource_DrillDownL3";
}
else
{
if (seriesName == "Account_TotalTasks")
{
string brand = e.Argument;
HiddenField2.Value = brand;
SqlDataSource_DrillDownL3.SelectParameters[0].DefaultValue = GetStartDate();
SqlDataSource_DrillDownL3.SelectParameters[1].DefaultValue = GetEndDate();
SqlDataSource_DrillDownL3.SelectParameters[2].DefaultValue = HiddenField1.Value;
SqlDataSource_DrillDownL3.SelectParameters[3].DefaultValue = brand;
RadHtmlChart4.PlotArea.XAxis.DataLabelsField = "Brand";
RadHtmlChart4.PlotArea.Series[0].DataFieldY = "Brand_TotalTasks";
RadHtmlChart4.PlotArea.Series[0].Name = "TotalTasks";
RadHtmlChart4.PlotArea.Series[1].DataFieldY = "Brand_CompletedTasks";
RadHtmlChart4.PlotArea.Series[1].Name = "CompletedTasks";
RadHtmlChart4.PlotArea.Series[2].DataFieldY = "Brand_IncompletedTasks";
RadHtmlChart4.PlotArea.Series[2].Name = "IncompletedTasks";
RadHtmlChart4.DataSourceID = "SqlDataSource_DrillDownL3";
}
}
}
}
this is my code... it's not fully completed but this is how it's supposed to be like. i want to drill my data in the following order starting from "Business Unit" -> "Brand" -> "Account" -> "User"
for some reason i can only click and view 1 level of detail, that is i can go from "Business Unit" -> "Brand".
the chart doesn't allow me to click on columns that i see when "Brand" details are loaded.
can you suggest a reason for that and a solution for me. Thank you.