2012-08-12 2 views
1

Мои LoggedUserHome.Controller имеет это действие для диаграммыMVC3 дает пустую таблицу

public ActionResult GetGender() 
    { 


     var AllGender = new List<string>(from c in db.tbl_Profile select c.sex).ToList(); 
     var Groping = AllGender 
      .GroupBy(i => i) 
      .Select(i => new { sex = i.Key, CountGet = i.Count() }).ToArray(); //get a count for each 

     var key = new Chart(width: 300, height: 300) 
      .AddSeries(
      chartType: "pie", 
      legend: "Gender Popularity", 
      xValue: Groping, xField: "sex", 
      yValues: Groping, yFields: "CountGet") 
      .Write("gif"); 
     return null; 

    } 

и на мой взгляд, я дал

<img src="/LoggedUserHome/GetGender"/> 

Благодарности к Nexuss ToArray() предложение мне удалось заселить диаграмму, читая базу данных .. Большое спасибо Nexuzz

+0

Вашего действие не возвращают никаких данных, но нуль, таким образом, диаграмма не будет отображаться в пользовательском интерфейсе. – norbip

ответ

1

Простым решением является попытка заменить ваш

<img src="/LoggedUserHome/GetGender"/> 

в представлении с

@{ 
    var d = new PrimeTrekkerEntities1(); 
    var AllGender = new List<string>(from c in d.tbl_Profile select c.sex).ToList(); 
    var Groping = AllGender 
     .GroupBy(i => i) 
     .Select(i => new { sex = i.Key, Count = i.Count() }); //get a count for each 

    var key = new Chart(width: 600, height: 400) 
     .AddSeries(
     chartType: "pie", 
     legend: "Gender Popularity", 
     xValue: Groping, xField: "sex") 
     .Write("gif"); 
} 

И «да», вам не нужно GetGender действий в этом случае.

Более сложное решение было бы оставить

<img src="/LoggedUserHome/GetGender"/> 

в представлении, но сделать GetGender) возвращение действий изображение диаграммы URL (. Итак, что вы можете сделать в GetGender(), это как-то визуализировать диаграмму в файле изображения и возвращать ответ, содержащий путь изображения.

обновление:

Я обновил свой пример немного, поэтому он отображает данные в диаграмме. Вот что я получил:

@{ 
    var AllGender = new List<string>() { "Male", "Female", "Male"}; 
    var Groping = AllGender 
     .GroupBy(i => i) 
     .Select(i => new { sex = i.Key, Count = i.Count() }).ToArray(); //get a count for each 

    var key = new Chart(width: 600, height: 400) 
     .AddSeries(
     chartType: "pie", 
     legend: "Gender Popularity", 
     xValue: Groping, xField: "sex", 
     yValues: Groping, yFields: "count") 
     .Write("gif"); 
} 

Есть два основных отличия от вашего примера:

  • Groping теперь массив. Насколько я понимаю, диаграмма ожидает данные, которые будут перечислены
  • Я добавил yValues и yFields параметров, поэтому график знает, какие значения использовать на осях Y
+0

Хорошо, спасибо за помощь nexuzzz .. но все же я застрял в этом. Если вы можете предложить мне очень простую статью, которая запускает запрос, чтобы получить данные из базы данных, а затем показать их на диаграмме. .. – Niki

+0

извините - я не заметил вашего комментария. Если это по-прежнему актуально, просмотрите эту статью: http://www.asp.net/web-pages/tutorials/data/7-displaying-data-in-a-chart Похоже, у нее есть все, что вам нужно. Если это не так, мы можем попытаться сделать что-то конкретное :) – nexuzzz

+0

I'hv пробовал этот учебник много раз .. но это учебник немного устаревшей версии, а также для «Отображение данных в диаграмме с помощью веб-страниц ASP.NET «не MVC ... Кстати Спасибо за помощь – Niki

Смежные вопросы