2010-07-13 3 views
0

Je suis à peine nouveau avec le contrôle DataGridView de WinForm et honnêtement, j'ai du mal à essayer de mélanger et d'assortir ses événements et méthodes (par exemple CommitEdit() méthode n'a pas fait ce que je m'attendais) pour mettre en œuvre le concept simple « entrer dans le mode d'édition en double-cliquant sur la cellule, modifier sa valeur (faire, espérons une sorte de validation) et d'enregistrer les modifications au moment de quitter la cellule précitée Mon code actuel ressemble à ceci et il est certainement incomplète.Comment puis-je "double-cliquer, éditer et sauvegarder tout en laissant" un Windows Forms DataGridView CurrentCell?

// DEBUG 

private void myDataGridView_CellDoubleClick(object sender, DataGridViewCellEventArgs e) 
{ 
    this.myDataGridView.BeginEdit(true); 
    this.myDataGridView.CurrentCell.ReadOnly = false; 
} 

private void myDataGridView_CellLeave(object sender, DataGridViewCellEventArgs e) 
{ 
    this.myDataGridView.EndEdit(); 
} 

private void myDataGridView_CellBeginEdit(object sender, DataGridViewCellCancelEventArgs e) 
{ 
    DataGridViewCellStyle editCellStyle = new DataGridViewCellStyle(); 
    editCellStyle.BackColor = System.Drawing.Color.DarkOrange; 
    editCellStyle.ForeColor = System.Drawing.Color.Black; 
    this.myDataGridView.CurrentCell.Style.ApplyStyle(editCellStyle); 
} 

private void myDataGridView_CellEndEdit(object sender, DataGridViewCellEventArgs e) 
{ 
    DataGridViewCellStyle defaultCellStyle = new DataGridViewCellStyle(); 
    defaultCellStyle.BackColor = System.Drawing.Color.White; 
    this.myDataGridView.CurrentCell.Style.ApplyStyle(defaultCellStyle); 
} 

// DEBUG 

Alors Comme vous pouvez remarquer toute aide que vous pourriez fournir sera vraiment utile et définitivement apprécié.Merci beaucoup vous les gars à l'avance!

+0

Quel est exactement le problème? Par exemple, la source de données n'est-elle pas mise à jour? Base de données? CellStyles ne se met pas à jour? –

+0

Merci pour votre réponse Conrad Frix. En fait, rien n'est mis à jour, malgré myDataGridView.CurrentCell.EditedFormattedValue détient la nouvelle valeur, en quittant la cellule, il est perdu. –

Répondre

0

Wow, il s'avère que l '"Entité" (LINQ-to-SQL) que j'ai affaire n'a pas de PK donc LINQ est incapable de le mettre à jour, donc ce n'est pas la faute de DGV. Désolé pour ça.

+0

J'ai été capable de "simuler" le PK dans le modèle de l'entité et cela fonctionne bien que je n'aime pas forcément la "solution de contournement", il fait le travail. –

Questions connexes