0 votes

Comment puis-je ajouter une colonne personnalisée non DataTable à mon DataView, dans une application ADO.net Winforms ?

Comment pourrais-je (/est-il possible) d'ajouter une colonne personnalisée à mon DataView, et dans cette colonne afficher le résultat d'un calcul spécifique.

En d'autres termes, j'ai actuellement un dataGridView qui a une liaison avec un DataView, basé sur le DataTable de ma base de données. J'aimerais ajouter une colonne supplémentaire à la dataGridView pour afficher un nombre calculé à partir de la ligne actuelle et de ses enfants. En d'autres termes, les informations de la colonne ne sont pas simplement dérivées des données de la ligne elle-même.

Des questions spécifiques pourraient être : a) où ajouter la colonne elle-même ? dans le DataView je suppose ? b) à partir de quelle méthode/événement déclencher le re-calcul de la valeur de cette colonne personnalisée ( / comment puis-je contrôler cela) ?

Gracias

PS. J'ai également remarqué que si j'utilise le code/approche suivant, j'obtiens une boucle infinie...

    // Custom Items
    DataColumn dc = new DataColumn("OverallSize", typeof(long));
    DT_Webfiles.Columns.Add(dc);
    DT_Webfiles.RowChanged += new DataRowChangeEventHandler(DT_Row_Changed);

private static void DT_Row_Changed(object sender, DataRowChangeEventArgs e)
{
    e.Row["OverallSize"] = e.Row["OverallSize"] ?? 0;
    e.Row["OverallSize"] = (long)e.Row["OverallSize"] + 1;
}

Quelle autre approche pourrait éviter cette boucle ? Par exemple, actuellement, je dis que la valeur de la colonne personnalisée est mise à jour lorsque la ligne change, mais après avoir changé la ligne, cela déclenche un autre événement "la ligne a changé"...

0voto

Greg Points 8995

Je pense que ce lien peut être une bonne réponse ? Bien que je ne sois pas encore sûr que la propriété expression DataColumn.Expression sera en mesure de le gérer... (c'est-à-dire faire une SOMME de tous les Item.size pour tous les éléments qui sont un enfant de l'actuel, basé sur la construction ITEM_TABLE<==>RELATIONSHIP_TABLE. Relationship_table a un ID, ITEM_PARENT_ID, ITEM_CHILD_ID.

http://ondotnet.com/pub/a/dotnet/2003/05/26/datacolumn_expressions.html

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X