2013-08-16 3 views
0

J'ai une colonne DatagridviewCombobox et je crée des cellules DatagridviewCombobox sur chaque ligne et j'y ajoute des éléments. Lorsque je change la valeur de n'importe quelle cellule (liste déroulante), elle émet une exception disant que Datagridviewcombobox cell value is not valid. et la valeur de la cellule devient '1'.Valeur DatagridViewComboboxCell modifiée en C#

Je travaille sur l'événement datagridview_currentcelldirtystatechange, mais je n'ai pas réussi à le faire fonctionner.

Le code ci-dessous crée des lignes et remplit des cellules combobox avec des numéros de séquence.

int _rowLimit =1; 

    for (int i = _rowLimit - 1; i < _rowLimit; i++) 
    {   
     datagridview.Rows.Add(); 
     item = i + 1; 
     datagridview[myColumn, i].Value = _rowLimit;     

     DataGridViewComboBoxCell oCell = datagridview.CurrentRow.Cells[myColumn] as DataGridViewComboBoxCell; 
     oCell.Items.Add(item); 

     ((DataGridViewComboBoxColumn)datagridview.Columns[myColumn]).Items.IndexOf(_rowLimit); 
     ((DataGridViewComboBoxColumn)datagridview.Columns[myColumn]).Items.Insert(index, item); 
    } 

Et ci-dessous est ce que je fais en datagridview_currentcelldirtystatechange événement:

for (int innerIndex = 0; innerIndex < datagridview.Rows.Count; innerIndex++) 
    { 
     long sequence = 3; 
     long oldSequence = 2; 
     long tempValue= Convert.ToInt64(datagridview.Rows[innerIndex].Cells[myColumn].Value); 
     if (tempValue <= sequence && tempValue> oldSequence) 
     {      
      datagridview.Rows[innerIndex].Cells[myColumn].Value = tempValue+ 1; // increment the sequence 
// value here i am getting is correct , but it doesn't show in the DatagridviewCombobox cell where it gets changed of gridview and the mentioned exception is thrown. 

     } 

Toute aide serait appréciée. Merci.

+0

Il semble que vous ayez besoin de mettre un peu ou de commander dans votre code pour savoir exactement ce que vous faites, car la version actuelle est assez déroutante (et c'est presque sûr ce qui provoque les erreurs que vous référez). Dans le premier code, vous utilisez divers indices qui sont utilisés de manière plus ou moins anarchique; le plus simple est le mieux: utilisez un index pour les lignes de coutances (ligne), une variable pour les lignes totales (maxRow), l'élément que vous auriez entré (item, liste de valeurs une combobox ou tout ce dont vous avez besoin) et une dernière partie sont ajoutées à la vue de données: claire, simple et non sujette aux erreurs. – varocarbas

+0

Une fois que la partie de remplissage a été effectuée correctement, vous devez également accéder à cette information (pour la lecture/l'édition). Avant d'ajouter une valeur, vous devez vous assurer que son type correspond à ce que la cellule donnée attend/supporte. Vous devez vous assurer que chaque étape fonctionne et a l'intention de résoudre/venir ici pour poser chaque nouveau problème. La version actuelle de votre code est assez "hostile", les problèmes peuvent être partout et toute la réécriture du code est la meilleure chose à faire. – varocarbas

+0

Merci pour la réponse. D'accord, je vais essayer de le rendre plus convivial. mais si vous avez ma déclaration de problème, pouvez-vous s'il vous plaît dites-moi comment le faire fonctionner? en fait c'est un simple combobox et il y a des numéros de séquence dans la liste déroulante de la liste déroulante ... Je veux changer sa valeur (changement d'index sélectionné), sur quel événement devrais-je travailler et comment cela peut-il être réalisé? Merci – HKhan

Répondre

1

l'erreur sur la valeur selectedindexChange des cellules combobox et l'exception de la valeur DataGridViewComboBoxCell n'est pas valide .. qu'automatiquement a changé le vlue sélectionné pour « 1 » .. i résolu ce problème en ajoutant la propriété DataGridViewComboBoxColumn dans le concepteur fichier.

this.columnName.ValueType = typeof(long); 

typeof (long) // voici ce que je voulais montrer la valeur dans la colonne datagridviewcombobox.

Problème résolu maintenant. Merci.

+0

Merci varocarbas pour vos suggestions et réponses rapides .. merci :) – HKhan

+0

comme comboboxcell n'obtenait pas son type correspondant réel c'est pourquoi l'exception de lancement de "DataGridviewComboboxcell n'est pas valide" – HKhan

Questions connexes