Modifier la valeur des cellule d'une dataView [Résolu]

lafolle24320 406 Messages postés samedi 26 mars 2005Date d'inscription 29 juin 2009 Dernière intervention - 14 août 2008 à 11:21 - Dernière réponse : lafolle24320 406 Messages postés samedi 26 mars 2005Date d'inscription 29 juin 2009 Dernière intervention
- 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
Afficher la suite 

17 réponses

Répondre au sujet
lafolle24320 406 Messages postés samedi 26 mars 2005Date d'inscription 29 juin 2009 Dernière intervention - 18 août 2008 à 15:47
+3
Utile
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
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de lafolle24320
OursPasNet 47 Messages postés jeudi 10 novembre 2005Date d'inscription 14 août 2008 Dernière intervention - 14 août 2008 à 15:40
Commenter la réponse de OursPasNet
olibara 670 Messages postés dimanche 16 décembre 2007Date d'inscription 11 mars 2010 Dernière intervention - 16 août 2008 à 22:24
0
Utile
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 ???)
Commenter la réponse de olibara
lafolle24320 406 Messages postés samedi 26 mars 2005Date d'inscription 29 juin 2009 Dernière intervention - 18 août 2008 à 11:33
0
Utile
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
Commenter la réponse de lafolle24320
olibara 670 Messages postés dimanche 16 décembre 2007Date d'inscription 11 mars 2010 Dernière intervention - 18 août 2008 à 11:40
0
Utile
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
Commenter la réponse de olibara
lafolle24320 406 Messages postés samedi 26 mars 2005Date d'inscription 29 juin 2009 Dernière intervention - 18 août 2008 à 11:48
0
Utile
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
Commenter la réponse de lafolle24320
olibara 670 Messages postés dimanche 16 décembre 2007Date d'inscription 11 mars 2010 Dernière intervention - 18 août 2008 à 12:11
0
Utile
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;
}
Commenter la réponse de olibara
lafolle24320 406 Messages postés samedi 26 mars 2005Date d'inscription 29 juin 2009 Dernière intervention - 18 août 2008 à 12:27
0
Utile
Je n'ai pas la méthode Rows sur ma dgv ....
lafolle
Commenter la réponse de lafolle24320
lafolle24320 406 Messages postés samedi 26 mars 2005Date d'inscription 29 juin 2009 Dernière intervention - 18 août 2008 à 12:29
0
Utile
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
Commenter la réponse de lafolle24320
lafolle24320 406 Messages postés samedi 26 mars 2005Date d'inscription 29 juin 2009 Dernière intervention - 18 août 2008 à 12:35
0
Utile
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
Commenter la réponse de lafolle24320
olibara 670 Messages postés dimanche 16 décembre 2007Date d'inscription 11 mars 2010 Dernière intervention - 18 août 2008 à 12:36
0
Utile
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 !!
Commenter la réponse de olibara
olibara 670 Messages postés dimanche 16 décembre 2007Date d'inscription 11 mars 2010 Dernière intervention - 18 août 2008 à 12:45
0
Utile
Salut

Petite précision

C'est

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

Qu'il faut utiliser
L'autre syntaxe c'est pour un DataRow
Commenter la réponse de olibara
lafolle24320 406 Messages postés samedi 26 mars 2005Date d'inscription 29 juin 2009 Dernière intervention - 18 août 2008 à 13:31
0
Utile
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
Commenter la réponse de lafolle24320
lafolle24320 406 Messages postés samedi 26 mars 2005Date d'inscription 29 juin 2009 Dernière intervention - 18 août 2008 à 13:55
0
Utile
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
Commenter la réponse de lafolle24320
olibara 670 Messages postés dimanche 16 décembre 2007Date d'inscription 11 mars 2010 Dernière intervention - 18 août 2008 à 14:16
0
Utile
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 !
Commenter la réponse de olibara
lafolle24320 406 Messages postés samedi 26 mars 2005Date d'inscription 29 juin 2009 Dernière intervention - 18 août 2008 à 14:17
0
Utile
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
Commenter la réponse de lafolle24320
lafolle24320 406 Messages postés samedi 26 mars 2005Date d'inscription 29 juin 2009 Dernière intervention - 18 août 2008 à 14:20
0
Utile
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
Commenter la réponse de lafolle24320

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.