表A
辅导员 辅导类别 学生
张三 TYPEA 1
张三 TYPEA 2
张三 TYPEA 3
张三 TYPEB 4
张三 TYPEB 5
张三 TYPEB 6
张三 TYPEC 7
张三 TYPEC 8
张三 TYPEC 9
李四 TYPEA 10
李四 TYPEA 11
李四 TYPEA 12
李四 TYPEB 13
李四 TYPEB 14
李四 TYPEB 15
李四 TYPEC 16
李四 TYPEC 17
李四 TYPEC 18
王五 TYPEA 19
王五 TYPEA 20
王五 TYPEA 21
王五 TYPEA 22
王五 TYPEB 23
王五 TYPEB 24
王五 TYPEB 25
王五 TYPEC 26
王五 TYPEC 27根据表A生成该交叉表
张三 李四 王五
TYPEA 1#2#3 10#11#12 19#20#21
TYPEB 4#5#6 13#14#15 22#23#24
TYPEC 7#8#9 16#17#18 25#26#27最后显示也是交叉表的形式,所有DATASOURCE应该是交叉表
但是显示数据并不是学生ID加#分隔,而是通过学生ID去表B读出学生的姓名,年龄等信息,当ONMOUSEOVER时显示出来问题
1.ONMOUSEOVER就需要动态生成很多DIV(不能用TITLE,因为显示起来比较复杂,也想用DATAGRID处理)丢给客户端HTML,怎么实现?
2.因为数据比较多,不能全用特殊符号分隔,然后在进行字符串处理,那样不太靠谱。ORACLE存储过程与ADO.NET能不能实现执行多个存储过程,动态生成多个游标,FILL到一个DATASET里的多个DATATALBE,其中第一个DATATABLE为交叉表本身,剩下DATATABLE其实是第一个DATATABLE表格中的具体信息,可以以辅导员+辅导类别来命名这些DATATABLE里面放学生的具体信息。如果可以,怎么做,包括存储过程和C#程序。有其他思路易实现更好,不过一定要ONMOUSEOVER,A表结构为固定的,不能更改

解决方案 »

  1.   

    1.ONMOUSEOVER就需要动态生成很多DIV(不能用TITLE,因为显示起来比较复杂,也想用DATAGRID处理)丢给客户端HTML,怎么实现?
    +++++++++++++++++++++++++++++++++++++++++++
    你可以设置一个明细区,onmouseover的时候,给明细区的某个控件赋值。
    举例说明,如果是一个DataGrid的话:
    private void DataGrid1_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
    {   
        if(e.Item.ItemType==ListItemType.Item || e.Item.ItemType==ListItemType.AlternatingItem )
        {
            e.Item.Attributes.Add("onmouseover","document.getElementById('Label1').innerText=" + e.Item.Cells[0].Text);
        }
    }
    当然,DataGrid不能满足你的要求,你应该用DataList。
    2.因为数据比较多,不能全用特殊符号分隔,然后在进行字符串处理,那样不太靠谱。ORACLE存储过程与ADO.NET能不能实现执行多个存储过程,动态生成多个游标,FILL到一个DATASET里的多个DATATALBE,其中第一个DATATABLE为交叉表本身,剩下DATATABLE其实是第一个DATATABLE表格中的具体信息,可以以辅导员+辅导类别来命名这些DATATABLE里面放学生的具体信息。如果可以,怎么做,包括存储过程和C#程序。
    +++++++++++++++++++++++++++++++++++++++++++
    直接用两个sql语句不能实现你的要求吗?
      

  2.   

    1.
    Attribute.Add那个我知道 但是要好多个明细区,怎么生成,要动态生成辅导员数量×辅导类别数量个明细区,而不是一个,要一次性全显示再HTML里。
    2.能实现,但是是一个SELECT里(读交叉表)套好多个SELECT(明细)
    我想把这么多个DATATABLE用一个存储过程FILL到一个DATASET的多个DATATABLE里