2012-04-01 15 views
2

以下のコードをLinqPad 4.40.03 + Sql Server 2008 R2 + NorthWindで実行します。LinqPadでチャート(System.Web.Helpers.Chartを使用)を取り込む方法は?

LinqPadは例外を返します: "ArgumentNullException:値はnullではありません。パラメータ名:httpContext"。

私に最終固定コードを教えてください。linqpadの出力画面で(System.Web.Helpers.Chartを使用して)チャートに値を設定します。

void Main() 
{ 
    var q = from p in Products 
      let s = p.OrderDetails.Sum(o => o.Quantity) * p.UnitPrice 
      orderby s 
      select new { ProductName = p.ProductName, Sales = s}; 

    var basicChart = new System.Web.Helpers.Chart(width: 600, height: 400) 
     .AddTitle("Product Sales") 
     .DataBindTable(dataSource: q, xField: "ProductName") 
     .Write(); 

    basicChart.Dump(); 
} 

答えて

7

ASP.NETチャートコントロールは、ASP.NETアプリケーションを実行しているときにのみ存在するHttpContext.Currentに依存します。

あなたはmocking an HttpContextを試すか、あるいはその代わりSystem.Windows.Forms.DataVisualization.Chartingでグラフ作成コントロールを使用することができます。

var q = from p in Products 
    let s = p.OrderDetails.Sum(o => o.Quantity) * p.UnitPrice 
    orderby s 
    select new { ProductName = p.ProductName, Sales = s}; 

var chart = new Chart(); 

var ca = new ChartArea(); 
ca.AxisX.LabelStyle.Interval = 1; 
chart.ChartAreas.Add (ca); 

var series = new Series { ChartType = SeriesChartType.Bar}; 
series.Points.DataBind (q.Take(20), "ProductName", "Sales", null); 
chart.Series.Add (series); 
chart.Dump ("Chart"); 
+0

おかげグレートジョー!チャートは人口が美しいです。 LinqPadは驚くほど強力です。 –

+1

こんにちはジョー、私はHttpContext(Moqを使って)を模擬し、LinqPadでチャットにデータを入れようとしましたが、System.Web.Helpers.Chartを使っていましたが、それでも動作させることはできません。あなたは私に上記のような最終的なコードを与えてください、ありがとう! –

関連する問題