C# ASP图表、年、月、日向下钻取

C# ASP图表、年、月、日向下钻取,c#,asp.net,sql,drilldown,C#,Asp.net,Sql,Drilldown,我试图在ASP.NET(C#)中制作一个向下钻取的图表(堆栈列),它显示了按年份(2011、2012、2013等)划分的总收入。当我单击一个列(比如2012年)时,该图表显示了从该年开始的每个月的总收入。这个月每天都是一样的 这就是我的想法,但我不知道如何制作这样的东西,我已经搜索了好几天,找到了一些深入的示例,但对我来说没有任何效果,有一些示例,但没有日期深入 这是我已经得到的,但还有多远 数据库表定义: 收入者:int 日期:日期 (从SQL server创建和填充图表) (HTML) 循环

我试图在ASP.NET(C#)中制作一个向下钻取的图表(堆栈列),它显示了按年份(2011、2012、2013等)划分的总收入。当我单击一个列(比如2012年)时,该图表显示了从该年开始的每个月的总收入。这个月每天都是一样的

这就是我的想法,但我不知道如何制作这样的东西,我已经搜索了好几天,找到了一些深入的示例,但对我来说没有任何效果,有一些示例,但没有日期深入

这是我已经得到的,但还有多远

数据库表定义:
收入者:int
日期:日期

(从SQL server创建和填充图表)

(HTML)


循环浏览系列上的Points集合并设置Url:

foreach (DataPoint p in Chart1.Series[0].Points)
{
    p.Url = string.Format("details.aspx?id={0}", p.XValue);
}

这应该会让你理清头绪。

编写了一些代码,它工作正常,但有点凌乱

        protected void Page_Load(object sender, EventArgs e)
    {
        conn = new SqlConnection(ConfigurationManager.ConnectionStrings["TestDB"].ConnectionString);
        string query = "";
        string Year = "";
        string Month = "";
        if (Request["Year"] != null) Year = Request["Year"].ToString();
        if (Request["Month"] != null) Month = Request["Month"].ToString();
        if ((Year == "") && (Month == ""))
        {
            query = "SELECT SUM(TotalRevenue) AS Total, YEAR(Date) AS Year FROM test GROUP BY YEAR(Date)";
        }
        else if (Month == "")
        {
            query = "SELECT SUM(TotalRevenue) AS Total, MONTH(Date) AS year FROM test WHERE YEAR(Date) = " + Year + "  GROUP BY MONTH(Date)";
        }
        else
        {
            query = "SELECT SUM(TotalRevenue) AS Total, DAY(Date) AS Year FROM test WHERE YEAR(Date) = " + Year + " AND MONTH(Date) = " + Month + "  GROUP BY DAY(Date)";
        }

        SqlCommand cmd = new SqlCommand(query, conn);
        conn.Open();

        Chart1.DataSource = cmd.ExecuteReader();
        Series Series1 = new Series();
        Series1.XValueMember = "Year";
        Series1.YValueMembers = "Total";

        Chart1.Series.Add(Series1);

        Chart1.Series[0].ChartType = SeriesChartType.Column;
        Chart1.DataBind();

        foreach (DataPoint p in Chart1.Series[0].Points)
        {
            if ((Year != "") && (Month != ""))
            {
                p.Url = string.Format("Default.aspx");
            }
            else if (Year != "")
            {
                p.Url = string.Format("Default.aspx?Year={0}&Month={1}", Year, p.XValue);
            }
            else
            {
                p.Url = string.Format("Default.aspx?Year={0}", p.XValue);
            }
        }

    }

你到底有什么问题?注册用户点击?SQL查询。。。嗨,Walther,我不知道如何在ASP.NET图表上编写一个“点击”事件来从年>月>日的总收入中钻取,这是我的问题。你考虑过看官方文档吗?也许这对你有帮助
foreach (DataPoint p in Chart1.Series[0].Points)
{
    p.Url = string.Format("details.aspx?id={0}", p.XValue);
}
        protected void Page_Load(object sender, EventArgs e)
    {
        conn = new SqlConnection(ConfigurationManager.ConnectionStrings["TestDB"].ConnectionString);
        string query = "";
        string Year = "";
        string Month = "";
        if (Request["Year"] != null) Year = Request["Year"].ToString();
        if (Request["Month"] != null) Month = Request["Month"].ToString();
        if ((Year == "") && (Month == ""))
        {
            query = "SELECT SUM(TotalRevenue) AS Total, YEAR(Date) AS Year FROM test GROUP BY YEAR(Date)";
        }
        else if (Month == "")
        {
            query = "SELECT SUM(TotalRevenue) AS Total, MONTH(Date) AS year FROM test WHERE YEAR(Date) = " + Year + "  GROUP BY MONTH(Date)";
        }
        else
        {
            query = "SELECT SUM(TotalRevenue) AS Total, DAY(Date) AS Year FROM test WHERE YEAR(Date) = " + Year + " AND MONTH(Date) = " + Month + "  GROUP BY DAY(Date)";
        }

        SqlCommand cmd = new SqlCommand(query, conn);
        conn.Open();

        Chart1.DataSource = cmd.ExecuteReader();
        Series Series1 = new Series();
        Series1.XValueMember = "Year";
        Series1.YValueMembers = "Total";

        Chart1.Series.Add(Series1);

        Chart1.Series[0].ChartType = SeriesChartType.Column;
        Chart1.DataBind();

        foreach (DataPoint p in Chart1.Series[0].Points)
        {
            if ((Year != "") && (Month != ""))
            {
                p.Url = string.Format("Default.aspx");
            }
            else if (Year != "")
            {
                p.Url = string.Format("Default.aspx?Year={0}&Month={1}", Year, p.XValue);
            }
            else
            {
                p.Url = string.Format("Default.aspx?Year={0}", p.XValue);
            }
        }

    }