您的位置:首页 > 编程语言 > ASP

asp.net列表控件在无法确定列的时候,如何绑定

2009-02-05 15:06 423 查看
asp.net中的列表控件很好用,可是有些时候会出现一些问题, 比如我们不知道它有多少列,这怎么办呢。你也许会问,不可能出现这种情况啊。
我在最近的一个项目中就有一个这个功能,就是学生的成绩。因为初中,小学,高中的课程是不一样,但是却要在一个控件中显示它的成绩。这里的显示是分别显示,小学, 初中,高中的成绩。

这要怎么办呢。我们都知道,列表控件有一个功能就是自己加载列,就是你绑定它的数据源里有多少列,它就会给你自动加载上多少列,这个功能我们想大家都会用,不用我多说了,我们就用这个功能。

做这个功能的重要部分,不在asp.net的控件使用和语法,而在于sql的语句,为什么这么说呢。看一下下面这个sql语句

string strSQLcm = "SELECT top 8 StudentID as 'ID', Student.Name as '姓名',SUM( Point ) As '总分'";
//这个是我根据传入的考试号,而且得到的到底有多少科目进行了考试
SqlDataReader myReader = GetSubjects(strExamGroupID);
while (myReader.Read())
{
strSQLcm += " ,SUM(CASE SubjectName when '" + myReader["SubjectName"].ToString() + "' then Point else '0' end) as '" + myReader["SubjectName"].ToString() + "' ";			//
}
myReader.Close();

strSQLcm += "FROM  Exam_Result JOIN Exam_Subject ON Exam_Result.SubjectID = Exam_Subject.ID RIGHT OUTER JOIN Student ON Exam_Result.StudentID = Student.ID WHERE ";
strSQLcm += " Student.SortCode ='1234' ";
strSQLcm += " AND ExamID =1234";
strSQLcm += "GROUP BY StudentID, Name ORDER BY Name ";


这样看,怕是你看不明白为什么,那么下在这个代码,你应该很明白了吧。

SELECT StudentID as 'ID', Student.Name as '姓名' ,
SUM(CASE SubjectName when '化学' then Point else '0' end) as '化学'  ,
SUM(CASE SubjectName when '政治' then Point else '0' end) as '政治'  ,
SUM(CASE SubjectName when '外语' then Point else '0' end) as '外语'  ,
SUM(CASE SubjectName when '数学' then Point else '0' end) as '数学'  ,
SUM(CASE SubjectName when '语文' then Point else '0' end) as '语文'  ,
SUM(CASE SubjectName when '生物' then Point else '0' end) as '生物'
FROM  Exam_Result
JOIN Exam_Subject ON Exam_Result.SubjectID = Exam_Subject.ID
RIGHT OUTER JOIN Student ON Exam_Result.StudentID = Student.ID
WHERE  Student.SortCode ='|1||1033||1034||1035|'
AND ExamID =332
GROUP BY StudentID,name


这是一段sql server语句,你是不是很明白就看出来了。

我们要做的只是把列名起个别名,变成中文。然后绑定就可以了。是不是很简单。

刚一遇到问题的时候,我也很头痛,可是细细的想一下后,你会发现,不是光有一条路可以通向罗马。

如果你有更好的方法,请告诉我,给我留言,我将不省感谢。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐