出力コードjavascriptを持つC#コードに基づくDotnet Highchartを使用しています。 Dotnet HighChartMVCのDotnetハイチャートでViewModelとdatepickerを使用
これは私のグラフは次のようになり、ほぼどのようである:私は、LINQクエリを使用して、このグラフのデータを与えるために私のデータベースからのデータを使用しています
。
私のエンティティに「完了した日付」という列があり、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が必要ですか、それともサーバーサイドでこれを行うことができますか?
どのようなヘルプやヒントもありがとうございます。
ありがとうございます!
ます(JavaScriptを使用して)非同期でチャートを更新するために探している、またはあなただけの再レンダリングされたページ全体をポストバックして持つようにしたいですか? – justinb138
私はプロジェクトのためにこのようなことを行い、単に部分的なビューを使用しました。使用していたdatepickersを使用して、データをコントローラに戻しました。コントローラは、これらの結果を使用してクエリを実行し、グラフを再レンダリングします。 – cshemby