2016-12-15 2 views
2

я просто любопытно, как получить конкретный столбец данных на основе базы данныхошибка highchart DotNet, не показывая данные

string[] arrLabel = new string[dt.Rows.Count]; 
     Object[] data = new Object[dt.Rows.Count]; 
     Object[] dataDetail = new Object[dt.Rows.Count]; 
     String[] detail = new String[dt.Rows.Count]; 

     var returnObject = new List<object>(); 
     var returnColumnList = new List<object>(); 
     int i = 0; 

     foreach (DataRow item in dt.Rows) 
     { 

      for (int j = 0; j < 1; j++) 
      { 
       returnColumnList.Add(new object[] {item["ATT_WF_STATUS_2"], item["ATT_WF_STATUS_3"]}); 
      } 

      dataDetail = returnColumnList.ToArray(); 
      returnObject.Add(new object[] { item["DEPARTEMENT"],dataDetail[i]}); 
      arrLabel[i] = ((string)item["DEPARTEMENT"]); 
      i++; 
     } 



     data = returnObject.ToArray(); 


     this.data = data; 
     this.arrLabel = arrLabel; 

однако, графический использованием DotNet не показаны, но как это. this is the result

когда я инспектировать элемент с помощью браузера

$(document).ready(function() { 
    chartColumnDetail = new Highcharts.Chart({ 
     chart: { renderTo:'chartColumnDetail_container', options3d: { alpha: 10, beta: 0, depth: 50, enabled: true, viewDistance: 25 }, plotShadow: false, type: 'column' }, 
     credits: { enabled: false }, 
     legend: { enabled: true, itemStyle: { color: '#2C3E50' } }, 
     plotOptions: { column: { allowPointSelect: true, colorByPoint: true, cursor: 'pointer', dataLabels: { enabled: true, style: { font:'14px', fontWeight:'bold' } }, depth: 50, showInLegend: true } }, 
     subtitle: { text: 'Grouped by Status' }, 
     title: { text: 'Attendance Analytics From 01 January 2010 Until 15 December 2016' }, 
     tooltip: { formatter: function(){ var sliceIndex =this.point.index; var sliceName = this.series.chart.axes[0].categories[sliceIndex]; return 'The value for <b>' + this.point.name + '</b> is <b>' + this.y +'</b>';} }, 
     xAxis: { categories: ['DO-Advisory Department', 'EDP Department', 'Enterprise Infrastructure Services Department', 'Pre Sales Department', 'Sales Department 1', 'IO-DCOPS Department', 'Human Capital Department'], labels: { align: 'center', style: { font: 'bold 10px Verdana,sans-serif' } } }, 
     yAxis: { min: 0, title: { text: 'Amount' } }, 
     exporting: { buttons: { contextButton: { align: 'center', x: 350, y: -3 } }, enabled: true, scale: 5 }, 
     series: [{ data: [['DO-Advisory Department', [15, 32]], ['EDP Department', [26, 5]], ['Enterprise Infrastructure Services Department', [8, 1]], ['Pre Sales Department',[ 1, 6]], ['Sales Department 1', [1, 3]], ['IO-DCOPS Department',[ 1, 0]], ['Human Capital Department',[1, 0]], name: 'Department' }] 
    }); 
}); 

есть ли способ, чтобы исправить эту проблему? Большое спасибо

Update: я беру это из SQL базы данных, которая имеет этот подобное условие enter image description here

Еще одно обновление: это полное кодирование для этого случая

protected DataTable GetDataDetail() 
    { 
     SortedList sl = new SortedList(); 

     DateTime dateFrom = DateTime.ParseExact(Request.Form[txtOldDate.UniqueID], "yyyy-MM-dd", null); 
     DateTime dateTo = DateTime.ParseExact(Request.Form[txtNewDate.UniqueID], "yyyy-MM-dd", null); 
     sl.Add("@DATE_FROM-date", dateFrom); 
     sl.Add("@DATE_TO-date", dateTo); 

     DataTable dt = new DataTable(); 

     dateFromChart = dateFrom.ToString("dd MMMM yyyy", CultureInfo.InvariantCulture); 
     dateToChart = dateTo.ToString("dd MMMM yyyy", CultureInfo.InvariantCulture); 

     dt = bll.GetAttendanceAnalyticsBasedWfStatus(sl); 

     string[] arrLabel = new string[dt.Rows.Count]; 
     Object[] data = new Object[dt.Rows.Count]; 
     Object[] dataDetail = new Object[dt.Rows.Count]; 

     var returnObject = new List<object>(); 
     List<object[]> returnColumnList = new List<object[]>(); 

     int i = 0; 
     foreach (DataRow item in dt.Rows) 
     { 

      for (int j = 0; j < 1; j++) 
      { 
       returnColumnList.Add(new object[] { item["DEPARTEMENT"], item["ATT_WF_STATUS_2"], item["ATT_WF_STATUS_3"] }); 
      } 

      dataDetail = returnColumnList.ToArray(); 

      returnObject.Add(new object[] { returnColumnList.Select(b => new { name = b.GetValue(0), data = returnColumnList.Select(y => y.GetValue(1) + "," + y.GetValue(2)).ToArray() }).ToArray() }); 

      arrLabel[i] = ((string)item["DEPARTEMENT"]); 
      i++; 
     } 

     jsonSeries = new JavaScriptSerializer().Serialize(returnObject); 
     Response.Write(jsonSeries); 
     data = returnObject.ToArray(); 

     this.data = data; 
     this.arrLabel = arrLabel; 

     return dt; 
    } 

то dotnetchart

protected void ColumnChartDetail() 
    { 
     GetDataDetail(); 

     //Binding data to Chart 
     DotNet.Highcharts.Highcharts chartColumnDetail = new DotNet.Highcharts.Highcharts("chartColumnDetail").InitChart(new Chart 
     { 
      DefaultSeriesType = ChartTypes.Column 
     }) 

      .SetOptions(new GlobalOptions 
      { 
       Colors = new[] { 
        ColorTranslator.FromHtml("#50B432"), //using system.drawing 
        ColorTranslator.FromHtml("#ED561B"), 
        ColorTranslator.FromHtml("#DDDF00"), 
        ColorTranslator.FromHtml("#24CBE5"), 
        ColorTranslator.FromHtml("#64E572"), 
        ColorTranslator.FromHtml("#FF9655"), 
        ColorTranslator.FromHtml("#34495E"), 
        ColorTranslator.FromHtml("#6AF9C4") 
       } 

      }) 

      //set title 
      .SetTitle(new Title 
      { 
       Text = "Attendance Analytics From " + this.dateFromChart + " Until " + this.dateToChart, 
      }) 

      //set subtitle 
      .SetSubtitle(new Subtitle 
      { 
       Text = "Grouped by Status", 
      }) 

      //set tooltip 
      .SetTooltip(new Tooltip 
      { 
       Formatter = @"function(){ var sliceIndex = this.point.index; var sliceName = this.series.chart.axes[0].categories[sliceIndex]; return 'The value for <b>' + this.point.name + '</b> is <b>' + this.y +'</b>';}" 
      }) 

      //Exporting options 
      .SetExporting(new Exporting 
      { 
       Enabled = true, 
       Scale = 5, 
       Buttons = new ExportingButtons 
       { 
        ContextButton = new ExportingButtonsContextButton 
        { 
         Align = HorizontalAligns.Center, 
         X = 350, 
         Y = -3 
        } 
       } 
      }) 

      //set plot option 
      .SetPlotOptions(new PlotOptions 
      { 
       Column = new PlotOptionsColumn 
       { 
        AllowPointSelect = true, 
        Depth = 50, 
        DataLabels = new PlotOptionsColumnDataLabels 
        { 
         Enabled = true, 
         Style = "font:'14px', fontWeight:'bold'" 

        }, 
        ShowInLegend = true, 
        ColorByPoint = true, 
        Cursor = Cursors.Pointer, 
       } 
      }) 


      //set chart initial 
      .InitChart(new Chart 
      { 
       Type = ChartTypes.Column, 
       PlotBackgroundColor = null, 
       PlotBorderWidth = null, 
       PlotShadow = false, 
       Options3d = new ChartOptions3d  // options for 3D 
       { 
        Enabled = true, 
        Alpha = 10, 
        Beta = 0, 
        Depth = 50, 
        ViewDistance = 25 
       } 
      }) 

      //set xAxis formatter text 
      .SetXAxis(new XAxis 
      { 
       Categories = arrLabel, 
       Labels = new XAxisLabels 
       { 
        Style = "font: 'bold 10px Verdana,sans-serif'", 
        Align = HorizontalAligns.Center 
       } 

      }) 

      //set yAxis formater text 
      .SetYAxis(new YAxis 
      { 
       Min = 0, 
       Title = new YAxisTitle { Text = "Amount" } 
      }) 

      //remove watermark of highcharts 
      .SetCredits(new Credits 
      { 
       Enabled = false 
      }) 

      //set Legend 
      .SetLegend(new Legend 
      { 
       Enabled = true, 
       ItemStyle = "color: '#2C3E50'" 
      }) 


      //set Series 
      .SetSeries(new[] 
      { 
       new Series 
       { 
        Name = "Department", 
        Data = new Data(data) 
       }, 

      }); 

     chartContainerColumnDetail.Text = chartColumnDetail.ToHtmlString(); 

    } 

после добавления кода, результат будет выглядеть следующим образом

[[[{"name":"DO-Advisory Department","data":["15,32"]}]],[[{"name":"DO-Advisory Department","data":["15,32","11,18"]},{"name":"EDP Department","data":["15,32","11,18"]}]],[[{"name":"DO-Advisory Department","data":["15,32","11,18","8,1"]},{"name":"EDP Department","data":["15,32","11,18","8,1"]},{"name":"Enterprise Infrastructure Services Department","data":["15,32","11,18","8,1"]}]],[[{"name":"DO-Advisory Department","data":["15,32","11,18","8,1","1,6"]},{"name":"EDP Department","data":["15,32","11,18","8,1","1,6"]},{"name":"Enterprise Infrastructure Services Department","data":["15,32","11,18","8,1","1,6"]},{"name":"Pre Sales Department","data":["15,32","11,18","8,1","1,6"]}]],[[{"name":"DO-Advisory Department","data":["15,32","11,18","8,1","1,6","1,3"]},{"name":"EDP Department","data":["15,32","11,18","8,1","1,6","1,3"]},{"name":"Enterprise Infrastructure Services Department","data":["15,32","11,18","8,1","1,6","1,3"]},{"name":"Pre Sales Department","data":["15,32","11,18","8,1","1,6","1,3"]},{"name":"Sales Department 1","data":["15,32","11,18","8,1","1,6","1,3"]}]],[[{"name":"DO-Advisory Department","data":["15,32","11,18","8,1","1,6","1,3","1,0"]},{"name":"EDP Department","data":["15,32","11,18","8,1","1,6","1,3","1,0"]},{"name":"Enterprise Infrastructure Services Department","data":["15,32","11,18","8,1","1,6","1,3","1,0"]},{"name":"Pre Sales Department","data":["15,32","11,18","8,1","1,6","1,3","1,0"]},{"name":"Sales Department 1","data":["15,32","11,18","8,1","1,6","1,3","1,0"]},{"name":"IO-DCOPS Department","data":["15,32","11,18","8,1","1,6","1,3","1,0"]}]],[[{"name":"DO-Advisory Department","data":["15,32","11,18","8,1","1,6","1,3","1,0","1,0"]},{"name":"EDP Department","data":["15,32","11,18","8,1","1,6","1,3","1,0","1,0"]},{"name":"Enterprise Infrastructure Services Department","data":["15,32","11,18","8,1","1,6","1,3","1,0","1,0"]},{"name":"Pre Sales Department","data":["15,32","11,18","8,1","1,6","1,3","1,0","1,0"]},{"name":"Sales Department 1","data":["15,32","11,18","8,1","1,6","1,3","1,0","1,0"]},{"name":"IO-DCOPS Department","data":["15,32","11,18","8,1","1,6","1,3","1,0","1,0"]},{"name":"Human Capital Department","data":["15,32","11,18","8,1","1,6","1,3","1,0","1,0"]}]]] 

ответ

0

Update :

Может у сформировать данные результата, как это:

 List<object[]> returnColumnList = new List<object[]>(); 
string json = string.Empty; 
var returnObject = new List<object>(); 
returnColumnList.Add(new object[] { "Depart" , "123", "345" }); 
returnColumnList.Add(new object[] { "Depart", "123", "345" }); 

foreach (var item in returnColumnList) 
{ 

returnObject.Add(new {name = item.GetValue(0), data = (new object[] {item.GetValue(1) , item.GetValue(2)})}); 

} 

json = new JavaScriptSerializer().Serialize(returnObject); 

Exactly_how it should appear as per the series

+++++++++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++ +++++++++

  1. Элемент списка

Серия установлена ​​неправильно.

Пожалуйста, сделать это таким образом:

series: [{ 
      name: 'DO-Advisory Department', 
      data: [15, 32] 
     }, { 
      name: 'EDP Department', 
      data: [26, 5] 
     }, { 
      name: 'Enterprise Infrastructure Services Department', 
      data: [8, 1] 
     }] 

прилагаю изображение результатов. Chart data

+0

Обратите внимание, что вы выбрали символ в качестве столбца, вы также можете выбрать диаграмму диапазона столбцов на основе того, как вы хотите отображать данные. – FakeisMe

+0

спасибо за ваше краткое объяснение, проблема в том, что я беру это с сервера sql, таблица от пользовательской процедуры –

+0

Я получаю ошибку на GetValue, так как не содержит определения, и на них есть красновато-красное. , я обновлю условие полного кодирования –