2014-01-24 50 views
0

我正在爲我們的univercity(智能半或半自動等)寫一個時間表程序。從數據庫創建特殊的動態數據網格

我正在寫這個惠特C#和訪問數據庫。

我有下面表的數據庫: 1-教師(teacher_id,TEACHER_NAME) 2-類(類標識碼,CLASS_NAME) 3-教訓(lesson_id,lesson_name) 4-術語(term_id,term_name) 5 - 小時(hour_id,hour_name) 6天(day_id,DAY_NAME) 7-時間表(time_table_id,teacher_id,lesson_id,term_id,class_id_hour_id,day_id)

我寫界面污物代碼的所有表排除時間表

我認爲這個行爲最好的事情是datagrid

現在時間表格形式我要像下面

www.uplooder.net/img/image/47/16197657f8466c5a1b8716aee14d768b/csharp.jpg

我想在列標題用戶友好的用戶界面(排除列右上)顯示小時

而行(不包括右上)顯示類

而且在任何類和小時組老師的交集和教訓

注:

數據網格的

1,第一行是小時,從數據庫獲取數據網格的 2,第一列(從右到左)是從DB 獲得類3,如果先前設定的任何細胞秀老師的名字和課程名稱

我該怎麼辦?

請幫我

非常感謝

回答

0

我這樣做

感謝我的朋友們對你的答案

timtable形式的所有代碼

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Text; 
using System.Windows.Forms; 

namespace Time_Table 
{ 
    public partial class timetable : Form 
    { 
     public timetable() 
     { 
      InitializeComponent(); 
     } 


     public void FillDataGrid() 
     { 
      string term_id = this.comboBox1.SelectedValue.ToString(); 
      string day_id = this.comboBox2.SelectedValue.ToString(); 
      string hour_id; 
      string class_id; 

      string query; 

      DataTable result; 

      for (int rowcounter = 0; rowcounter < this.dataGridViewX1.Rows.Count; rowcounter++) 
      { 
       for (int columncounter = 1; columncounter < this.dataGridViewX1.Columns.Count; columncounter++) 
       { 
        class_id = this.dataGridViewX1.Rows[rowcounter].Cells[0].Tag.ToString(); 
        hour_id = this.dataGridViewX1.Columns[columncounter].Name; 

        query = string.Format("SELECT * FROM timetable WHERE time_table_term_id={0} " + 
         "AND time_table_day_id={1} AND time_table_hour_id={2} AND time_table_class_id={3}", term_id, day_id, hour_id, class_id); 

        result = CrudClass.SelectAll(query, "timetable"); 

        if (result.Rows.Count > 0) 
        { 
         query = string.Format("SELECT teacher_name,lesson_name FROM timetable,teachers,lessons WHERE time_table_term_id={0} " + 
         "AND time_table_day_id={1} AND time_table_hour_id={2} AND time_table_class_id={3} AND time_table_teacher_id = teacher_id AND time_table_lesson_id=lesson_id" 
         , term_id, day_id, hour_id, class_id); 

         result = CrudClass.SelectByQuery(query); 

         this.dataGridViewX1.Rows[rowcounter].Cells[columncounter].Value = result.Rows[0].ItemArray[1].ToString() + "/" 
                          + result.Rows[0].ItemArray[0].ToString(); 

         this.dataGridViewX1.Rows[rowcounter].Cells[columncounter].Style.BackColor = Color.GreenYellow; 
        } 
        else { 
         this.dataGridViewX1.Rows[rowcounter].Cells[columncounter].Style.BackColor = Color.Red; 
        } 

       } 
      } 
     } 


     private void timetable_Load(object sender, EventArgs e) 
     { 
      DataTable ClassNames ; 
      DataTable HourNames ; 

      ClassNames = CrudClass.SelectAll("SELECT * FROM classes", "classes"); 
      HourNames = CrudClass.SelectAll("SELECT * FROM hours", "hours"); 


      this.dataGridViewX1.Columns.Add("empty", "ساعت/نام کلاس"); 

      for (int i = 0; i < HourNames.Rows.Count; i++) 
      { 
       dataGridViewX1.Columns.Add(new DataGridViewTextBoxColumn() { Name=HourNames.Rows[i].ItemArray[0].ToString(),HeaderText=HourNames.Rows[i].ItemArray[2].ToString() }); 
      } 


      for (int classCounter = 0; classCounter < ClassNames.Rows.Count; classCounter++) 
      { 
       this.dataGridViewX1.Rows.Add(new object[]{ClassNames.Rows[classCounter].ItemArray[2].ToString()}); 
       this.dataGridViewX1.Rows[classCounter].Cells[0].Tag = ClassNames.Rows[classCounter].ItemArray[0].ToString(); 
      } 


      //------------------------ fill combobox ------------------------------ 

      DataTable termValues = CrudClass.SelectAll("SELECT * FROM terms","terms"); 
      DataTable dayValues = CrudClass.SelectAll("SELECT * FROM days", "days"); 

      this.comboBox1.DataSource = termValues; 
      this.comboBox1.DisplayMember = "term_name"; 
      this.comboBox1.ValueMember = "term_id"; 


      this.comboBox2.DataSource = dayValues; 
      this.comboBox2.DisplayMember = "day_name"; 
      this.comboBox2.ValueMember = "day_id"; 


     } 

     private void dataGridViewX1_ColumnHeaderMouseClick(object sender, DataGridViewCellMouseEventArgs e) 
     { 

     } 

     private void dataGridViewX1_CellClick(object sender, DataGridViewCellEventArgs e) 
     { 

      if (comboBox1.Items.Count>0 && comboBox2.Items.Count>0 && dataGridViewX1.Columns.Count>1 && dataGridViewX1.Rows.Count>0 

       && e.ColumnIndex >0 && e.RowIndex>=0) 
      { 
       add_timetable frm_add_timetable = new add_timetable(); 
       frm_add_timetable.term_id = this.comboBox1.SelectedValue.ToString(); 
       frm_add_timetable.day_id = this.comboBox2.SelectedValue.ToString(); 
       frm_add_timetable.hour_id = this.dataGridViewX1.Columns[e.ColumnIndex].Name; 
       frm_add_timetable.class_id = this.dataGridViewX1.Rows[e.RowIndex].Cells[0].Tag.ToString(); 
       frm_add_timetable.ShowDialog(); 
      } 





     } 

     private void dataGridViewX1_CellContentClick(object sender, DataGridViewCellEventArgs e) 
     { 

     } 

     private void button1_Click(object sender, EventArgs e) 
     { 
      FillDataGrid(); 
     } 

     private void timetable_Activated(object sender, EventArgs e) 
     { 
      FillDataGrid(); 
     } 
    } 
}