Supprimer La Dernière Ligne Databound DataGridView C#
Je suis avec VS 2008/C# et la reliure d'un local Liste de classes d'assistance comme source de données pour un contrôle DataGridView. L'appel de la méthode Remove() sur ma Liste de classes d'assistance feux de la CellFormatting cas de la DataGridView, qui fait sens (un peu).
Lors de la suppression de tout ce qui DataBoundItem de la dernière ligne de la grille (à condition que la grille comporte plus d'une ligne), le DataGridView de Lignes de la collection n'est pas mis à jour avant cet événement se déclenche. Ainsi, dans le CellFormatting gestionnaire d'événements, j'ai un IndexOutOfRangeException que les Lignes de la collection est un trop gros.
J'ai essayé de supprimer la ligne à l'aide du DataGridView.Les lignes.Méthode Remove (), et la liaison à l'aide d'un BindingSource plutôt que la liaison de la Liste directement comme source de données.
J'ai trouvé quelques références à ce moment par l'intermédiaire de Google, mais les réponses n'étaient pas à venir ou dit d'utiliser une méthode Delete() sur le DataGridView ou le DataGridView.Les lignes de la collection ni de ce qui existe actuellement.
De tri ne semble pas être le problème, car la réalisation/pas d'effectuer un tri des résultats au même résultat.
La seule exception à la "dernière ligne" être un problème pour la suppression est si le DataGridView ne contient qu'une seule ligne - dans ce cas, tout fonctionne bien.
Vous devez vous connecter pour publier un commentaire.
J'ai eu ce problème dans le passé, et si je me souviens bien il y a deux choses que vous pouvez faire. Lorsque vous retirez la fiche de la collection, définissez la propriété datasource sur votre datagridview à null, puis reconnectez-le à votre liste. Cela devrait faire l'affaire.
Alternativement, vous pouvez gérer le DataError événement sur votre dataGridview et dans la méthode, vous pouvez dire e.Cancel = true pour supprimer l'exception, ou vous pouvez traiter avec elle là.
Pour cacher la dernière ligne, changer la AllowUserToAddRows propriété de la datagridview comme indiqué:
D'abord, il suffit de désactiver la propriété de
Datagridview
commeet puis il suffit de supprimer le dernier de lignes que le nombre de lignes que vous le souhaitez, soit avec boucle en gardant -1.
C'est un problème très ancien, mais je l'ai résolu par la manipulation de la ligne-supprimer un événement, comme suit.
et cela a fonctionné.
Je sais que c'est une vieille question, mais j'ai trouvé une autre solution qui a fonctionné pour moi. Avant de supprimer l'élément de la source de données /source de liaison des nations unies-fil le gestionnaire d'événement pour la CellFormatting événement, puis re-câbler après. Par exemple:
J'ai le même problème. J'ai trouvé une solution. Essayez de copier toutes les lignes à la ligne suivante. retirez ensuite la première ligne de la dgv. Un exemple de code pour cela:
essayer:)