评教模块的学生角色评教功能和教师角色的查看评教结果功能在实现上出现了问题,现在设计的学生提交评教信息功能,是将学生给予的每个评分细则的分数存入数据库中Result表中,但是各个评分细则并没有和它们的父项(评教大类)相关联到一起,如果通过视图将评教大类(还有细则)之间关联到result表,那么会造成比较“可观”的数据冗余出现。
但就目前数据库设计而言,暂时只能将上述result信息和评教大类(还有评教细则)之间分开来处理。
原来的评教系统中教师角色的查看评教结果功能,截图如下。其中态度、方法、基本功、内容、效果,均为评教大类(其下分若干评教细则) 并且大类数量已经固定,已经写“死”在代码中,缺乏灵活性。
新的评教系统,主要就是来实现这个灵活性,能够动态增加评教大类和评教细则,那么学生评教功能和教师查看评教功能必要相符而来。
慢慢的问题就来了,评教结果信息不能再采取这样的形式显示,需要进行“行列互换”,因为页面空间有限,而评教大类的数量限制却远远大于页面横向信息容载量。
将行列互换之后,基本信息显示如下图:第1行显示为该教师所授课程,每个课程(列)下为学生对该教师的该课程的评教结果统计信息。
该表中,我想用Repeater控件(该控件能进行数据简单显示,基本原理和for循环显示一样)将(行向)课程信息是进行数据动态绑定,(列向)的各个评教大类也需要进行数据动态绑定,而参评人数、应评人数和总分,则是固定项。
我的后台针对评教数据的处理,得出的数据是分开的,课程信息这块则是直接查询教师表和课程表,得出教师所授课程信息的DataTable(这里需要显示教师名,则需要将二表联合查找)。当查的该教师的课程信息后,则应该从一门课入手,去查询其评教信息(也就是去列项找到它们的归宿。)
其中每个评教大类内显示的数据都是需要我通过关联评教大类表、评教细则表和评教结果表,将每个大类下的所有细则得分统计出来再重新组建出一个临时的DataTable。
总结来说,经过“行列互换”之后的表,需要Table和Repeater结合使用,并且因为行列都需要动态数据绑定,则要用到Repeater嵌套来实现这个功能。
现在,还有一种做法就是,将后台整理出来的几个相关DataTable进行整合,重组为一个DataTable,页面使用GridView控件来进行数据显示。
这两种方法理论上都能够实现我想要的评教结果显示的效果,如何取舍呢?
昨天看了下原版评教系统相关教师角色查看评教结果的页面编码,其实评教结果的数据源(DataTable)尽可先通过SQL语句进行处理,但是新旧数据库设计的差异,又使得DataTable中较为重要的各大类得分统计结果无法对应到Result数据表中。