score:7

Accepted answer

i haven't used highchart but you can download examples from their codeplex page. it looks like both of your requirements can be achieved easily.

remove the "snittbetyg" button

disable the legend:

.setlegend(new legend { enabled = false });


add colours

for the series data use points instead of just the numbers:

data data = new data(new[]
{
    new point { y = 1, color = system.drawing.color.red },
    new point { y = 8, color = system.drawing.color.blue },
    new point { y = 9, color = system.drawing.color.green },
    new point { y = 6, color = system.drawing.color.black }
});

highcharts chart1 = new highcharts("chart1")
    .setxaxis(new xaxis { categories = new[] { "ödmjukhet", "engagemang", "kompetens", "lönsamhet" } })
    .setyaxis(new yaxis { title = new yaxistitle { text = "betygskalan" } })
    .setseries(new series { data = data, name = "snittbetyg" })
    .settitle(new title { text = "örebro statistik" })
    .initchart(new chart { defaultseriestype = charttypes.column })
    .setlegend(new legend { enabled = false });

there doesn't seem to be a built in way to make highchart automatically colour the bar based on the y-value. i believe you would have to pick the colour yourself, e.g:

    private system.drawing.color getbarcolour(int value)
    {
        if (value < 5) return system.drawing.color.red;
        if (value > 7) return system.drawing.color.green;
        return system.drawing.color.orange;
    }

    public actionresult officestatistic()
    {
        {
            var dataitems = new[] {1, 8, 9, 6};
            data data = new data(
                dataitems.select(y => new point {color = getbarcolour(y), y = y}).toarray()
            );

            highcharts chart1 = new highcharts("chart1")
                .setxaxis(new xaxis { categories = new[] { "ödmjukhet", "engagemang", "kompetens", "lönsamhet" } })
                .setyaxis(new yaxis { title = new yaxistitle { text = "betygskalan" } })
                .setseries(new series { data = data, name = "snittbetyg" })
                .settitle(new title { text = "örebro statistik" })
                .initchart(new chart { defaultseriestype = charttypes.column })
                .setlegend(new legend { enabled = false });

score:1

  1. first, define a tuple list first item is for color and second item point value

    list<tuple<string, object>> dataitems = new list<tuple<string, object>>();
    
  2. i am passing value with swtich it is not neccessary

    sqldatareader reader = mycomm.executereader();

        if (reader.hasrows)
        {               
            string colorname ="";
            while (reader.read())                   
            {
                switch ((string)reader.getvalue(1))
                {
                    case "total employee(s)":
                        colorname = "blue";
                        break;
                    case "present":                       
                        colorname = "green";
                        break;
                    case "late":
                    case"absent":
                    case "during less":
                    case "early going":
                        colorname = "red";
                        break;
                    case "leave":
                        colorname = "orange";
                        break;
                    default:
                        colorname = "gray";
                        break;
                }
    
                dataitems.add(new tuple<string, object>(colorname, reader.getvalue(2)));
    }
    
  3. now, finally add data into series object

    new series{
     name = "employees",
     data  = new data(
        dataitems.select(y => new point { 
         color = system.drawing.color.fromname(y.item1), 
         y = (int)y.item2 }).toarray()
        )               
     }
    

Related Query

More Query from same tag