2009-06-23 8 views
6

J'essaie d'ajouter une colonne de case à cocher à un DataGridView dans une simple application de formulaire de fenêtre.Aide pour ajouter une colonne de case à cocher à DataGridView sous la forme d'une fenêtre

Je retire certaines données d'une base de données à l'aide d'ADO.NET, en les mettant dans un datatable, puis en définissant la source de données datagridview sur datatable. Je veux ensuite ajouter une colonne de case à cocher dans la deuxième colonne. Jusqu'à présent, j'ai ce code qui semble fonctionner:

' Code here to connect to database 
Dim da As New SqlDataAdapter(cmd) 
Dim dt As New DataTable 
da.Fill(dt) 

MainForm.MyDataGridView.DataSource = dt 

Dim ChkBox As New DataGridViewCheckBoxColumn 

ChkBox.FlatStyle = FlatStyle.Standard 
MainForm.MyDataGridView.Columns.Insert(1, ChkBox) 

Ce code « fonctionne » et je reçois MyDataGridView pour afficher les données avec la colonne de cases à cocher dans la bonne position dans le tableau.

Cependant, pour une raison quelconque, je ne peux pas vérifier les cases à cocher dans le DataGridView? J'ai essayé beaucoup de choses (par exemple en altérant l'état en lecture seule de la colonne) mais je n'arrive pas à le faire fonctionner.

Y at-il quelque chose d'évident qui me manque?

Répondre

11

Ajouter une nouvelle colonne dans les propriétés du DataGridView par:

  1. Choisir les colonnes de propriétés panneau et double-cliquez dessus
  2. puis choisissez "Ajouter ..." bouton
  3. puis définissez la nouvelle colonne comme suit: "Non consolidé Colonne"
  4. Donnez-lui un nom et choisissez le type "DataGridViewCheckBoxColumn"
  5. l'en-tête Définissez vous voulez et faire vous que "lecture seule" est pas sélectionné.

c'est tout.

(Si le champ de base de données (SQL Server) est de type « bit » puis DataGridView il affecte automatiquement la datagridview comme une case à cocher au lieu d'une zone de texte. Aucun codage nécessaire.)

+0

Wahid - merci d'avoir pris le temps de nous aider. J'ai essayé cela et je l'ai eu si très reconnaissant pour votre aide. Merci beaucoup –

+0

Je ne peux pas sélectionner la case à cocher. C'est toujours décoché. – IsmailS

+0

@ Ismail: s'il vous plaît assurez-vous que "Lecture seule" n'est pas sélectionné –

3
private void dataGridView1_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e) 
{ 
    if(dataGridView1.Columns.Count == 13) 
    { 
     DataGridViewCheckBoxColumn chkSelect = new DataGridViewCheckBoxColumn(); 
     { 
      chkSelect.HeaderText = "Select All"; 
      chkSelect.Name = "chkSelect"; 
      chkSelect.Selected = false; 


     } 
     dataGridView1.Columns.Insert(13, chkSelect); 
    } 

}  
+0

Je l'utilise. Ça marche! Merci – swdev

3
Private Sub ADD_Column() 

    Dim AddColumn As New DataGridViewCheckBoxColumn 

    With AddColumn 
    .HeaderText = "ColumnName" 
    .Name = "Column Name that will be displayed" 
    .Width = 80 
    End With 

    dgAdmin.Columns.Insert(1, AddColumn) 

End Sub 
0

Essayez ceci:

 DataGridViewCheckBoxColumn chkBoxCol = new DataGridViewCheckBoxColumn(); 
     DataGridView1.Columns.Add(chkBoxCol); 
1

J'ai eu cette question une fois, mais je l'ai résolu. L charge les données de l'ensemble de données et remplit le datagridview. Je définissais la propriété readOnly du datagridview = True, ce qui signifie que vous ne pouvez pas modifier les données dans le datagridview. Réglez simplement AllowUserToAddColumn sur False et faites readOnly = False et cela fonctionnera.

2
Dim checkBoxColumn As New DataGridViewCheckBoxColumn() 
checkBoxColumn.HeaderText = "" 
checkBoxColumn.Width = 30 
checkBoxColumn.Name = "checkBoxColumn" 
dataGridView1.Columns.Insert(0, checkBoxColumn) 
Questions connexes