asp.net列表控件在无法确定列的时候,如何绑定
2009-02-05 15:06
423 查看
asp.net中的列表控件很好用,可是有些时候会出现一些问题, 比如我们不知道它有多少列,这怎么办呢。你也许会问,不可能出现这种情况啊。
我在最近的一个项目中就有一个这个功能,就是学生的成绩。因为初中,小学,高中的课程是不一样,但是却要在一个控件中显示它的成绩。这里的显示是分别显示,小学, 初中,高中的成绩。
这要怎么办呢。我们都知道,列表控件有一个功能就是自己加载列,就是你绑定它的数据源里有多少列,它就会给你自动加载上多少列,这个功能我们想大家都会用,不用我多说了,我们就用这个功能。
做这个功能的重要部分,不在asp.net的控件使用和语法,而在于sql的语句,为什么这么说呢。看一下下面这个sql语句
这样看,怕是你看不明白为什么,那么下在这个代码,你应该很明白了吧。
这是一段sql server语句,你是不是很明白就看出来了。
我们要做的只是把列名起个别名,变成中文。然后绑定就可以了。是不是很简单。
刚一遇到问题的时候,我也很头痛,可是细细的想一下后,你会发现,不是光有一条路可以通向罗马。
如果你有更好的方法,请告诉我,给我留言,我将不省感谢。
我在最近的一个项目中就有一个这个功能,就是学生的成绩。因为初中,小学,高中的课程是不一样,但是却要在一个控件中显示它的成绩。这里的显示是分别显示,小学, 初中,高中的成绩。
这要怎么办呢。我们都知道,列表控件有一个功能就是自己加载列,就是你绑定它的数据源里有多少列,它就会给你自动加载上多少列,这个功能我们想大家都会用,不用我多说了,我们就用这个功能。
做这个功能的重要部分,不在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语句,你是不是很明白就看出来了。
我们要做的只是把列名起个别名,变成中文。然后绑定就可以了。是不是很简单。
刚一遇到问题的时候,我也很头痛,可是细细的想一下后,你会发现,不是光有一条路可以通向罗马。
如果你有更好的方法,请告诉我,给我留言,我将不省感谢。
相关文章推荐
- 技术笔记1_ASP.net:如何让DropDownList之类的单值绑定控件绑定多个字段值
- Asp.Net中列表数据绑定控件浅析
- ASP.NET中DropDownList下拉框列表控件绑定数据的4种方法
- asp.net,datalist 控件 绑定数据,如何删除数据的刷新。
- asp.net控件如何同时绑定多个字段
- 摘要:了解 ASP.NET 2.0 中的用于生成自定义数据绑定控件的工具是如何演变的
- [ASP.NET MVC]通过对HtmlHelper扩展简化“列表控件”的绑定
- ASP.NET中DropDownList下拉框列表控件绑定数据的4种方法
- 如何解决asp.net中使用webbrowser是出现的"无法实例化ActiveX 控件"的异常"
- 菜鸟学Asp.Net——GridView控件之RowDataBind事件中如何获取已绑定的数据
- [ASP.NET MVC]通过对HtmlHelper扩展简化“列表控件”的绑定
- asp.net如何确定是哪些控件验证失败
- asp.net2.0中Gridview控件中如何绑定dropdownlist控件-.NET技术/ASP.NET
- asp.net控件开发基础(19) --------数据列表绑定控件
- ASP.NET 中 DropDownList+DataList(数据列表)的使用前台绑定
- 如何:确定调用 ASP.NET 网页的方式
- 每日学习心得:CustomValidator验证控件验证用户输入的字符长度、Linq 多字段分组统计、ASP.NET后台弹出confirm对话框,然后点击确定,执行一段代码
- 如何在ASP.NET下遍历指定页面上所有控件
- 创建一个可以绑定数据的 ASP.NET Web 部件控件
- ASP.NET - 如何:使用 ASP.NET PasswordRecovery 控件启用用户密码恢复