Modifier la valeur des cellule d'une dataView

Résolu
lafolle24320 Messages postés 406 Date d'inscription samedi 26 mars 2005 Statut Membre Dernière intervention 29 juin 2009 - 14 août 2008 à 11:21
lafolle24320 Messages postés 406 Date d'inscription samedi 26 mars 2005 Statut Membre Dernière intervention 29 juin 2009 - 18 août 2008 à 15:47
Bonjour,
Je débute en C#. J'ai une base de données dans laquelle est stockée la taille d'un fichier en Kb.
Je remonte donc cette information dans une DataView... ce qui est de génial c'est que l'affichage ce fait tout seul.. mais je voudrais avant d'afficher la grid divisé la valeur par 1024 pour avoir des Ko.. je ne sais pas trop où je dois le faire ..

Quelqu'u naurait une idée ??

Merci de vos propositions

lafolle

17 réponses

lafolle24320 Messages postés 406 Date d'inscription samedi 26 mars 2005 Statut Membre Dernière intervention 29 juin 2009 7
18 août 2008 à 15:47
Bien après toutes ces recherches j'ai fini par trouver une solution


En fait il faut prendre l'évènement


gridView_ImportHistory_CustomUnboundColumnData


Voici mon code :



///


<summary>








///
Handles the Enter event of the grid of history import.






///


</summary>






///



The source of the event.








///



The
<see cref="System.EventArgs"/>
instance containing the event data.








private



void
gridView_ImportHistory_CustomUnboundColumnData(

object
sender, DevExpress.XtraGrid.Views.Base.

CustomColumnDataEventArgs
e){


//Test if the column if teh column of the file size in Ko






if
(e.Column.FieldName ==

"DCH_IMPORT_SIZE_CALCULATED"
&& e.IsGetData){


//Get the row handle






DataRow
row =

this
.gridView_ImportHistory.GetDataRow(e.RowHandle);


//Set the value of the cell

e.Value = (




decimal
)((

int
)row[

"DCH_IMPORT_SIZE"
] / 1024f);}

}

Et voilà çà fonctionne !!!

Merci encore olibara pour ton aidelafolle
3
OursPasNet Messages postés 45 Date d'inscription jeudi 10 novembre 2005 Statut Membre Dernière intervention 14 août 2008
14 août 2008 à 15:40
0
olibara Messages postés 666 Date d'inscription dimanche 16 décembre 2007 Statut Membre Dernière intervention 11 mars 2010 6
16 août 2008 à 22:24
Ton explication n'est pas tres claire

Quelles sont les etape que tu a effectué pour arriver a ton dataview ?

En regle générale : TOUJOURS effectuer les modif sur les données sous-jacentes

J'imagine que tes données sont dans une datatable et que tu a mis un dataview dessus
Pour faire une modif tu peux utiliser le dataview pour retrouver le datarow original

DataRow dtr=(DataRow)dtv[idx].row;
value=(double)dtr["MonChamp"];
value/=1024.0f;
dtr["MonChamp"]=value;

(a moins que tu ne parle d'un DataGridView ???)
0
lafolle24320 Messages postés 406 Date d'inscription samedi 26 mars 2005 Statut Membre Dernière intervention 29 juin 2009 7
18 août 2008 à 11:33
parle en effet d'une datagridView.


En fait je vais essayer d'ajouter une colonne a ma datagrid.. et cette colonne je vais tenter de la remplir avec mes valeurs? il faudrait qu'elle soit pas dans le dataSource...


 


Exemple


col1                    col2
val1_BD               val1_BD/1024

les valeurs de la colonne 1 sont dans le datasource, les valeurs de la colonne 2 sont calculées

Merci encore



lafolle
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
olibara Messages postés 666 Date d'inscription dimanche 16 décembre 2007 Statut Membre Dernière intervention 11 mars 2010 6
18 août 2008 à 11:40
Ca ne pose a mon avis aucun problème !
Et je pense que tu a intéret a ajouter ta colonne directement dans ta datatable, il y a plusieurs strategie pour cela
0
lafolle24320 Messages postés 406 Date d'inscription samedi 26 mars 2005 Statut Membre Dernière intervention 29 juin 2009 7
18 août 2008 à 11:48
ouille ouille ouillle je comprend pas vraiement comment çà fonctionne ....

oBLLUcRefImport.DVDCCT_HIST -> les données pour le datasource
gridControl_ImportHistory.DataSource -> DataSource de ma gridView

this.gridControl_ImportHistory.DataSource =
this.oBLLUcRefImport.DVDCCT_HIST;

J'ai rajouté à l'aide du designer une colonne au dataview... mais je ne sais pas comment la remplir :-(, je ne comprend pas la stratégie à adoptée.
l'algo est je pense le suivant

parcours des valeurs de  la colonne(x) du datasource
        valeur de la colonne(y) = valeur de la colonne(x) / 1024
fin

je n'arrive pas à le traduire

merci de ton aide olibara
lafolle
0
olibara Messages postés 666 Date d'inscription dimanche 16 décembre 2007 Statut Membre Dernière intervention 11 mars 2010 6
18 août 2008 à 12:11
Tes colonnes ont un nom !!
Il vaut mieux acceder les collonnes par leur nom

En gros ca donne +/- ca  :

DGV represente to datagridview qui a un nom a dormir dehors et dont je risque d'oublier une particule ou un titre de nobesse !

for (int i=0;i<DGV.Rows.Count;i++)
{
    double val=(double)DGV.Rows[i]["MaColonneSource"].Value;
    DGV.Rows[i]["MaColonneDest"].Value=val/1024.0f;
}
0
lafolle24320 Messages postés 406 Date d'inscription samedi 26 mars 2005 Statut Membre Dernière intervention 29 juin 2009 7
18 août 2008 à 12:27
Je n'ai pas la méthode Rows sur ma dgv ....
lafolle
0
lafolle24320 Messages postés 406 Date d'inscription samedi 26 mars 2005 Statut Membre Dernière intervention 29 juin 2009 7
18 août 2008 à 12:29
voilà ce que j'écris en focntion de ce que tu me donnes :

for (
int i=0;i<
this.gridView_ImportHistory.RowCount;i++){

double val = (
double)
this.gridView_ImportHistory.GetDataRow(i)[
"DCH_IMPORT_SIZE"].Value;

this.gridView_ImportHistory.GetDataRow(i)[
"DCH_IMPORT_SIZE_CALCULATED"].Value=val/1024.0f;}

mais le .Value n'existe pas. 
Pourquoi n'a tu pas la même chise que moi .... je suis en C#

lafolle
0
lafolle24320 Messages postés 406 Date d'inscription samedi 26 mars 2005 Statut Membre Dernière intervention 29 juin 2009 7
18 août 2008 à 12:35
On avance.. a priori le .value n'est pas nécessaire.

il reste encore une erreur.. il ne reconnait pas ma colonne destinataire dans ma view. y a t il quelque chose de spécial à faire pour dire qu'elle n'est pas du DataSource. genre la propriété Unbound a modifier ??

Merci encore de ton aide précieuse
lafolle
0
olibara Messages postés 666 Date d'inscription dimanche 16 décembre 2007 Statut Membre Dernière intervention 11 mars 2010 6
18 août 2008 à 12:36
Salut

1- Rows n'est pas une methode !
2- Un datagridview a FORCEMENT des Rows

3- J'utilise C#2008 e le FW 3.5

Mais ca existait deja en 2005 avec 2.0 !

Donc cherche encore un peu !!
0
olibara Messages postés 666 Date d'inscription dimanche 16 décembre 2007 Statut Membre Dernière intervention 11 mars 2010 6
18 août 2008 à 12:45
Salut

Petite précision

C'est

Rows[i].Cells["MaColonne"];

Qu'il faut utiliser
L'autre syntaxe c'est pour un DataRow
0
lafolle24320 Messages postés 406 Date d'inscription samedi 26 mars 2005 Statut Membre Dernière intervention 29 juin 2009 7
18 août 2008 à 13:31
Ok, ... maintenant que j'ai mangé une petite idée me monte à la tête... j'étais en train de travailler sur une GridView au lieu d'une DataGridView....

lafolle
0
lafolle24320 Messages postés 406 Date d'inscription samedi 26 mars 2005 Statut Membre Dernière intervention 29 juin 2009 7
18 août 2008 à 13:55
bon me revoilà à la case départ.. n'aurait tu pas un bon tuto qui explique les principês de c'est grille.. je crois que je comprend rien..


J'ai une DataGrid auquel était affecté un GridControl et ce GridControl a un DataSource.


Je voudrait rajouter a la DataGrid une nouvelle colonne indépendante du control.. pfff dur dur, le problème c'est que je trouve pas de tuto alors si vous avez des liens...



lafolle
0
olibara Messages postés 666 Date d'inscription dimanche 16 décembre 2007 Statut Membre Dernière intervention 11 mars 2010 6
18 août 2008 à 14:16
Salut

1- D'abord fais un effort pour appeller un chat un chat
Car un dataview qui devient un datagridview pour redevenir un datagrid c'est pas gagné pour l'efficacité de la compréhension ! Ni la tienne ni pour ceux qui essayent de t'aider ....

2- avec quelle version du framwork et de C# tu travaille ?
Les datagrid n'existent plus !
Faire tourner la machine a vapeur de ton grand pere c'est sans doute exaltant mais pas forcément productif !
0
lafolle24320 Messages postés 406 Date d'inscription samedi 26 mars 2005 Statut Membre Dernière intervention 29 juin 2009 7
18 août 2008 à 14:17
je ne sais vraiment pas comment m'y prendre :

this.gridView_ImportHistory.Columns.AddRange(
new DevExpress.XtraGrid.Columns.
GridColumn[] {

this.gridColumnImportdate,

this.gridColumnDCCT_REF,

this.gridColumnACTION,

this.gridColumnDCH_ISSUE,

this.gridColumnDCCT_ISSUE,

this.gridColumnCOMMENT,

this.gridColumnImportfile,

this.gridColumnImportfilesize,

this.gridColumnImportfiledate,

this.gridColumnImportFileSizeCalculated});

this.gridView_ImportHistory.GridControl =
this.gridControl_ImportHistory;

//

// gridControl_ImportHistory

//

this.gridControl_ImportHistory.Anchor = ((System.Windows.Forms.
AnchorStyles)((((System.Windows.Forms.
AnchorStyles.Top | System.Windows.Forms.
AnchorStyles.Bottom)| System.Windows.Forms.

AnchorStyles.Left)| System.Windows.Forms.

AnchorStyles.Right)));

this.gridControl_ImportHistory.DataSource =
this.ImportHistoryBindingSource;

this.gridControl_ImportHistory.EmbeddedNavigator.Name =
"";

this.gridControl_ImportHistory.Location =
new System.Drawing.
Point(6, 82);

this.gridControl_ImportHistory.MainView =
this.gridView_ImportHistory;

this.gridControl_ImportHistory.Name =
"gridControl_ImportHistory";

this.gridControl_ImportHistory.RepositoryItems.AddRange(
new DevExpress.XtraEditors.Repository.
RepositoryItem[] {

this.repositoryItemLookUpEdit_DCCT_REF,

this.repositoryItemLookUpEdit_DCCT_ISSUE});

this.gridControl_ImportHistory.Size =
new System.Drawing.
Size(783, 347);

this.gridControl_ImportHistory.TabIndex = 6;

this.gridControl_ImportHistory.ViewCollection.AddRange(
new DevExpress.XtraGrid.Views.Base.
BaseView[] {

this.gridView_ImportHistory});

this.gridControl_ImportHistory.DataSource =
this.oBLLUcRefImport.DVDCCT_HIST;
je ne vois pas sur quoi agir .. sur la view directement ?? sur le control ???
lafolle
0
lafolle24320 Messages postés 406 Date d'inscription samedi 26 mars 2005 Statut Membre Dernière intervention 29 juin 2009 7
18 août 2008 à 14:20
je crois que je m'emèle les pinceaux parce que je comprend rien .....

alors voici la déclaration de mes éléments :

internal DevExpress.XtraGrid.Views.Grid.
GridView gridView_ImportHistory;

internal DevExpress.XtraGrid.
GridControl gridControl_ImportHistory;

lafolle
0
Rejoignez-nous