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?
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];
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;
Vous n'avez pas besoin de bindingSource1
Juste ensemble dataGridView1.DataSource = table;
Essayez de lier votre DataGridView
au DefaultView
du DataTable
:
dataGridView1.DataSource = table.DefaultView;
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.
, 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.");
}
}
}
}
Vous devez ajouter les Tables de propriétés à la source de données DataGridView
dataGridView1.DataSource = table.Tables[0];