2012-05-10 5 views
2

出力コードjavascriptを持つC#コードに基づくDotnet Highchartを使用しています。 Dotnet HighChartMVCのDotnetハイチャートでViewModelとdatepickerを使用

これは私のグラフは次のようになり、ほぼどのようである:私は、LINQクエリを使用して、このグラフのデータを与えるために私のデータベースからのデータを使用しています

Charts

私のエンティティに「完了した日付」という列があり、datepickerで2つのテキストボックスを作成して、完了日の開始日と終了日を選択する必要があります。ユーザーは送信ボタンをクリックできるはずですチャートは更新され、2つの日付間の統計が表示されます。これは、私は、次のしている私のGETアクションメソッドでは、私のViewModel

public class OfficeStatisticNKIViewModel 
    { 
     public DateTime StartDate { get; set; } 
     public DateTime EndDate { get; set; } 
    } 

public List<CoreValueAndAverageGrade> GetAverageGradeForAllCoreValues(DateTime startDate, DateTime endDate) 
     { 



      return db.CoreValue 
       .Where(coreValue => coreValue.CoreValueQuestion 
        .Any(coreValueQuestion => coreValueQuestion.SubjectType.Ignored_Statistic == false)) 
       .Select(coreValue => new CoreValueAndAverageGrade 
       { 
        CoreValue = coreValue, 
        AverageGrade = coreValue.CoreValueQuestion 
         .Where(coreValueQuestion => coreValueQuestion.SubjectType.Ignored_Statistic == false) 
         .Average(coreValueQuestion => coreValueQuestion.SelectedQuestions 
          .Where(selectedQuestion => selectedQuestion.GoalCardQuestionAnswer != null 
           && selectedQuestion.GoalCardQuestionAnswer.Grade.HasValue 

          && selectedQuestion.GoalCard.Completed_Date >= startDate 
          && selectedQuestion.GoalCard.Completed_Date <= endDate 
           ) 
          .Average(selectedQuestion => selectedQuestion.GoalCardQuestionAnswer.Grade.Value)) 
       }) 
       .ToList(); 
     } 

です:私はこれは私が使用するつもりですLINQクエリされ、この

のための完全なLINQクエリを持っていますコード:

public ActionResult OfficeStatistic() 
{ 
    { 
     OfficeStatisticNKIViewModel model = new OfficeStatisticNKIViewModel(); 
     model.EndDate = DateTime.Now; 
     model.StartDate = DateTime.Now; 
     var averageGrades = OfficeStatisticRepository.GetAverageGradeForAllCoreValues(model.StartDate, model.EndDate); 

     var dataItems = (averageGrades.Select(averageGrade => averageGrade.AverageGrade).ToArray()); 
     Data data = new Data(
      dataItems.Select(y => new Point {Color = GetBarColour(y), Y = y}).ToArray()); 


     Highcharts chart1 = new Highcharts("Chart") 
     .SetXAxis(new XAxis { Categories = averageGrades.Select(averageGrade => averageGrade.CoreValue.Name).ToArray() }) 
     .SetYAxis(new YAxis { Min = 0, Max = 10, TickInterval = 1, Title = new YAxisTitle { Text = "Betygskalan" } }) 
     .SetSeries(new Series { Data = data, Name = "Snittbetyg" }) 
     .SetLegend(new Legend { Enabled = false }) 
     .SetTitle(new Title { Text = "Örebro Statistik", }) 
     .InitChart(new Chart { DefaultSeriesType = ChartTypes.Column }); 


     return View(new Container(new[] { chart1 })); 

    } 

問題は、私はポストアクションメソッドを行う方法がわからない、チャートが必要です新しい統計情報で更新するには、何らかのAjaxが必要ですか、それともサーバーサイドでこれを行うことができますか?

どのようなヘルプやヒントもありがとうございます。

ありがとうございます!

+1

ます(JavaScriptを使用して)非同期でチャートを更新するために探している、またはあなただけの再レンダリングされたページ全体をポストバックして持つようにしたいですか? – justinb138

+0

私はプロジェクトのためにこのようなことを行い、単に部分的なビューを使用しました。使用していたdatepickersを使用して、データをコントローラに戻しました。コントローラは、これらの結果を使用してクエリを実行し、グラフを再レンダリングします。 – cshemby

答えて

関連する問題