2

i just curious on how to get the specific data column based on database

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;

however, the graphic using dotnet is not showing but like this. this is the result

when i inspect element using browser

    $(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' }]
    });
});

is there any way to fix this problem ? thank you very much

Update : i am taking this from sql database which has this similar conditionenter image description here

Another update: this is full coding for this case

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;
    }

then the 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();

    }

after added code, the result become like this

[[[{"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"]}]]]
Faris Fajar
  • 121
  • 2
  • 12

1 Answers1

0

Update 2:

Can u form the data result like this :

     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. List item

The Series is not set properly.

Please do it this way :

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

Have attached the image of results. Chart data

FakeisMe
  • 464
  • 3
  • 9
  • Pleas note that u have chosen the char as column , you can also choose column range chart based on how u want to show data. – FakeisMe Dec 15 '16 at 06:12
  • thank you for your brief explanation, the problem is i am taking this from sql server, the table is from user procedure – Faris Fajar Dec 15 '16 at 06:16
  • i am getting error on GetValue one since does not contain a definition and there is wiggly red on them. , i will update the condition for full coding – Faris Fajar Dec 15 '16 at 07:59
  • Have added the code with image. Please look it. All we need to do is frame the data properly so that the highchart can easily read it. – FakeisMe Dec 15 '16 at 08:36
  • i have update the result of json from your coding in merge with stored procedure that i have – Faris Fajar Dec 15 '16 at 09:05
  • hav u taken the latest ? i mean adding new object and not object [] ? see the changed result. – FakeisMe Dec 15 '16 at 09:13
  • Json is only for reading purpose , take the returnObject it has proper data now. It should definetly work. As we could see in the json it is in exact form which is required. – FakeisMe Dec 15 '16 at 09:31
  • sorry for late reply, yup i have take the code and it is working,however it is not really good when taking database problem into this condition. hope you can help me more with the example for this situation, especially database @FakeisMe. thank you for helping me for all this time :) – Faris Fajar Dec 15 '16 at 14:25
  • ok. I really dont understand what you are looking for. lets begin with this ... why u hav 3 status field for departments in table ? why u are using for inside foreach ? foreach is enough to do the operation. – FakeisMe Dec 16 '16 at 05:03
  • The solution works and that is the answer. From database we can fetch data , but we need to always reconstruct the results as per highchart data format requirement. Accept the answer if it works. – FakeisMe Dec 16 '16 at 11:35
  • yeah, the result is as expected, however, the result that i want is like this example documentation in highcharts http://www.highcharts.com/demo/column-basic – Faris Fajar Dec 18 '16 at 03:06