Bonjour,
J'éssaye de faire fonctionner sur mon ordinateur l'exemple de microsoft:
Creation d'un Formulaire Maitre/detail avec bd Northwind.
Tout se passe bien:
J'accede à la bd
Je remplis le dataset
Mais je bloque au niveau de L'instruction suivante:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 DataRelation relation = new DataRelation("CustomersOrders",data.Tables["Customers"].Columns["CustomerID"],data.Tables["Orders"].Columns["CustomerID"]); data.Relations.Add(relation);
J'ai le message suivant:
J'ai beau chercher mais j'ai rien trouvé.L'argument 'column' ne peut pas être null.
Quelqu'un pourrait me dire pourquoi.
Merci
Voici Mon code:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Data.SqlClient; using System.Data.SqlServerCe; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Configuration; using System.Configuration.Assemblies; using System.Text.RegularExpressions; using System.Data.SqlTypes; using System.Runtime.InteropServices; public class Form1 : System.Windows.Forms.Form { private DataGridView masterDataGridView = new DataGridView(); private BindingSource masterBindingSource = new BindingSource(); private DataGridView detailsDataGridView = new DataGridView(); private BindingSource detailsBindingSource = new BindingSource(); public static void Main() { Application.Run(new Form1()); } // Initializes the form. public Form1() { masterDataGridView.Dock = DockStyle.Fill; detailsDataGridView.Dock = DockStyle.Fill; SplitContainer splitContainer1 = new SplitContainer(); splitContainer1.Dock = DockStyle.Fill; splitContainer1.Orientation = Orientation.Horizontal; splitContainer1.Panel1.Controls.Add(masterDataGridView); splitContainer1.Panel2.Controls.Add(detailsDataGridView); this.Controls.Add(splitContainer1); this.Load += new System.EventHandler(Form1_Load); this.Text = "DataGridView master/detail demo"; } private void GetData() { try { string connectionString = ConfigurationManager.ConnectionStrings[1].ConnectionString; MessageBox.Show("conn=" + connectionString); SqlCeConnection connection = new SqlCeConnection(connectionString); connection.Open(); // Create a DataSet. DataSet data = new DataSet(); data.Locale = System.Globalization.CultureInfo.InvariantCulture; // Add data from the Customers table to the DataSet. SqlCeDataAdapter masterDataAdapter = new SqlCeDataAdapter ("select * from Customers", connectionString); masterDataAdapter.Fill(data, "Customers"); // Add data from the Orders table to the DataSet. SqlCeDataAdapter detailsDataAdapter = new SqlCeDataAdapter("select * from Orders", connectionString); detailsDataAdapter.Fill(data, "Orders"); MessageBox.Show("cdst=" + data.Tables["Customers"].Rows[0][0]); MessageBox.Show("cdst=" + data.Tables["Customers"].Rows[0][1]); MessageBox.Show("cdst=" + data.Tables["Orders"].Rows[0][0]); MessageBox.Show("cdst=" + data.Tables["Orders"].Rows[0][1]); // Establish a relationship between the two tables. DataRelation relation = new DataRelation("CustomersOrders",data.Tables["Customers"].Columns["CustomerID"],data.Tables["Orders"].Columns["CustomerID"]); data.Relations.Add(relation); // Bind the master data connector to the Customers table. masterBindingSource.DataSource = data; masterBindingSource.DataMember = "Customers"; // Bind the details data connector to the master data connector, // using the DataRelation name to filter the information in the // details table based on the current row in the master table. detailsBindingSource.DataSource = masterBindingSource; detailsBindingSource.DataMember = "CustomersOrders"; connection.Dispose(); detailsBindingSource.DataMember = "CustomersOrders"; } catch (SqlCeException) { MessageBox.Show("To run this example, replace the value of the " + "connectionString variable with a connection string that is " + "valid for your system."); } } private void Form1_Load(object sender, System.EventArgs e) { // Bind the DataGridView controls to the BindingSource // components and load the data from the database. masterDataGridView.DataSource = masterBindingSource; detailsDataGridView.DataSource = detailsBindingSource; GetData(); // Resize the master DataGridView columns to fit the newly loaded data. masterDataGridView.AutoResizeColumns(); // Configure the details DataGridView so that its columns automatically // adjust their widths when the data changes. detailsDataGridView.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells; } }
Partager