Instrukcje: Powiązanie obiektu widoku danych z kontrolką DataGridView formularzy systemu Windows
Kontrolka DataGridView zapewnia zaawansowany i elastyczny sposób wyświetlania danych w formacie tabelarycznym. Kontrolka DataGridView obsługuje standardowy model powiązania danych formularzy systemu Windows, więc będzie wiązać się z DataView różnymi innymi źródłami danych. W większości sytuacji jednak będziesz wiązać się ze składnikiem BindingSource , który będzie zarządzać szczegółami interakcji ze źródłem danych.
Aby uzyskać więcej informacji na temat kontrolki, zobacz DataGridView Control Overview (Omówienie kontrolki DataGridView DataGridView).
Aby połączyć kontrolkę DataGridView z kontrolką DataView
Zaimplementuj metodę do obsługi szczegółów pobierania danych z bazy danych. Poniższy przykład kodu implementuje metodę, która inicjuje
GetData
SqlDataAdapter składnik i używa jej do wypełnienia elementu DataSet. Pamiętaj, aby ustawićconnectionString
zmienną na wartość odpowiednią dla bazy danych. Potrzebny będzie dostęp do serwera z zainstalowaną przykładową bazą danych AdventureWorks SQL Server.void GetData() { try { // Initialize the DataSet. _dataSet = new DataSet { Locale = CultureInfo.InvariantCulture }; // Create the connection string for the AdventureWorks sample database. const string connectionString = "..."; // Create the command strings for querying the Contact table. const string contactSelectCommand = "SELECT ContactID, Title, FirstName, LastName, EmailAddress, Phone FROM Person.Contact"; // Create the contacts data adapter. _contactsDataAdapter = new SqlDataAdapter( contactSelectCommand, connectionString); // Create a command builder to generate SQL update, insert, and // delete commands based on the contacts select command. These are used to // update the database. var contactsCommandBuilder = new SqlCommandBuilder(_contactsDataAdapter); // Fill the data set with the contact information. _contactsDataAdapter.Fill(_dataSet, "Contact"); } catch (SqlException ex) { MessageBox.Show(ex.Message); } }
Private Sub GetData() Try ' Initialize the DataSet. dataSet = New DataSet() dataSet.Locale = CultureInfo.InvariantCulture ' Create the connection string for the AdventureWorks sample database. Dim connectionString As String = "..." ' Create the command strings for querying the Contact table. Dim contactSelectCommand As String = "SELECT ContactID, Title, FirstName, LastName, EmailAddress, Phone FROM Person.Contact" ' Create the contacts data adapter. contactsDataAdapter = New SqlDataAdapter( _ contactSelectCommand, _ connectionString) ' Create a command builder to generate SQL update, insert, and ' delete commands based on the contacts select command. These are used to ' update the database. Dim contactsCommandBuilder As SqlCommandBuilder = New SqlCommandBuilder(contactsDataAdapter) ' Fill the data set with the contact information. contactsDataAdapter.Fill(dataSet, "Contact") Catch ex As SqlException MessageBox.Show(ex.Message) End Try End Sub
W procedurze obsługi zdarzeń formularza powiąż Load kontrolkę DataGridView ze składnikiem BindingSource i wywołaj
GetData
metodę w celu pobrania danych z bazy danych. Element DataView jest tworzony na podstawie zapytania LINQ to DataSet za pośrednictwem kontaktu DataTable , a następnie jest powiązany ze składnikiem BindingSource .void Form1_Load(object sender, EventArgs e) { // Connect to the database and fill the DataSet. GetData(); contactDataGridView.DataSource = contactBindingSource; // Create a LinqDataView from a LINQ to DataSet query and bind it // to the Windows forms control. EnumerableRowCollection<DataRow> contactQuery = from row in _dataSet.Tables["Contact"].AsEnumerable() where row.Field<string>("EmailAddress") != null orderby row.Field<string>("LastName") select row; _contactView = contactQuery.AsDataView(); // Bind the DataGridView to the BindingSource. contactBindingSource.DataSource = _contactView; contactDataGridView.AutoResizeColumns(); }
Private Sub Form1_Load(ByVal sender As System.Object, _ ByVal e As System.EventArgs) _ Handles MyBase.Load ' Connect to the database and fill the DataSet. GetData() contactDataGridView.DataSource = contactBindingSource ' Create a LinqDataView from a LINQ to DataSet query and bind it ' to the Windows Forms control. Dim contactQuery = _ From row In dataSet.Tables("Contact").AsEnumerable() _ Where row.Field(Of String)("EmailAddress") <> Nothing _ Order By row.Field(Of String)("LastName") _ Select row contactView = contactQuery.AsDataView() ' Bind the DataGridView to the BindingSource. contactBindingSource.DataSource = contactView contactDataGridView.AutoResizeColumns() End Sub