现在做教学管理系统,需要对教学情况进行统计,培训老师一个比较bt的需求,大家帮忙提示一下思路,一定是C#的,其它的看不懂要求如下:某老师教一群学生A课程,该课程共分为a,b,c三个单元,每个单元分1,2,3次课上完,每次上完课,该老师需要登记如下信息:教师姓名,学生姓名,上课时间,上课内容,对学生的该次课程定级别打分(优,良,差)。
那么教务主任通过查询“学生姓名”关键字来一目了然的了解,该生在该整个课程中的学习情况(包括每次课由哪个老师教?什么时间?成绩多少?)我考虑,这个涉及到了多行列的datagrid的数据显示,请做过的朋友和高手提供一下这方面的资料和其它的思路!!多谢,分数不够再专门开帖!

解决方案 »

  1.   

    GridView嵌套,网上有,搜一下,不过,界面不大好控制
      

  2.   

    姓名能做关键字吗????
    用学号吧,每次教务主任查找是只要把对应的信息SOU出来不就可以了吗
      

  3.   

    是说老师提供一个学生姓名,然后检索出所有该学生的信息吗?
    这不就是一个SQL就可以解决了嘛。
      

  4.   

    你简单地画一个layout出来看看。
      

  5.   

    用repeater, 列中可以在嵌套repeater或datalist
      

  6.   

    那么教务主任通过查询“学生姓名”关键字来一目了然的了解,该生在该整个课程中的学习情况(包括每次课由哪个老师教?什么时间?成绩多少?)
    //樓主設計表時,建議用“學號”來做主鍵。姓名可能出現重復,且有先天缺陷
    //該查詢可以通過GridView嵌套來解決。但由於GridView或DataGrid格式太單一,可以考慮用Repeater嵌套。具體的代碼,樓主可以自己搜搜。
      

  7.   

    那么教务主任通过查询“学生姓名”关键字来一目了然的了解,该生在该整个课程中的学习情况(包括每次课由哪个老师教?什么时间?成绩多少?)
    //樓主設計表時,建議用“學號”來做主鍵。姓名可能出現重復,且有先天缺陷
    //該查詢可以通過GridView嵌套來解決。但由於GridView或DataGrid格式太單一,可以考慮用Repeater嵌套。具體的代碼,樓主可以自己搜搜。
      

  8.   

    那么教务主任通过查询“学生姓名”关键字来一目了然的了解,该生在该整个课程中的学习情况(包括每次课由哪个老师教?什么时间?成绩多少?)
    //樓主設計表時,建議用“學號”來做主鍵。姓名可能出現重復,且有先天缺陷
    //該查詢可以通過GridView嵌套來解決。但由於GridView或DataGrid格式太單一,可以考慮用Repeater嵌套。具體的代碼,樓主可以自己搜搜。
      

  9.   

    模板列,写个table不是很容易达到目的,何必那么麻烦.
      

  10.   

    用第三方控件NetAdvantage可以很容易实现。它在一个datagrid中还可以在嵌套一个datagrid。
      

  11.   

    用repeater就可以完全搞定....
      

  12.   

    推荐使用Infragistics中的DataGrid控件,可以解决你的问题,如果觉得Infragistics运行比较慢的话,可以考虑自己写一个
      

  13.   

    谢谢楼上朋友的热情解答,我用的是vs2005+xp+sqlserver2000,我说急了,是应该用学号查的,没怎么搜到这样的列子,推荐用的第三方控件,有些复杂
      

  14.   

    介绍你去下http://dotnet.aspx.cc/ShowList.aspx?id=1
      

  15.   

    其实我更愿意使用datareader自己边读数据边画表格,虽然麻烦,但是方便控制。
      

  16.   

    哈哈,我做来了一个查询系统。至于如何管理(添加更新删除)你自己搞了
    一个五个表,3NF规范了的数据库。用视图来查询数据,内置了一个搜索功能
    插入编辑删除 三个操作,至少要求每个表都要三个存储过程了。15累死去,自己创建向导create吧先贴图了
    这个是5张表的视图
    http://www.10kuai.cn/csdn/view1.gif
    这个是5张表的关系图
    http://www.10kuai.cn/csdn/guanxitu1.gif
    这是查询后的结果,因为只是测试用数据不是完整的了。前面看似重复其实是满足“该生在该整个课程中的学习情况(包括每次课由哪个老师教?什么时间?成绩多少?)”  最后面的成绩是同一个成绩,数据上没有冗余
    http://www.10kuai.cn/csdn/list1.gif
    最后一张图,查询“王别石”得到的精确的结果,这个结果我认为切题恰到好处。如果不是这样的,你可以自己重新设计数据库了
    http://www.10kuai.cn/csdn/query1.gif这里是我写的源码
    http://www.10kuai.cn/csdn/course.rar
    里面包含了数据库文件 mdf 和log 文件。
    先在sqlserver里面创建course数据库
    再把sqlserver停掉,然后用压缩包里面的覆盖就OK了,呵呵。我现在机器是开着的,这里可以查看示例,访问不了就说明关机了
    http://hero4u.vicp.net/study/course/index.aspx
    http://hero4u.vicp.net/study/course/insertStudent.aspx
      

  17.   

    分数多,来搞点.呵呵 :)下面简单设计:
    1.显示: 采用gridview内有table模板,有三列(单元),每列有三小列(每小节).数据采用
           直接 绑定便可.
    2. 数据表结构(课时,教师,时间,内容,学号,姓名,成绩)其中课时值要限定(A1-C3),因根据其值进行分解
    3. 数据结果查询视图应该为(学号,A1,A2,A3,B1,B2,B3,C1,C2,C3)其中 A1内容为当前学生的成绩,上课教师及时间等详细信息.即将几个字段内容合并成一个字段A1中,便于绑定好显示
    下面是部分代码(已调试)<form id="form1" runat="server">
        <div>
            <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
            <asp:Button ID="Button1" runat="server" Text="Search.." OnClick="Button1_Click" /><br />
            <asp:GridView ID="GridView1" AutoGenerateColumns="false" runat="server" Height="195px" Width="700px" CellPadding="4" ForeColor="#333333" GridLines="None">
                <Columns>
                <asp:TemplateField>
                <HeaderTemplate>
                <table  width="700px"><tr><td colspan="9">课时查询</td></tr>
                <tr>
                 <td colspan="4">A单元</td>
                 <td colspan="3">B单元</td>
                 <td colspan="3">C单元</td>
                 </tr>
                 <tr>
                 <td>学生</td>
                 <td>A1</td>
                 <td>A2</td>
                 <td>A3</td>
                 <td>B1</td>
                 <td>B2</td>
                 <td>B3</td>
                 <td>C1</td>
                 <td>C2</td>
                 <td>C3</td>
                 </tr>
                </HeaderTemplate>
                <ItemTemplate>
                <tr>
                 <td><%# DataBinder.Eval(Container.DataItem,"Stu_no") %> &nbsp;</td>
                 <td><%# DataBinder.Eval(Container.DataItem,"A1") %></td>
                 <td><%# DataBinder.Eval(Container.DataItem,"A2") %></td>
                 <td><%# DataBinder.Eval(Container.DataItem,"A3") %></td>
                 <td><%# DataBinder.Eval(Container.DataItem,"B1") %></td>
                 <td><%# DataBinder.Eval(Container.DataItem,"B2") %></td>
                 <td><%# DataBinder.Eval(Container.DataItem,"B3") %></td>
                 <td><%# DataBinder.Eval(Container.DataItem,"C1") %></td>
                 <td><%# DataBinder.Eval(Container.DataItem,"C2") %></td>
                 <td><%# DataBinder.Eval(Container.DataItem,"C3") %></td>
                 </tr>
                </ItemTemplate>
                 
                <FooterTemplate></table></FooterTemplate> 
                </asp:TemplateField>
                </Columns>
                <FooterStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
                <RowStyle BackColor="#EFF3FB" />
                <EditRowStyle BackColor="#2461BF" />
                <SelectedRowStyle BackColor="#D1DDF1" Font-Bold="True" ForeColor="#333333" />
                <PagerStyle BackColor="#2461BF" ForeColor="White" HorizontalAlign="Center" />
                <HeaderStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
                <AlternatingRowStyle BackColor="White" />
                
            
            </asp:GridView>
        
        </div>
        </form>
    数据表:
    if exists(
     Select name from sysobjects where name=N'Study' and type='U'
    )
    drop table StudyCreate Table Study(course nvarchar(2), stu_no nvarchar(10),stu_Name nvarchar(10),tehname nvarchar(10),rec_cr Datetime,Content nvarchar(100),source nvarchar(1))Insert study values('A1','001','张三','李老师 ',getdate(),'','良')
    Insert study values('A2','001','张三','张老师 ',getdate(),'','良')
    Insert study values('A3','001','张三','济老师 ',getdate(),'','良')
    Insert study values('B1','001','张三','李老师 ',getdate(),'','优')
    Insert study values('B2','001','张三','张老师 ',getdate(),'','良')
    Insert study values('B3','001','张三','李老师 ',getdate(),'','良')
    Insert study values('C1','001','张三','李老师 ',getdate(),'','差')
    Insert study values('C2','001','张三','张老师 ',getdate(),'','良')
    Insert study values('C3','001','张三','李老师 ',getdate(),'','优')Insert study values('A1','002','李四','李老师 ',GetDATE(),'','优')--Select * From study/* 以下是通过 case course 来进行查询,但是要进行分组. 本题是字符串,未成功。若数字则可
    Select 
          stu_no,
       Case course when 'A1' then '成绩:'+source+' 教师:'+tehname +'时间: '+ cast(rec_cr as varchar(16)) End as A1,
    Case course when 'A2' then '成绩:'+source+' 教师:'+tehname +'时间: '+ cast(rec_cr as varchar(16)) End as A2,
    Case course when 'A3' then '成绩:'+source+' 教师:'+tehname +'时间: '+ cast(rec_cr as varchar(16)) End as A3,
    Case course when 'B1' then '成绩:'+source+' 教师:'+tehname +'时间: '+ cast(rec_cr as varchar(16)) End as B1,
    Case course when 'B2' then '成绩:'+source+' 教师:'+tehname +'时间: '+ cast(rec_cr as varchar(16)) End as B2,
    Case course when 'B3' then '成绩:'+source+' 教师:'+tehname +'时间: '+ cast(rec_cr as varchar(16)) End as B3,
    Case course when 'C1' then '成绩:'+source+' 教师:'+tehname +'时间: '+ cast(rec_cr as varchar(16)) End as C1,
    Case course when 'C2' then '成绩:'+source+' 教师:'+tehname +'时间: '+ cast(rec_cr as varchar(16)) End as C2,
    Case course when 'C3' then '成绩:'+source+' 教师:'+tehname +'时间: '+ cast(rec_cr as varchar(16)) End as C3
    From study
    *//* 以下是通过分解子表(共9次),左连接方式来连接成一个总查询   
    Select AA1.stu_no,A1, A2,A3,B1,B2,B3,C1,C2,C3
    From (
    Select 
          stu_no,'成绩:'+source+' 教师:'+tehname +'时间: '+ cast(rec_cr as varchar(16)) AS A1
    From study
    Where course='A1'
     )as AA1Left join(
    Select 
          stu_no,'成绩:'+source+' 教师:'+tehname +'时间: '+ cast(rec_cr as varchar(16)) AS A2
    From study
    Where course='A2'
     )as AA2
     ON (AA1.stu_no=AA2.stu_no) LEFT JOIN 
    (
    Select 
          stu_no,'成绩:'+source+' 教师:'+tehname +'时间: '+ cast(rec_cr as varchar(16)) AS A3
    From study
    Where course='A3'
     )as AA3
     ON (AA1.stu_no=AA3.stu_no)LEFT JOIN(
    Select 
          stu_no,'成绩:'+source+' 教师:'+tehname +'时间: '+ cast(rec_cr as varchar(16)) AS B1
    From study
    Where course='B1'
     )as AB1
     ON (AA1.stu_no=AB1.stu_no)LEFT JOin 
    (
    Select 
          stu_no,'成绩:'+source+' 教师:'+tehname +'时间: '+ cast(rec_cr as varchar(16)) AS B2
    From study
    Where course='B2'
     )as AB2
     ON (AA1.stu_no=AB2.stu_no) left join 
    (
    Select 
          stu_no,'成绩:'+source+' 教师:'+tehname +'时间: '+ cast(rec_cr as varchar(16)) AS B3
    From study
    Where course='B3'
     )as AB3
     ON (AA1.stu_no=AB3.stu_no)left join
    (
    Select 
          stu_no,'成绩:'+source+' 教师:'+tehname +'时间: '+ cast(rec_cr as varchar(16)) AS C1
    From study
    Where course='C1'
     )as AC1
     ON (AA1.stu_no=AC1.stu_no) LEFT JOIN
    (
    Select 
          stu_no,'成绩:'+source+' 教师:'+tehname +'时间: '+ cast(rec_cr as varchar(16)) AS C2
    From study
    Where course='C2'
     )as AC2
     ON (AA1.stu_no=AC2.stu_no)LEFT JOIN(
    Select 
          stu_no,'成绩:'+source+' 教师:'+tehname +'时间: '+ cast(rec_cr as varchar(16)) AS C3
    From study
    Where course='C3'
     )as AC3
     ON (AA1.stu_no=AC3.stu_no)
      

  18.   

    GridView 是.net2005里面的控件吗?
      

  19.   

    www.supfar.com上面选择DataGrid看一下,现在cnblogs打不开,只好给你首页地址
      

  20.   

    http://dotnet.aspx.cc/Exam/GridViewNested.aspx