Placez vos données initiales retournées dans un DATASET ou un DATATABLE. Ajoutez au DATATABLE une nouvelle colonne pour votre champ calculé. Marcher ces données en faisant le calcul nécessaire, et en mettant le résultat dans le champ calculé.
Créer une nouvelle vue basée sur la datatable et trier la vue par le champ calculé. Liez la grille à la vue de données.
Dim DT as DataTable
DT = GetDataTableFromDataBaseMethod()
DT.Columns.Add(New DataColumn("CalculatedColumnName"))
For each row as DataRow in DT.Rows
row("CalculatedColumnName") = PerformCalculations(row)
Next
Dim view as New DataView
view.DataTable =dt
View.Sort = "CalculatedColumnName DESC"
datagrid1.Datasource = view
datagrid1.Databind
Ou, si possible, effectuer le calcul dans l'instruction SQL, re:
SELECT Col1, Col2, Col3, Col1+Col2+Col3 AS LineTotal FROM Table;
Je l'ai mis dans la requête select - merci –
Il y a une autre façon de le faire. Vous pouvez ajouter la colonne à DataTable comme correctement suggéré par @Stephen, mais si vous avez besoin de calculer la nouvelle colonne comme une expression en utilisant d'autres colonnes du 'DataTable', vous n'avez pas besoin de parcourir toutes les lignes. Vous pouvez simplement utiliser 'DataTable dt = GetDataTableFromDataBaseMethod();' puis, par exemple, 'dt.Columns.Add (" CalculatedColumnName ", typeof (double)," (FirstValueColumn - SecondValueColumn) * ThirdValueColumn ");'. Cela peut être très utile si vous ne pouvez pas ajouter directement votre expression dans la requête, ce qui est toujours le meilleur choix. –