我想用DataGrid做一个分组的统计,就是统计一下每个学生选择了几门课,然后放在一行,如同
学号          姓名         所选课程
001          yyyy          777
001          yyyy          888
001          yyyy          999
001号学生共选择了3门课程
002          tttt          888
002          ttt           666
002号学生共选择了2门课程
.....请问怎么实现呀,请各位高手赐教

解决方案 »

  1.   

    在数据库中,用COMPUTER排序之后在绑顶
      

  2.   

    我是想在DataGrid中做成那样,不知道“001号学生共选择了3门课程”这行怎么在DataGrid中显示出来,是显示在数据行之间的
      

  3.   

    在DataGrid.DataBind()中进行绑定,用DataGrid中的DataBinding事件。
      

  4.   

    private void BindData()
    {
    OracleCommand cmd = new OracleCommand("select  A01_TKBN,A01_MSG1 from ta01", this.cn);
    OracleDataAdapter da = new OracleDataAdapter(cmd);
    DataTable dt = new DataTable();
    try
    {
    da.Fill(dt);
    this.DataGrid1.DataSource = dt;
    this.DataGrid1.DataBind();
    }
    catch(Exception ex)
    {
    this.Label1.Text = ex.ToString();
    }
    } private void DataGrid1_DataBinding(object sender, System.EventArgs e)
    {
    DataTable dt = (DataTable)this.DataGrid1.DataSource;
    DataTable dtt = new DataTable();
    dtt.Columns.Add("ID");
    dtt.Columns.Add("NAME");
    dtt.Columns.Add("COUNT");
    string id = null;
    string name = null;
    int count = 0;

    for (int i = 0; i < dt.Rows.Count; i++) 
    {
    if (!dt.Rows[i]["A01_TKBN"].ToString().Equals(id))
    {
    if (id != null)
    {
    DataRow row = dtt.NewRow();
    row["ID"] = id;
    row["NAME"] = name;
    row["COUNT"] = count;
    count = 0;
    dtt.Rows.Add(row);
    }
    }
    else
    {
    count += 1;
    }
    id = dt.Rows[i]["A01_TKBN"].ToString();
    name = dt.Rows[i]["A01_MSG1"].ToString();
    }
    if(id != null)
    {
    DataRow row = dtt.NewRow();
    row["ID"] = dt.Rows[dt.Rows.Count-1]["A01_TKBN"];
    row["NAME"] = dt.Rows[dt.Rows.Count-1]["A01_MSG1"];
    row["COUNT"] = count;
    dtt.Rows.Add(row);
    } this.DataGrid1.DataSource = dtt;
    }