Remplir un datagridview avec les résultats de la requête sql

J'essaie de présenter les résultats de la requête, mais je continue à obtenir une grille de données vide. C'est comme si les données elles-mêmes n'étaient pas visibles

Voici mon code:

 private void Employee_Report_Load(object sender, EventArgs e)
 {
     string select = "SELECT * FROM tblEmployee";
     Connection c = new Connection();
     SqlDataAdapter dataAdapter = new SqlDataAdapter(select, c.con); //c.con is the connection string
     SqlCommandBuilder commandBuilder = new SqlCommandBuilder(dataAdapter);

     DataTable table = new DataTable();
     table.Locale = System.Globalization.CultureInfo.InvariantCulture;
     dataAdapter.Fill(table);
     bindingSource1.DataSource = table;

     dataGridView1.ReadOnly = true;        
     dataGridView1.DataSource = bindingSource1;
}

Quel est le problème avec ce code?

23
demandé sur user2023203 2013-08-08 00:34:06

7 réponses

Voici votre code corrigé. Suivant oublier bindingsource

 var select = "SELECT * FROM tblEmployee";
 var c = new SqlConnection(yourConnectionString); // Your Connection String here
 var dataAdapter = new SqlDataAdapter(select, c); 

 var commandBuilder = new SqlCommandBuilder(dataAdapter);
 var ds = new DataSet();
 dataAdapter.Fill(ds);
 dataGridView1.ReadOnly = true; 
 dataGridView1.DataSource = ds.Tables[0];
31
répondu Don Thomas Boyle 2017-01-11 23:09:53
String strConnection = Properties.Settings.Default.BooksConnectionString;
SqlConnection con = new SqlConnection(strConnection);

SqlCommand sqlCmd = new SqlCommand();
sqlCmd.Connection = con;
sqlCmd.CommandType = CommandType.Text;
sqlCmd.CommandText = "Select * from titles";
SqlDataAdapter sqlDataAdap = new SqlDataAdapter(sqlCmd);

DataTable dtRecord = new DataTable();
sqlDataAdap.Fill(dtRecord);
dataGridView1.DataSource = dtRecord;
6
répondu sayed hashim 2018-06-28 14:04:57

Vous n'avez pas besoin de bindingSource1

Juste ensemble dataGridView1.DataSource = table;

2
répondu banging 2013-08-07 20:36:59

Essayez de lier votre DataGridView au DefaultView du DataTable:

dataGridView1.DataSource = table.DefaultView;
1
répondu Khan 2013-08-07 20:38:42

Vous pouvez obtenir une grille de données vide si vous définissez la Source de données sur un ensemble de données que vous avez ajouté au formulaire mais qui n'est pas utilisé. Définissez cette valeur sur None si vous définissez votre source de données par programmation en fonction des codes ci-dessus.

0
répondu Damion Willi 2016-11-01 21:55:25

, Vous pouvez essayer cet exemple, et de toujours vérifier votre Chaîne de Connexion, vous pouvez utiliser cet exemple avec ou sans bindingsource vous pouvez charger les données à datagridview.

private void Employee_Report_Load(object sender, EventArgs e)
{
        var table = new DataTable();

        var connection = "ConnectionString";

        using (var con = new SqlConnection { ConnectionString = connection })
        {
            using (var command = new SqlCommand { Connection = con })
            {

                if (con.State == ConnectionState.Open)
                {
                    con.Close();
                }

                con.Open();

                try
                {
                    command.CommandText = @"SELECT * FROM tblEmployee";
                    table.Load(command.ExecuteReader());

                    bindingSource1.DataSource = table;

                    dataGridView1.ReadOnly = true;
                    dataGridView1.DataSource = bindingSource1;

                }
                catch(SqlException ex)
                {
                    MessageBox.Show(ex.Message + " sql query error.");
                }

            }

        }

 }
0
répondu Ramgy Borja 2017-09-15 15:15:59

Vous devez ajouter les Tables de propriétés à la source de données DataGridView

 dataGridView1.DataSource = table.Tables[0];
0
répondu Mohammed Elrayh 2017-11-30 12:06:41