现在要做一个页面,数据库类似与下面的设计:(并非原表,但是一定要这样设计)
数据库中的3个表1、课程表:id  name
1    语文
2    数学
3    英语2、学生表:id  name 
1   张三
2   李四
3   小华3、报名表:id  studentId  courseId   是否报名
1   1              1         1
2   2              2         0
3
现在要把这种关系反映到界面,以便与报名
页面有个GridView.
根据逻辑关系,把数据库中的数据生成一张虚拟表:private DataTable GetTable()
    {
        DataSet ds = new DataSet();
        ds = cs.GetStudentDataSet();    //得到所有的学生信息        DataTable myTable = new DataTable();
        myTable.Columns.Add("学生姓名");
        _entry = cs.GetEntryContent(0);   //这个就把语文、数学 绑定到table的头(数据的多少是不固定的,例如:语、数、英、物……)
        for (int i = 0; i < _entry.Count; i++)
        {
            myTable.Columns.Add(_entry[i].CourseName);
        }
        //添加表的内容
        if (ds != null && ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0)
        {
            for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
            {
                DataRow dr = myTable.NewRow();                
                dr["学生姓名"] = ds.Tables[0].Rows[i][TableInfo.CompanyInfo.Columns.CompanyName].ToString();
                for (int j = 0; j < _entry.Count; j++)
                {
                    dr[_entry[j].CourseName] = 0;   //或是1  (即是否)
                }
                myTable.Rows.Add(dr);
            }
        }        
        return myTable;
    }现在要把这个DataTable 绑定到GridView ,GridView 上面有checkbox
绑定好以后类似与:学生姓名 |语文   | 数学   |  英语 |物理    |
小华     |复选框1|复选框2 |复选框3|复选框4 |
张三     |复选框1|复选框2 |复选框3|复选框4 |
这个应该怎么实现???(主要是实现把DataTable绑定到GridView,并且GridView 里面要自动根据列的多少,有相应的CheckBox出现)
希望我已经表述清楚了。

解决方案 »

  1.   

    你现在这样已经可以显示出表格了吧?主要是把列的类型设置成bool就行了吧
      

  2.   

    我的已经显示成表格了怎么设置啊 ???
    我新手
    还有就是表格的列是自动从数据库读取的,怎么绑定到GridView呢??<Columns> 
            <asp:BoundField DataField="xxx" HeaderText="ddd" />
            <asp:BoundField DataField="xxx" HeaderText="ddd" />
    </Columns>现在怎么知道 “xxx”是什么????
      

  3.   

    BS的啊?没怎么用过BS的GridView看看RowCreated事件行不行    if(e.Row.RowType == DataControlRowType.DataRow)
        {
    foreach (TableCell cell in e.Row.Cells)
    {
    CheckBox checkBox = new CheckBox();
    cell.Controls.Add(checkBox);
    }
        }
      

  4.   

    BS的啊?没怎么用过BS的GridView看看RowCreated事件行不行    if(e.Row.RowType == DataControlRowType.DataRow)
        {
    foreach (TableCell cell in e.Row.Cells)
    {
    CheckBox checkBox = new CheckBox();
    cell.Controls.Add(checkBox);
    }
        }
      

  5.   

    不行  是不是我的代码写的不对啊。上面的DataTable 的数据已经取到了。前台页面:
    <asp:GridView ID="GridView1" runat="server" onrowcreated="GridView1_RowCreated">
    </asp:GridView>后台cs:protected void Page_Load(object sender, EventArgs e)
        {
            GridView1.DataSource = GetTable();
            GridView1.DataBind();
        }这个绑定的时候页面已经取得值了
    现在就是怎么绑定checkbox的问题了
    protected void GridView1_RowCreated(object sender, GridViewRowEventArgs e)
        {
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                foreach (TableCell cell in e.Row.Cells)
                {
                    CheckBox checkBox = new CheckBox();
                    cell.Controls.Add(checkBox);
                }
            } 
        }
      

  6.   

    你把dr[_entry[j].CourseName] = 0;   //或是1  (即是否)
    改成:
    dr[_entry[j].CourseName] = "true";   //或是"false"  (即是否)
    看看行不。
    我以前也做过类似的,就是这样
      

  7.   

    楼主看这里:
    http://www.netcsharp.cn/topictag-1.aspxPS:能帮到楼主的话,就点下广告支持下,谢谢咯.....还有顺带给个分...