|
课程表的最终效果 |
具体方法如下:
1.首先定义一个datatable,并添加列集,行集。 一张课程表的表结构就出来了。(如上图表结构式4行8列)只有表有结构、有数据才可以绑到
datagridivew控件里。否则绑上了,也没得显示。
代码如下:
int num , week ; // 周数节数,第二步的时候用得到。
DataTable dt = new DataTable("subject");
dt.Columns.Add("周数/节数", typeof(string)); //添加列集,下面都是
dt.Columns.Add("周一", typeof(string));
dt.Columns.Add("周二", typeof(string));
dt.Columns.Add("周三", typeof(string));
dt.Columns.Add("周四", typeof(string));
dt.Columns.Add("周五", typeof(string));
dt.Columns.Add("周六", typeof(string));
dt.Columns.Add("周日", typeof(string));
for (int i = 0; i < 4; i++) //用循环添加4个行集~
{
DataRow dr = dt.NewRow();
dt.Rows.Add(dr);
}
dt.Rows[0][0] = "第1节"; //向第一行里的第一个格中添加一个“第1节”
dt.Rows[1][0] = "第2节"; //向第二行里的第一个格中添加一个“第
2
节”
dt.Rows[2][0] = "第3节"; //向第三行里的第一个格中添加一个“第3节”
dt.Rows[3][0] = "第4节"; //向第四行里的第一个格中添加一个“第4节”
|
数据库的样式 |
2. 做到上边表的结构就有了。接下来该向表中添加数据了。 我用的方法是在循环里拼凑 sql 语句。 向每一行的每一个单元格中添加数据。
写一个嵌套的循环就可以了。
代码如下:
for (int i = 0; i < 4; i++) //一共有四行,在课程表里 i 应该表示的是节数。
{
for (int j = 1; j < 8; j++) //每行有7列需要添加数据,在课程表中,J 表示的应该是周数。
{
num = i + 1;
week = j;
string sql = "select subject ,teacher,room,weekstar_end from subject_table where num='" + num.ToString() + "' and week = '" + week.ToString() + "'"; //拼凑SQL语句。
SqlConnection conn = new SqlConnection ("连接字符串~~");
conn.Open();
SqlCommand command = new SqlCommand(sql, conn);
SqlDataReader reader = command.ExecuteReader();
while (reader.Read())
{
sum = reader.GetValue(0).ToString() + "\n" + reader.GetValue(1).ToString() + "\n" + reader.GetValue(2).ToString() + "\n" + reader.GetValue(3).ToString();
//如上图,一个格子里头有好几个信息。比如教师,教室,课程名。这里把从数据库中取出的数据拼在一起。放在变量SUM里。
dt.Rows[i][j] = sum; //把Sum 添加到datatable的小格子里。
}
conn.Close(); //关闭数据库连接。
}
}
3.最后一步,把整好的datatable添加到datagridview里。万事大吉了。
代码如下:
this.DataGridView.DataSource = dt; //好了。