2009-06-23 11 views
6

Ich versuche, eine Checkbox-Spalte zu einem DataGridView in einer einfachen Fensterformularanwendung hinzuzufügen.Hilfe beim Hinzufügen von Checkbox-Spalte zu DataGridView in Fensterform

Ich ziehe einige Daten aus einer Datenbank mit ADO.NET zurück, setze sie in eine Datentabelle und setze dann die Datenquelle datagridview auf die Datentabelle. Ich möchte dann eine Checkbox-Spalte als zweite Spalte hinzufügen. Bisher habe ich diesen Code, die zu funktionieren scheint:

' 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) 

Dieser Code ‚funktioniert‘ und ich bekomme MyDataGridView die Daten mit der Checkbox Spalte in der richtigen Position in der Tabelle zu zeigen.

Aus irgendeinem Grund kann ich keine der Kontrollkästchen in der DataGridView überprüfen? Ich habe viele Dinge ausprobiert (z. B. indem ich den Lesezustand der Spalte geändert habe), aber ich kann es nicht zum Laufen bringen.

Gibt es etwas offensichtlich, dass ich vermisse?

Antwort

11

hinzufügen neue Spalte in den Eigenschaften des Datagridview von:

  1. Auswählen von Spalten von Eigenschaften Panel und doppelklicken Sie darauf
  2. wählen Sie dann "Hinzufügen ..." Taste
  3. dann die neue Spalte als "Ungebunden Spalte"
  4. Geben Sie ihm einen Namen und wählen Sie den Typ "DataGridViewCheckBoxColumn"
  5. den Header Sie Set und machen sicher, dass "nur lesen" ist nicht ausgewählt.

das ist es.

(Wenn das Datenbankfeld (in SQL Server) des Typs ‚Bit‘ ist dann die Datagridview ordnet sie automatisch an das Datagridview als Checkbox anstelle einer Textbox. Keine notwendige Codierung.)

+0

Wahid - vielen Dank, dass Sie sich die Zeit genommen haben zu helfen. Ich habe es versucht und ich habe es so sehr dankbar für Ihre Unterstützung. Vielen Dank –

+0

Ich kann das Kontrollkästchen nicht aktivieren. Es ist immer unkontrolliert. – IsmailS

+0

@ Ismail: Bitte stellen Sie sicher, dass "Nur lesen" NICHT ausgewählt ist –

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

Ich benutze dies. Es klappt! Vielen Dank – 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

Versuchen sie folgendes:

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

ich einmal dieses Problem gehabt haben, aber ich es gelöst. L lädt Daten aus dem Dataset und füllt die Datagridview. Ich habe die readOnly-Eigenschaft des datagridview = True gesetzt, was bedeutet, dass Sie die Daten in datagridview nicht ändern können. Setzen Sie einfach AllowUserToAddColumn auf False und machen Sie readOnly = False und das wird funktionieren.

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