A master class on setting the table

Contributors dotnet bot  Maira Wenzel  Erlend  Mike Jones  Matt Hoffman all In this article

There is no need for any form of control. The data is selected.

Implementing a master / detail form is easy using the control between the DataGridView control and the BindingSource component. In this walkthrough, you will have two binding controls and two BindingSource components. The SQL Server sample database: Customers and Orders. If you’re finished with the dataGridView, you’re finished with the dataGridView.

Windows Forms DataGridView Controls. Prerequisites

In order to complete this walkthrough, you will need: Access the SQL Server sample database to the Northwind. Create the master

BindingSource components. The following code provides a basic form. If you use the design code, you can use it. using System; using System.Data; using System.Data.SqlClient; using System.Windows.Forms; 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 (); [STAThreadAttribute ()] 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"; } Imports System Imports System.Data Imports System.Data.SqlClient Imports System.Windows.Forms Public Class Form1 Inherits System.Windows.Forms.Form Private masterDataGridView As New DataGridView () Private masterBindingSource As New BindingSource () Private detailsDataGridView As New DataGridView ( ) Private detailsBindingSource As New BindingSource () _ Public Shared Sub Main () Application.Run (New Form1 ()) End Sub 'Initializes the form. Public Sub New () masterDataGridView.Dock = DockStyle.Fill detailsDataGridView.Dock = DockStyle. Fill Dim splitContainer1 As New SplitContainer () splitContainer1.Dock = DockStyle.Fill splitContainer1.Panel2.Controls.Add (detailsDataGridView) Me.Controls.Add (splitContainer1) Me.Text = "DataGridView master / detail demo" End Sub} End Class

Connecting the database. This example uses a DataSet object, it adds a DataDet object, it adds a DataRelation object. Be sure to set the connectionString value for your database.


Storing sensitive information such as a password for your application. Using Windows Authentication (also known as integrated security). For more information, see Protecting Connection Information. private void GetData () {try {// Specify a connection string. Replace the SQL Server sample database // database accessible to your system. String connectionString = "Integrated Security = SSPI; Persist Security Info = False;" + "Initial Catalog = Northwind; Data Source = localhost"; SqlConnection connection = new SqlConnection (connectionString); // Create a DataSet. DataSet data = new DataSet (); data.Locale = System.Globalization.CultureInfo.InvariantCulture; // Add data from the Customers table to the DataSet. SqlDataAdapter masterDataAdapter = new SqlDataAdapter ("select from Customers", connection); masterDataAdapter.Fill (data, "Customers"); // Add data from the Orders table to the DataSet. SqlDataAdapter detailsDataAdapter = new SqlDataAdapter ("select from Orders", connection); detailsDataAdapter.Fill (data, "Orders"); // 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. masterBindingSource.DataSource = data; masterBindingSource.DataMember = "Customers"; If you want to know how to use it, you can use it. detailsBindingSource.DataSource = masterBindingSource; detailsBindingSource.DataMember = "CustomersOrders"; } catch (SqlException) {MessageBox.Show ("To run this example, replace the value of the" + "connectionString variable with a connection string that is" + "valid for your system."); }} Private Sub GetData () Try 'Specify a connection string. Replace the SQL Server sample database for your system. Dim connectionString As String = _ "Integrated Security = SSPI; Persist Security Info = False;" & _ "Initial Catalog = Northwind; Data Source = localhost" Dim connection As New SqlConnection (connectionString) 'Create a DataSet. Dim data As New DataSet () data.Locale = System.Globalization.CultureInfo.InvariantCulture 'DataSet. Dim masterDataAdapter As _ New SqlDataAdapter ("select from Customers", connection) masterDataAdapter.Fill (data, "Customers") 'Add data from the table to the DataSet. Dim detailsDataAdapter As _ New SqlDataAdapter ("select from Orders", connection) detailsDataAdapter.Fill (data, "Orders") 'Establish a relationship between two tables. Dim relation As 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" for the master data. detailsBindingSource.DataSource = masterBindingSource detailsBindingSource.DataMember = "CustomersOrders" Catch ex As SqlException MessageBox.Show ("To run this example, replace the value of the" & _ "connection system. ") End Try End Sub

It is a handler for the data gathering method. The following example includes the data displayed. private void Form1_Load (object sender, System.EventArgs e) {// Bind the DataGridView controls for the data binding. masterDataGridView.DataSource = masterBindingSource; detailsDataGridView.DataSource = detailsBindingSource; GetData (); // Resize the master DataGridView masterDataGridView.AutoResizeColumns (); // Configure the details DataGridView so that it will automatically columns // adjust their widths when the data changes. detailsDataGridView.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells; } ByVal sender As Object, ByVal e As System.EventArgs _ Handles Me.Load 'Bind the DataGrid. masterDataGridView.DataSource = masterBindingSource detailsDataGridView.DataSource = detailsBindingSource GetData () 'Resize the master dataGridView. masterDataGridView.AutoResizeColumns () Configure the widths when it comes to data changes. detailsDataGridView.AutoSizeColumnsMode = _ DataGridViewAutoSizeColumnsMode.AllCells End Sub Testing the Application

You can make sure it behaves as expected. To test the form

Compile and run the application.

You will see two DataGridView controls, one above the other. There is a corresponding corresponding to the selected customer. As you select the rows of the DataGridView, it is therefore the same. Next Steps

This application gives you an understanding of the DataGridView control's capabilities. You can customize your DataGridView in several ways:

Change border and header styles. For more information, see the Border and Gridline Styles in the Windows Forms DataGridView Control.

Enable or restrict user input to the DataGridView control. For more information, see the Forms DataGridView Controls.

Validate user input to the DataGridView control. For more information, see Walkthrough: Validating Data in the Windows Forms DataGridView Control.

Handle very large data sets using virtual mode. For more information, see Walkthrough: Implementing Virtual Mode in the Windows Forms DataGridView Control.

Customize the appearance of cells. For more information, see the Cell Forms for the Windows Forms DataGridView Control. See Also

Displaying Data in the Windows Forms DataGridView Control
Windows Forms DataGridView Controls
How To: Create a Master / Detail Form Using Two Protecting Connection Information Feedback

We'd love to hear your thoughts. Choose the type you'd like to provide:

Our new feedback system is built on GitHub Issues. Read about this change in our blog post.

There are no open issues

There are no closed issues

View on GitHub

Related news:

How to make a shovel in front of MTZ
Women's Handicrafts
Banzai with their hands
Jelly roll recipe with photos step by step
The hat DIY pattern