2017-08-08 2 views
0

J'ai actuellement une application WPF avec un contrôle RadGridView de Telerik. J'ai quelques colonnes avec des données d'une base de données, alors que j'ai trois autres colonnes faites sur commande qui sont pour entrer des données. Mon problème en ce moment est qu'une fois que j'entre les données dans une cellule dans l'une des colonnes, lorsque je clique sur cette cellule, les données disparaissent. J'ai besoin d'obtenir ma demande pour commettre ces changements afin que cela n'arrive pas. Je pensais que je l'avais codé correctement en utilisant gridView.CommitEdit(); dans l'événement CellEditEnded, cependant une exception stackoverflow est levée lorsque j'entre les données et que je clique sur la cellule. Quelqu'un peut-il m'expliquer pourquoi et comment résoudre ce problème? J'ai du mal à trouver de bonnes ressources en ligne expliquant comment faire cela. Voici mon code pour l'événement CellEditEnded:Telerik RadGridView.CommitEdit() Exception StackOverflow

private void gridView_CellEditEnded(object sender, GridViewCellEditEndedEventArgs e) 
    { 
     if(e.EditAction == GridViewEditAction.Commit) 
     { 
      gridView.CommitEdit(); 
     } 
    } 

Si quelqu'un est capable de me aider à comprendre ce que je fais mal, il serait grandement apprécié :)

Répondre

0

Vous pouvez essayer d'utiliser un drapeau booléen empêcher le gestionnaire d'événements d'appeler la méthode CommitEdit() encore et encore:

bool handle = true; 
private void gridView_CellEditEnded(object sender, GridViewCellEditEndedEventArgs e) 
{ 
    if (e.EditAction == GridViewEditAction.Commit && handle) 
    { 
     handle = false; 
     gridView.CommitEdit(); 
     handle = true; 
    } 
} 
+0

Cela s'est définitivement débarrassé de l'erreur. Cependant, maintenant la modification n'est pas validée et tout ce que j'ajoute dans une cellule disparaît lorsque je clique sur ce qui est bizarre. Je vais faire des recherches supplémentaires, mais merci pour la réponse! –