【问题标题】:ASP.NET Chart for Grades DistributionASP.NET 成绩分布图
【发布时间】:2011-05-11 18:28:44
【问题描述】:

我想展示一个显示成绩分布的 ASP.NET 图表控件。

它应该显示有多少学生获得了哪个等级,范围从 A 到 F。

在没有学生获得 D 字母成绩的情况下,如何使图表包含 A、B、C、D、F 成绩?例如,我希望 D 值显示在 X 轴上,但学生人数为零。

正在从数据库中提取数据,我正在使用 ObjectDataSource 绑定到图表控件。

编辑:数据的结构是有一个学生表,每个学生都有一个名字、姓氏和年级。

编辑:对于网站的其他部分,我使用的是带有 LINQ 的实体框架(而不是编写原始 SQL),因此,在理想情况下,该解决方案不会涉及原始 SQL。

【问题讨论】:

  • 我根据您的编辑编辑了下面的响应以不使用原始 sql

标签: asp.net charts


【解决方案1】:

是否可以更改您的查询包括所有年级,然后填写每个年级的详细信息? 完全破解-但向您展示这个想法,因为我不知道您的架构

选择 * 从 ( 选择“a”级 联盟 选择“b”级 联盟 选择“c”级 联盟 选择“d”级 联盟 选择'f'等级 ) 作为等级 g 外部加入 yourothertable t on g.Grade = t.Grade

编辑:在阅读您的编辑后意识到您不希望这是一个 sql 解决方案,那么选择是获取您的对象并将它们与包含等级的对象进行 linq 连接。

见: http://www.hookedonlinq.com/OuterJoinSample.ashx 使用类似的东西 公开课等级 { 公共字符串 LetterGrade; } 填充它们的列表,并对查询的结果进行外部联接。您现在的数据绑定就是您的新 linq 结果集合。

【讨论】:

    【解决方案2】:

    如果不知道您的数据的结构,很难给出详细的答案。这是一种使用 SQL 公用表表达式 (CTE) 的方法。它将组织数据,以便您可以轻松地将其绑定到图表控件。

    这将产生如下数据表:

    | Grade | TotalGrades |
    |-------|-------------| 
    |   A   |      2      |
    |   B   |      1      |
    |   C   |      2      |
    |   D   |      0      |
    |   E   |      0      |
    |   F   |      1      |
    

    这是代码:

    ;With Grades (Grade) as
    (
        SELECT 'A' Grade
        UNION
        SELECT 'B' Grade
        UNION
        SELECT 'C' Grade
        UNION
        SELECT 'D' Grade
        UNION
        SELECT 'E' Grade
        UNION
        SELECT 'F' Grade
    ),
    GradeResults (Name,Grade) as
    (
        SELECT 'John','A'
        UNION
        SELECT 'Sally','B'
        UNION
        SELECT 'Dave','C'
        UNION
        SELECT 'Charlie','C'
        UNION
        SELECT 'Lisa','F'
        UNION
        SELECT 'Russ','A'
    )
    SELECT a.Grade, COUNT(b.Grade) as TotalGrades FROM Grades a LEFT OUTER JOIN GradeResults b on a.Grade = b.Grade
    GROUP BY a.Grade
    ORDER BY a.Grade;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-30
      • 1970-01-01
      • 1970-01-01
      • 2021-06-26
      • 1970-01-01
      • 2017-05-30
      相关资源
      最近更新 更多