2014-01-24 3 views
0

Я пишу программу временного стола для нашей уникальности (Smart half или Semi-automatic или т. Д.).создать специальный динамический datagrid из базы данных

Я пишу это whit C# и Access Databse.

я есть база данных с таблицами ниже: 1-учителей (teacher_id, TEACHER_NAME) 2- классы (class_id, 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)

Я написал Crud код для всех таблиц исключить время таблиц

Я думаю, что для этого действия лучше всего использовать datagrid

Теперь для времени табличной формы я хочу дружественный к пользователю интерфейс, как показано ниже

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

Я хочу, чтобы в заголовке столбца (исключить колонка справа вверху) дисплей часов

и в строке (исключения в правом верхнем углу) дисплейных классов

и в пересечении любого классного и час набора и урок

Примечание:

1-первая строка DataGrid является часами, которые получают из БДА 2-первого столбца (справа налево) на сетке это классы, которые получают из БДА 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(); 
     } 
    } 
} 
Смежные вопросы