2012-06-02 43 views
4

我在C#Windows窗體中創建了一個類來表示我的數據庫。 它具有使用列表<>將master/detail綁定到兩個datagridview中

與員工個人資料的記錄與培訓(主)和TrainingDetails(細節)現在

,如何可以顯示成2的datagridview此,每當我選擇一個「主/細節訓練「從第一個datagridview它將顯示在第二個datagridview的細節。

無論何時用戶從第一個datagridview中選擇一個新項目,它都很容易更改第二個datagridview的數據源。但即時通訊想知道如何做到專業。

此外,保存是一個痛苦,我想迭代通過數據行並保存它,但這意味着我必須知道什麼數據已被更新,插入和刪除。

請幫幫我。我是一個新手。

+0

不要忘記標記答案爲接受,如果你有你想要的信息.. –

回答

7

BindingSources負責爲您服務。

例如說我有兩個班,老師和學生:

public class Teacher 
{ 
    private List<Student> _students = new List<Student>(); 
    public string Name { get; set; } 
    public string Class { get; set; } 
    public List<Student> Students { get { return _students; } } 
} 

public class Student 
{ 
    public string Name { get; set; } 
    public int Age { get; set; } 
} 

然後,您可以創建教師的列表,它代表了主/明細情況:

List<Teacher> teachers = new List<Teacher>(); 
Teacher t = new Teacher(); 
t.Name = "Mr. Smith"; 
t.Class = "A1"; 
teachers.Add(t); 

Student s = new Student(); 
s.Name = "Jimmy Jones"; 
s.Age = 6;    
t.Students.Add(s); 

s = new Student(); 
s.Name = "Jane Doe"; 
s.Age = 5; 
t.Students.Add(s); 

t = new Teacher(); 
t.Name = "Ms. Allen"; 
t.Class = "B3"; 
teachers.Add(t); 

s = new Student(); 
s.Name = "Sally Student"; 
s.Age = 7; 
t.Students.Add(s); 

在我的形式我有兩個DataGridViews,teachersDataGridViewstudentsDataGridView和兩個綁定源teachersBindingSourcestudentsBindingSource

我一切絲像這樣:

teachersBindingSource.DataSource = teachers; 

    studentsBindingSource.DataSource = teachersBindingSource; 
    studentsBindingSource.DataMember = "Students"; 

    teachersDataGridView.DataSource = teachersBindingSource; 
    studentsDataGridView.DataSource = studentsBindingSource; 

而且形式從教師電網選擇一個項目上跑起來的時候,就好像被施了魔法改變學生的網格。


爲了管理插入,更新和刪除您將需要實現某種變化的跟蹤自己(或使用ORM如實體框架或NHibernate的)。這是一個值得自己提出的問題,因此請閱讀這些技術(並查看下面的博客文章),並在遇到一些具體問題時再回來。


對於這個答案,我沉重借用從this優秀的後 - 我給出的例子是完整的,避免了大量的中,作者例子的複雜性,但最終你可能會想至少知道的一切他討論。下載他的演示,並看看。