DotNetHighcharts&;C#:如何加载多维对象数组?

DotNetHighcharts&;C#:如何加载多维对象数组?,c#,arrays,multidimensional-array,dotnethighcharts,C#,Arrays,Multidimensional Array,Dotnethighcharts,我正在尝试用C#创建一个dotnet highcharts。如果您熟悉dotnot highcharts,那么您知道数据源必须是一个对象。我的数据将来自SQL Server。开始创建时,我创建了一个类,将SQL数据加载到: public class chartDataByGradeByGenderByRace { public string locID { get; set; } public string name { get; set; } public decima

我正在尝试用C#创建一个dotnet highcharts。如果您熟悉dotnot highcharts,那么您知道数据源必须是一个对象。我的数据将来自SQL Server。开始创建时,我创建了一个类,将SQL数据加载到:

public class chartDataByGradeByGenderByRace
{
    public string locID { get; set; }
    public string name { get; set; }
    public decimal y { get; set; }
    public int tot { get; set; }
    public int code { get; set; }
    public chartDrillDown drilldown { get; set; }
}

public class chartDrillDown
{
    public string name { get; set; }
    public List<string> categories { get; set; }
    public List<decimal> data { get; set; }
    public List<int> totCat { get; set; }
}
公共类chartDataByGradeByGenderByRace
{
公共字符串locID{get;set;}
公共字符串名称{get;set;}
公共十进制y{get;set;}
公共int tot{get;set;}
公共整数代码{get;set;}
公共图表向下展开向下展开{get;set;}
}
公共类图表向下展开
{
公共字符串名称{get;set;}
公共列表类别{get;set;}
公共列表数据{get;set;}
公共列表totCat{get;set;}
}
将数据加载到类中的My函数:

    [WebMethod]
    public List<chartDataByGradeByGenderByRace> getChartDataByGradeByGender(string gender, int pageID)
    {
        formValues fv = new formValues();
        string personID = fv.personID;

        List<chartDataByGradeByGenderByRace> ls = new List<chartDataByGradeByGenderByRace>();
        object ao = new chartDataByGradeByGenderByRace();

        string mySQL = "exec get_referralPct_byGrade_byGender_byRace @personID, @pageID, @Gender";
        string cf = System.Configuration.ConfigurationManager.ConnectionStrings["DistrictAssessmentDWConnectionString"].ConnectionString;

        SqlConnection connection = new SqlConnection(cf);
        SqlCommand command = new SqlCommand(mySQL, connection);

        command.Parameters.AddWithValue("@personID", personID);
        command.Parameters.AddWithValue("@pageID", pageID);
        command.Parameters.AddWithValue("@Gender", gender);

        connection.Open();

        SqlDataReader dr = command.ExecuteReader();

        string name = null;
        chartDataByGradeByGenderByRace cd = new chartDataByGradeByGenderByRace();
        chartDrillDown cdd = new chartDrillDown();

        while (dr.Read())
        {
            if (name != dr["name"].ToString())
            {
                if (name != null)
                {
                    cd.drilldown = cdd;

                    ls.Add(cd);
                }

                cd = new chartDataByGradeByGenderByRace();
                cd.drilldown = new chartDrillDown();
                name = dr["name"].ToString();

                cd.y = Convert.ToDecimal(dr["y"]);
                cd.tot = Convert.ToInt32(dr["tot"]);
                cdd = new chartDrillDown();
                cdd.categories = new List<string>();
                cdd.data = new List<decimal>();
                cdd.totCat = new List<int>();
                cdd.name = dr["name"].ToString();
            }

            cdd.categories.Add(dr["categories"].ToString());
            cdd.data.Add(Convert.ToDecimal(dr["data"]));
            cdd.totCat.Add(Convert.ToInt32(dr["totCat"]));
        }

        connection.Close();

        cd.drilldown = cdd;
        ls.Add(cd);

        return ls;
    }
[WebMethod]
公共列表getChartDataByGradeByGender(字符串性别,int pageID)
{
formValues fv=新的formValues();
字符串personID=fv.personID;
列表ls=新列表();
对象ao=新的chartDataByGradeByGenderByRace();
字符串mySQL=“exec get\u referralPct\u byGrade\u byGender\u byRace@personID,@pageID,@Gender”;
字符串cf=System.Configuration.ConfigurationManager.ConnectionString[“DistrictAssessmentDWConnectionString”]。ConnectionString;
SqlConnection=newsqlconnection(cf);
SqlCommand=newsqlcommand(mySQL,连接);
command.Parameters.AddWithValue(“@personID”,personID);
command.Parameters.AddWithValue(“@pageID”,pageID);
command.Parameters.AddWithValue(“@Gender”,性别);
connection.Open();
SqlDataReader dr=command.ExecuteReader();
字符串名称=null;
chartDataByGradeByGenderByRace cd=新的chartDataByGradeByGenderByRace();
chartDrillDown cdd=新的chartDrillDown();
while(dr.Read())
{
if(name!=dr[“name”].ToString()
{
if(name!=null)
{
cd.drilldown=cdd;
ls.加入(cd);;
}
cd=新的chartDataByGradeByGenderByRace();
cd.drilldown=新图表drilldown();
name=dr[“name”].ToString();
cd.y=Convert.ToDecimal(dr[“y”]);
cd.tot=Convert.ToInt32(dr[“tot”]);
cdd=新图表向下展开();
cdd.categories=新列表();
cdd.data=新列表();
cdd.totCat=新列表();
cdd.name=dr[“name”].ToString();
}
cdd.categories.Add(dr[“categories”].ToString());
cdd.data.Add(Convert.ToDecimal(dr[“data”]);
cdd.totCat.Add(转换为32(dr[“totCat”]);
}
connection.Close();
cd.drilldown=cdd;
ls.加入(cd);;
返回ls;
}
以及我构建dotnet highcharts的方法:

    protected void getGradeGenderChart()
    {
        refData rd = new refData();
        List<chartCategoriesGrade> cats = new List<chartCategoriesGrade>();
        List<chartDataByGradeByGenderByRace> male = new List<chartDataByGradeByGenderByRace>();
        List<chartDataByGradeByGenderByRace> female = new List<chartDataByGradeByGenderByRace>();

        string locID = schoolArea.Replace("%", "D") + schoolLevel.Replace("%", "L") + schoolID_alt.Replace("%", "S");
        string id = "refsGradeGender" + locID;

        cats = rd.getChartCategories_Grade(29, "html");
        male = rd.getChartDataByGradeByGender("Male", 29);
        female = rd.getChartDataByGradeByGender("Female", 29);

        string[] catObject = new string[cats.Count];
        int idx = 0;
        foreach (chartCategoriesGrade cat in cats)
        {
            catObject[idx++] = cat.grade;
        }

        DotNet.Highcharts.Highcharts chart = new DotNet.Highcharts.Highcharts(id)
            .InitChart(new Chart { DefaultSeriesType = ChartTypes.Column, Height = 225 })
            .SetTitle(new Title
            {
                Text = "Grade/Gender (Click columns to view Races)",
            })
            .SetYAxis(new YAxis
            {
                Title = new YAxisTitle { Text = "% of Referrals" },
                Labels = new YAxisLabels { Enabled = false },
                GridLineColor = System.Drawing.Color.Transparent
            })
            .SetXAxis(new XAxis { Categories = catObject })
            .SetPlotOptions(new PlotOptions
            {
                Column = new PlotOptionsColumn
                {
                    DataLabels = new PlotOptionsColumnDataLabels
                    {
                        Enabled = true,
                        Formatter = "function() { return this.y; }",
                        Style = "fontWeight: 'bold'"
                    }
                },
                Series = new PlotOptionsSeries
                {
                    Cursor = Cursors.Pointer,
                    Point = new PlotOptionsSeriesPoint
                    {
                        Events = new PlotOptionsSeriesPointEvents { Click = "function() { location.href = this.options.url; }" }
                    }
                }
            })
            .SetSeries(new[] {
                new Series { Name= "Males", Data = new Data(male.ToArray()) },
                new Series { Name = "Females", Data = new Data(female.ToArray()) }
            })
            .SetLegend(new Legend { 
                Align = HorizontalAligns.Left,
                Floating = true,
                Layout = Layouts.Vertical,
                Padding = 2,
                VerticalAlign = VerticalAligns.Top
                })
            .SetCredits(new Credits { Enabled = false });

        refsByGradeByGenderByRace.Text = chart.ToHtmlString();
    }
protectedvoid getGradeGenderChart()
{
refData rd=新的refData();
列表猫=新列表();
列表男性=新列表();
列表女性=新列表();
字符串locID=schoolArea.Replace(“%”,“D”)+学校级别。Replace(“%”,“L”)+学校ID\u alt.Replace(“%”,“S”);
string id=“refsGradeGender”+locID;
cats=rd.getChartCategories_等级(29,“html”);
男性=rd.GetChartDataByGrade性别(“男性”,29岁);
女性=rd.getChartDataByGradeByGender(“女性”,29岁);
string[]catObject=新字符串[cats.Count];
int-idx=0;
foreach(图表分类猫中的等级猫)
{
catObject[idx++]=cat.grade;
}
DotNet.Highcharts.Highcharts chart=新的DotNet.Highcharts.Highcharts(id)
.InitChart(新图表{DefaultSeriesType=ChartTypes.Column,Height=225})
.SetTitle(新标题)
{
Text=“等级/性别(单击列查看种族)”,
})
.SetYAxis(新YAxis)
{
Title=new YAxisTitle{Text=“%的引用”},
标签=新标签{Enabled=false},
GridLineColor=System.Drawing.Color.Transparent
})
.SetXAxis(新的XAxis{Categories=catObject})
.SetPlotOptions(新的绘图选项
{
Column=新绘图选项Column
{
DataLabels=新绘图选项ColumnDataLabels
{
启用=真,
Formatter=“function(){返回this.y;}”,
Style=“fontwweight:‘bold’”
}
},
系列=新绘图选项系列
{
游标=游标。指针,
点=新绘图选项系列点
{
Events=new plotoptions seriespointevents{Click=“function(){location.href=this.options.url;}”}
}
}
})
.SetSeries(新[]{
新系列{Name=“Males”,Data=newdata(male.ToArray())},
新系列{Name=“Females”,Data=newdata(female.ToArray())}
})
.SetLegend(新的图例{
对齐=水平对齐。左,
浮动=真,
布局=布局。垂直,
填充=2,
垂直对齐=垂直对齐。顶部
})
.SetCredits(新信用{Enabled=false});
refsByGradeByGenderByRace.Text=chart.ToHtmlString();
}
运行此命令时,在代码的最后一行出现以下错误:参数计数不匹配

我已经试过了,知道这个错误是由代码的.SetSeries部分使用male.ToArray()函数引起的。我创造了多恩