David
David

Reputation: 1709

Dataset give a empty chart

I have to make a graph based on a list of items. For this I use dataview chart and ASP. Net.

The problem is that my graph is empty but I have data.

The data:

xmlns:xsd="http://www.w3.org/2001/XMLSchema">
- <Expense>
  <Type>Achat pièce</Type> 
  <Total>173.50</Total> 
  </Expense>
  </Root>

The code use to build the char:

DataSet dataSet = new DataSet();
DataTable dataTable = new DataTable("Table");
dataTable.Columns.Add("Total", typeof(string));
dataTable.Columns.Add("Type", typeof(string));
dataSet.Tables.Add(dataTable);

//GetData & fill dataTable
            var listOfExpense = Helper.JsonHelper.FromJson<ExpensePie>(resp.Content);
            foreach (var expense in listOfExpense.ListOfExpense)
            {
                dataTable.Rows.Add(expense.Total, expense.Type);
            }


//Fill data view with dataset
var dataView = new DataView(dataSet.Tables["Table"]);

//Build the chart
var myChart = new Chart(width: 600, height: 400, theme: ChartTheme.Blue)
   .AddSeries("Default", chartType: "bar",
   xValue:dataView, xField:"Type",
   yValues: dataView, yFields: "Total")
   .GetBytes("png");
return File(myChart, "image/png");

Upvotes: 0

Views: 419

Answers (1)

Darin Dimitrov
Darin Dimitrov

Reputation: 1038720

There must be something wrong with the way you are parsing your XML. You seem to be using some custom FromJson method and some XmlDocument to fill your dataset but I guess that your dataset doesn't contain any values because the following works perfectly fine:

public ActionResult Index()
{
    DataSet dataSet = new DataSet();
    DataTable dataTable = new DataTable("Table");
    dataTable.Columns.Add("Total", typeof(double));
    dataTable.Columns.Add("Type", typeof(string));
    dataSet.Tables.Add(dataTable);

    dataTable.Rows.Add(173.5, "Achat pièce");
    dataTable.Rows.Add(145.7, "Something else");

    //Fill data view with dataset
    var dataView = new DataView(dataSet.Tables["Table"]);

    //Build the chart
    var myChart = new Chart(width: 600, height: 400, theme: ChartTheme.Blue)
        .AddSeries("Default", chartType: "bar",
        xValue: dataView, xField: "Type",
        yValues: dataView, yFields: "Total")
        .GetBytes("png");
    return File(myChart, "image/png");
}

result:

enter image description here

Upvotes: 1

Related Questions