2009-05-06 8 views
0

J'ajoute dynamiquement une colonne booléenne à un DataSet. La table DataSet est la source de données pour un GridView, qui génère automatiquement les colonnes. Problème: Les cases à cocher de cette colonne générée dynamiquement sont toutes désactivées. Comment puis-je les activer?La colonne CheckBox ajoutée dynamiquement est désactivée dans GridView

ds.Tables["Transactions"].Columns.Add("Retry", typeof(System.Boolean)); 
ds.Tables["Transactions"].Columns["Retry"].ReadOnly = false; 

En d'autres termes, comment puis-je contrôler la façon dont GridView génère les cases à cocher pour un champ booléen? (Et pourquoi le réglage de ReadOnly sur False n'a aucun effet?)

Merci!

Répondre

0

Je crois qu'ils seront automatiquement désactivés jusqu'à ce qu'ils aient une valeur.

DataRow row = ds.Tables["Transactions"].NewRow(); 
row("Retry") = true; 
ds.Tables["Transactions"].Rows.Add(row) 
+0

Cela ne fait aucune différence. Maintenant, ils sont vérifiés mais toujours désactivés. foreach (DataRow dr dans ds.Tables ["Transactions"].) Lignes { dr.BeginEdit(); dr ["Retry"] = true; dr.EndEdit(); } –

+0

Vous avez raison. Il doit y avoir un autre code affectant votre colonne. – Daniel

1

Vous devez probablement ajouter le gestionnaire d'événements CellContentClick et annuler la valeur de la cellule. Comme:

private void dgvRaceDetails_CellContentClick(object sender, DataGridViewCellEventArgs e) 
{ 
      if (e.ColumnIndex == 5) 
      { 
       dgvRaceDetails.Rows[e.RowIndex].Cells[5].Value = 
        !(Boolean)dgvRaceDetails.Rows[e.RowIndex].Cells[5].Value; 
      } 

      if (e.ColumnIndex == 6) 
      { 
       dgvRaceDetails.Rows[e.RowIndex].Cells[6].Value = 
        !(Boolean)dgvRaceDetails.Rows[e.RowIndex].Cells[6].Value; 
      } 
} 
-1

Définissez la valeur de Boolean sur true. Sa valeur par défaut est false. J'espère que ça aide.

+0

Comment définir ReadOnly à true ne les rendra pas désactivés? –

+0

Je l'ai mal lu. L'ajout de true/false en tant que valeur les fera cocher/décocher et non activé/désactivé. Dans mon code, j'essayais de désactiver les cases à cocher et les cases à cocher ne le feraient pas. – preeti

+0

dataTable.Columns.Add ("ColumnName", typeof (bool)); – preeti

Questions connexes