1

私は Web デザインが初めてで、C# を使用して SQL データベースのデータをハイチャート円グラフに入力しようとしています。棒グラフでは成功しましたが、円グラフでは問題が発生しています。基本的に、CustomerType と TotalOrders の 2 つのフィールドを含むテーブル tblReport1 があります。

値を取り込むことはできますが、スライスの名前を CustomerType フィールドのデータに変更することはできません。このフォーラムでいくつかの提案を試みましたが、それらを機能させることができません。以下は私のコードです。

private void Report1()
{
    dsSeries = BindData();

    if (dsSeries == null) return;

    foreach (DataRow dr in dsSeries.Tables[0].Rows)
    {
        hidXCategories11.Add(dr["CustomerType"]);
    }

    foreach (DataRow dr1 in dsSeries.Tables[0].Rows)
    {
        hidValues11.Add(Convert.ToInt32(dr1["TotalOrders"]));
        yValues = hidValues11.ToArray(typeof(object)) as object[];
    }


    DotNet.Highcharts.Highcharts chart = new DotNet.Highcharts.Highcharts("chart")
    .InitChart(new Chart { PlotShadow = false })
    .SetTitle(new Title { Text = "Orders by Customer Type" })
    .SetTooltip(new Tooltip { Formatter = "function() { return '<b>'+ this.point.name +'</b>: '+ this.y +' Orders'; }" })
    .SetPlotOptions(new PlotOptions
    {
        Pie = new PlotOptionsPie
        {
            ShowInLegend = true,
            AllowPointSelect = true,
            DataLabels = new PlotOptionsPieDataLabels
            {
                Formatter = "function() { return '<b>'+ this.point.name +'</b>: '+ this.y; }"
            }
        }
    })

    .SetSeries(new[]
       {
               new Series { Type = ChartTypes.Pie, Name = "help!", Data = new Data(yValues) }
       });



    ltrChart.Text = chart.ToHtmlString();

}
4

1 に答える 1

2

http://jsfiddle.net/gh/get/jquery/1.7.2/highslide-software/highcharts.com/tree/master/samples/highcharts/demo/pie-basic/を見ると、円グラフ データの形式はラベルとデータ項目の 2 つの部分。

あなたのものでは、シリーズデータは単なる整数の配列のように見えます。

Seriesしたがって、別の形式のデータを受け入れるようにオブジェクトを変更する必要があると思います。

悲しいことに、Highcharts.Net ドキュメントの例は少し不足しており、この例はないようです。そのため、インテリセンスが提供するものを確認する必要があるかもしれません。

肝心なのは、パイのウェッジは、カテゴリなどではなく、データ シリーズで名前を付ける必要があるということです。

サンプルコードの編集

私は彼らのサイトを見ていましたが、ヘルプフォーラムがあり、その中に次のサンプルコードが含まれています

       series.Add(new Serie
        {
            data = new object[] { 
                new object[] { "Firefox", 45 }, 
                new object[] { "IE", 24.8 }, 
                new object[] { "Chrome", 12.8 },
                new object[] { "Safari", 8.5 }, 
                new object[] { "Opera", 5.2 }, 
                new object[] { "Outros", 3.7 } 
            }
        });

ソース: http://highcharts.codeplex.com/discussions/269347

これをテストすることはできませんが、投稿の文脈からすると、うまくいくように見えます。

于 2012-06-18T14:39:15.750 に答える