2016-08-19 10 views
2

これら2つのクエリのグラフにデータを表示する必要があります。一度に1つずつ棒グラフでデータを表示することができます。しかし、私はそれらを同じページに一緒に表示したい。ここで1つのモデルを使用して2つのLINQクエリを表示して表示する

public ActionResult Daily(string label) 
{ 
    var DataContext = new BalanceDataContext(); 

    var month = label.Split('-')[0]; 
    var year = label.Split('-')[1]; 

    //Percentage of Estimated Electric Bills 
    var rdcd = new string[] { "CE", "IE" }; 
    var totalEstimated = (from a in DataContext.pujhaccds 
          join b in DataContext.pujhmtrds 
          on a.billnumber equals b.billnumber 
          where year.Equals(a.billdate.Value.Year) 
          && month.Equals(a.billdate.Value.Month) 
          && rdcd.Contains(b.reading_code) 
          group a by new {a.billdate.Value.Day} into p 
          orderby p.Key.Day ascending 
          select new Date1() { theDay2 = p.Key.Day, theCount2 = p.Count() }); 


    var totalday = (from m in DataContext.pujhaccds 
         where month.Equals(m.billdate.Value.Month) && 
         year.Equals(m.billdate.Value.Year) 
         group m by new { m.billdate.Value.Day } into p 
         orderby p.Key.Day ascending 
         select new Date1() { theDay = p.Key.Day, theCount = p.Count() }); 

    int monthInt = 0; 
    Int32.TryParse(month, out monthInt); 
    string strMonthName = CultureInfo.CurrentCulture.DateTimeFormat.GetMonthName(monthInt); 
    ViewBag.Message = "Bills for: " + strMonthName + year; 

    return View(new QueryView { Date2 = totalEstimated, Date1 = totalday.ToArray() }); 
} 

モデルは次のようになります。

public class Date1 
{ 
public string Month { get; set; } 
public string Year { get; set; } 

[DataType(DataType.Date)] 
[DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}", ApplyFormatInEditMode = true)] 
public DateTime? DateStart { get; set; } 
public DateTime? DateEnd { get; set; } 
public int theDay { get; set; } 
public int theDay2 { get; set; } 
public string theString { get; set; } 

[DataType(DataType.Date)] 
[DisplayFormat(DataFormatString = "{0:MMMM-yyyy}", ApplyFormatInEditMode = true)] 
public DateTime? theDate { get; set; } 
public int theCount { get; set; } 
public int theCount2 { get; set; } 
} 

私は、データを保持するための別のモデルを作成しようとしましたが、それは

public class QueryView 
{ 
    public IEnumerable<Date1> Date1 { get; set; } 
    public IEnumerable<Date1> Date2 { get; set; } 
} 

を動作するようには思えない私が持っていますこれは私の見解の一番上にあり、エラーメッセージは表示されません:

@model CWebPortal.Models.QueryView 

私はこれを持っていたとき、私が得たエラー:

@model IEnumerable<CWebPortal.Models.QueryView> 

これは動作しますが、唯一のコントローラから1つのクエリのために:

@model IEnumerable<CWebPortal.Models.Date1> 

これは私がグラフのデータをつかんだ方法です表示:

jQuery(function ($) { 
     $.jqplot.config.enablePlugins = true; 
     var items = @Html.Raw(Json.Encode(Model)); 
     var ticks = []; 
     var s1 = []; 
     var s2 = []; 
     for (var i = 0; i < items.length; i++) { 
      ticks.push(items[i].theDay); 
      s1.push(items[i].theCount); 
     } 

どのように私のビューに両方のクエリを取得できますか?

答えて

1

あなたのアプローチを新しいビューモデルに組み合わせることは、まったく正しいことです。

public class QueryView 
{ 
    public IEnumerable<Date1> Date1 { get; set; } 
    public IEnumerable<Date1> Date2 { get; set; } 
} 

および@model CWebPortal.Models.QueryViewです。

ちょうどあなたがあなたのjavascriptのコードで正しいものにアクセスしてください:

jQuery(function ($) { 
    $.jqplot.config.enablePlugins = true; 
    var viewModel = @Html.Raw(Json.Encode(Model)); // <--- updated 
    var items = viewModel.Date1; // <--- updated 
    var ticks = []; 
    var s1 = []; 
    var s2 = []; 
    for (var i = 0; i < items.length; i++) { 
     ticks.push(items[i].theDay); 
     s1.push(items[i].theCount); 
    } 
関連する問題