In this article I will explain with an example, how to bind multiple GridViews using one single DataSet in ASP.Net using C# and VB.Net.
The records returned from multiple SELECT queries (statements) are populated into DataTables and then these DataTables will be inserted into a DataSet and finally the DataSet is used to populate multiple GridViews in ASP.Net.
 
 
Database
For this article I am making use of the Microsoft’s Northwind Database. Download and install instructions are provided in the link below.
 
 
HTML Markup
The HTML Markup consists of two GridViews which will be populated using the DataSet.
<asp:GridView ID="gvCustomers" runat="server" AutoGenerateColumns="false">
    <Columns>
        <asp:BoundField DataField="ContactName" HeaderText="Contact Name" ItemStyle-Width="150px" />
        <asp:BoundField DataField="City" HeaderText="City" ItemStyle-Width="100px" />
        <asp:BoundField DataField="Country" HeaderText="Country" ItemStyle-Width="100px" />
    </Columns>
</asp:GridView>
<br />
<asp:GridView ID="gvEmployees" runat="server" AutoGenerateColumns="false">
    <Columns>
        <asp:BoundField DataField="EmployeeName" HeaderText="Employee Name" ItemStyle-Width="150px" />
        <asp:BoundField DataField="City" HeaderText="City" ItemStyle-Width="100px" />
        <asp:BoundField DataField="Country" HeaderText="Country" ItemStyle-Width="100px" />
    </Columns>
</asp:GridView>
 
 
Namespaces
You will need to import the following namespaces.
C#
using System.Data;
using System.Data.SqlClient;
using System.Configuration;
 
VB.Net
Imports System.Data
Imports System.Data.SqlClient
Imports System.Configuration
 
 
Bind multiple GridViews using one single DataSet in ASP.Net
Inside the Page Load event of the page, multiple Select queries are executed to fetch data from two Tables i.e. Customers and Employees.
Note: In order to execute queries on multiple Tables, the Select statement of each Table must be separated by a semi-colon character.
 
The fetched records are populated into a DataSet and finally the DataTables of the DataSet are used to populate the GridViews.
C#
protected void Page_Load(object sender, EventArgs e)
{
    if (!this.IsPostBack)
    {
        string constr = ConfigurationManager.ConnectionStrings["constr"].ConnectionString;
        string query = "SELECT TOP 10 ContactName, City, Country FROM Customers;";
        query += "SELECT TOP 10 (FirstName + ' ' + LastName) EmployeeName, City, Country FROM Employees";
 
        using (SqlConnection con = new SqlConnection(constr))
        {
            using (SqlCommand cmd = new SqlCommand(query))
            {
                using (SqlDataAdapter sda = new SqlDataAdapter())
                {
                    cmd.Connection = con;
                    sda.SelectCommand = cmd;
                    using (DataSet ds = new DataSet())
                    {
                        sda.Fill(ds);
                        gvCustomers.DataSource = ds.Tables[0];
                        gvCustomers.DataBind();
                        gvEmployees.DataSource = ds.Tables[1];
                        gvEmployees.DataBind();
                    }
                }
            }
        }
    }
}
 
VB.Net
Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load
    If Not Me.IsPostBack Then
        Dim constr As String = ConfigurationManager.ConnectionStrings("constr").ConnectionString
        Dim query As String = "SELECT TOP 10 ContactName, City, Country FROM Customers;"
        query += "SELECT TOP 10 (FirstName + ' ' + LastName) EmployeeName, City, Country FROM Employees"
 
        Using con As New SqlConnection(constr)
            Using cmd As New SqlCommand(query)
                Using sda As New SqlDataAdapter()
                    cmd.Connection = con
                    sda.SelectCommand = cmd
                    Using ds As New DataSet()
                        sda.Fill(ds)
                        gvCustomers.DataSource = ds.Tables(0)
                        gvCustomers.DataBind()
                        gvEmployees.DataSource = ds.Tables(1)
                        gvEmployees.DataBind()
                    End Using
                End Using
            End Using
        End Using
    End If
End Sub
 
 
Screenshot
Bind multiple GridViews using one single DataSet in ASP.Net using C# and VB.Net
 
 
Demo
 
 
Downloads