gpt4 book ai didi

c# - 在 C# 中显示分层数据

转载 作者:行者123 更新时间:2023-11-30 15:47:18 24 4
gpt4 key购买 nike

我正在尝试开发一个页面来按学科/教师显示学生/类(class)成绩。

有些类(class)有包含学生的小组,有些类(class)只有学生。一个主题由一位或多位老师思考。这在未来可能会改变,我希望尽可能保持设计的灵 active (即科目可能被分解为模块或单独的测试结果,类(class)可能会按年份进一步分组等)

我想在一个网格中显示最终结果,我可以展开和滚动以计算结果的平均值(Y 上的类和 X 上的主题)。

虽然它有 3 个数据库表,如下所示:

**class_structure**
id (int) PK
description (varchar)
parent_id (int) FK to id

最高级别是类(class)(没有家长 ID),最低级别是学生。

**subject_structure**
id (int) PK
description (varchar)
parent_id (int) FK to id

最高级别是学科,最低级别是教师

**results**
id (int) PK
class_structure_id (int) FK
subject_structure_id (int) FK
date (datetime)
reult (int)

你觉得上面的结构怎么样?我相信这给了我前进的灵 active ?

在我的 asp.net 应用程序中,然后我查询最高的类结构级别并平均出低于该级别的所有结果(我最好在数据库的存储过程中进行平均还是在应用程序中使用 LINQ?)

这会返回一组最高级别的结果。

然后我需要显示这是一个表格(我正在考虑在 C# 中创建表格 html?)针对主题类(即首先创建所有标题,然后尝试将结果放在正确的列中(不过我不确定该怎么做))。

<table border="1" padding="2">
<tr>
<td></td>
<td></td>
<td colspan="2" align="center">Subj 1</td>
<td colspan="2" align="center">Subj 2</td>
</tr>

<tr>
<td></td>
<td></td>
<td>Teacher 1</td>
<td>Teacher 2</td>
<td>Teacher 1</td>
<td>Teacher 2</td>
</tr>
<tr>
<td rowspan="2">Class 1</td>
<td>Student 1</td>
<td>90</td>
<td>55</td>
<td>75</td>
<td>100</td>
</tr>
<tr>
<td>Student 2</td>
<td>40</td>
<td>95</td>
<td>65</td>
<td>39</td>
</tr>
</table>

然后当用户点击第一个类(class)时,这将展开并显示所有组(如果有的话,如果没有,学生)(将点击单元格的 class_structure_id 传递给相同的方法/sproc 并获得这些结果)和然后用一个额外的列重新绘制表格。

这是实现我想要做的事情的好方法吗?

最佳答案

1:) 分层数据不应显示在 <table> 中, 使用嵌套 <ul><ol>反而。表格用于表格数据。

2:) 由于 c# 是一种面向对象的语言,因此我不会通过 Id 引用树中的对象。为什么不将子对象的集合添加为成员,示例代码模式如下:

class TreeElement 
{
public TreeElement Parent {get;}
public IEnumerable<TreeElement> Children{get;};
public AddChild(TreeElement element }
public bool IsRoot { return Parent == null; }
public bool IsLeaf { return Children.Length == 0; }
public bool IsBranch {return !IsRoot && !IsLeaf; }
}

通常在树中您不想进行父查找。因此,如果不需要,请保留所有父引用以避免无用的复杂性;)尝试以上述对象结构在数据库中插入内容。

3:) 在 SQL 中,根据您的模型进行的键查找最终会非常缓慢。您必须循环遍历数据并在查询中使用 if/else 语句在 SQLTeam 上是 a great sample关于如何使用额外的沿袭列来非常快速地实现这一点。

4:)使用 linq 查询并生成数据结果。

关于c# - 在 C# 中显示分层数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3716214/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com