2017-10-17 3 views
-1

Comment puis-je stocker les éléments cochés de ma liste de cases à cocher? Je n'ai pas de classe donc je ne peux pas utiliser ListItems. Ma liste de cases à cocher est remplie à l'aide de ma base de données (MS Access).Comment stocker un ou plusieurs éléments de case à cocher dans un tableau de chaînes en C#?

connection.Open(); 
OleDbCommand command = new OleDbCommand(); 
command.Connection = connection; 
command.CommandText = @"SELECT CONTENT FROM " + tab + " GROUP BY CONTENT ORDER BY MIN(CHAP)"; 
OleDbDataAdapter dAdap = new OleDbDataAdapter(command); 
DataSet dSet = new DataSet(); 
dAdap.Fill(dSet); 
for (int i = 0; i < dSet.Tables[0].Rows.Count; i++) 
{ 
    chkList.Items.Add(dSet.Tables[0].Rows[i][0].ToString()); //This is the part where the items are populated 
} 
connection.Close(); 

modifier en utilisant foreach

foreach (string chk in chkList.CheckedItems) 
{ 
    MessageBox.Show(chk.ToString()); //This gets every string checked, but one after another 
    top = chk; 
} 

pour ma requête

"SELECT TOP " + num + " QUESTION,C1,C2,C3,C4,ANSWER,CONTENT FROM " + tab + " WHERE CONTENT = '" + top + "'" 

seulement interroger le dernier élément coché.

modifier pour compter les éléments cochés

MessageBox.Show(chkList.CheckedItems.Count.ToString()); 

string[] topic = new string[chkList.CheckedItems.Count]; 
for (int i = 0; i < topic.Length; i++) 
{ 
    topic[i] = //How to get the text for each checked items?     
} 
+0

Avez-vous des données de votre base de données? – Sasha

+0

Alors, quel est le vrai problème avec votre code? – Ferus7

+0

@Sasha, quand j'utilise combox, oui je peux obtenir des données. Mais je vais le changer à la liste de contrôle afin que je puisse choisir plusieurs données. Le problème est que je ne sais pas comment puis-je obtenir les éléments cochés. Je pense que si je peux stocker la chaîne/s dans un tableau et le rejoindre. Ou y a-t-il un autre moyen? –

Répondre

-1

Peut-être que cela peut vous aider:

connection.Open(); 
OleDbCommand command = new OleDbCommand(); 
command.Connection = connection; 
command.CommandText = @"SELECT CONTENT FROM " + tab + " GROUP BY CONTENT ORDER BY MIN(CHAP)"; 
OleDbDataAdapter dAdap = new OleDbDataAdapter(command); 
DataSet dSet = new DataSet(); 
dAdap.Fill(dSet); 
string[] chkList = new string[dSet.Tables[0].Rows.Count] 
for (int i = 0; i < dSet.Tables[0].Rows.Count; i++) 
{ 
    chkList[i]=dSet.Tables[0].Rows[i][0].ToString(); //This is the part where the items are populated 
} 
connection.Close(); 
+1

Je suppose que chkList existe déjà et cela ne compilera pas? – Ferus7

+0

Pourriez-vous s'il vous plaît souligner * comment * et * pourquoi * cela résout le problème OP? Juste coller du code ne fait pas une bonne réponse. –

+0

corrigez-moi si je me trompe. string [] chkList = nouvelle chaîne [dSet.Tables [0] .Rows.Count] créera un tableau de lignes compté? Cela sera-t-il également obtenu si l'article est coché? –