2017-03-14 1 views
0

Je développe un système de surveillance d'assiduité et j'ai créé un bouton qui sélectionne les données de ma table d'accès avec les valeurs de et à partir de deux datetimepicker maintenant si j'appuie sur le bouton pour sélectionner les données de la base de données il faut cliquer sur la colonne ou la ligne pour qu'elle apparaisse, je ne sais pas pourquoi, je n'ai pas changé les propriétés J'ai même créé un nouveau datagridview mais c'est toujours pareil, même chose avec d'autres PC, voici mon code.C# Valeurs de tableau invisibles?

private void button1_Click(object sender, EventArgs e) 
    { 
     try 
     { 
      connection.Open(); 
      OleDbCommand command = new OleDbCommand(); 
      command.Connection = connection; 
      string query = "SELECT [EmployeeID],[Firstname],[Lastname],[InDate],[InTime],[OutTime],[HoursWorked] FROM TimeinTimeout WHERE InDate between @1 AND @2"; 
      command.Parameters.AddWithValue("@1", dateTimePicker1.Value.ToShortDateString()); 
      command.Parameters.AddWithValue("@2", dateTimePicker2.Value.ToShortDateString()); 
      command.CommandText = query; 
      OleDbDataAdapter da = new OleDbDataAdapter(command); 
      DataTable dt = new DataTable(); 
      da.Fill(dt); 
      dataGridView1.DataSource = dt; 
      dataGridView1.Update(); 
      dataGridView1.Refresh(); 
      connection.Close(); 


     } 
     catch (Exception ex) 
     { 
      MessageBox.Show(ex.Message); 
     } 
    } 
+1

Pouvez-vous ajouter une capture d'écran/gif animé montrant la question? Je pourrais penser à un style de rangée avec des couleurs étranges (par exemple blanc sur blanc). – Sinatr

+0

Est-ce Winform, WPF ou ASP.Net? –

+0

Je suis d'accord avec Sinatr, votre commentaire _vous devez cliquer sur la colonne ou la ligne pour qu'elle apparaisse_ ... confirme que les données sont là, donc je regarderais de plus près le style 'DataGridViews' pour cette colonne ou cette cellule. Juste une supposition. – JohnG

Répondre

0

Enlevez ces lignes de code:

dataGridView1.Update(); 
dataGridView1.Refresh(); 

Accrochez vous avez pas réglé la chaîne de connexion de connection. Typiquement ce serait comme ceci: connection.Open(connectionString);.

+0

Dois-je quand même supprimer les codes .update et .refesh? –

+0

Oui. Une question pour vous, en temps de conception, définit la propriété DataGridView AutoGenerateColumns sur false; faites une différence? –

+0

Je ne l'ai pas encore testé mais je vais essayer demain –

0

Ajouter Databind() après avoir défini la source de données (voir here):

dataGridView1.DataSource = dt; 
dataGridView1.DataBind(); 
+0

Clarification, seulement ASP.Net nécessite le 'DataBind()' –

+0

@Jeremy Thompson, j'ai supprimé le .update et .refresh mais c'est toujours la même, cette est en winforms –