DataGrid - Formattazione Contenuto Celle

mercoledì 28 febbraio 2007 - 10.01

Piumy83 Profilo | Newbie

Ciao a tutti!!!
Sto lavorando in C# e ho questo problema...

Io leggo dei dati da una Query che vanno poi caricati in un DataGrid... Tra i campi letti, ce n'è uno che su DB presenta i seguenti valori:

- "I" --> "ISCRITTI"
- "A" --> "ARRIVATI"
- "M" --> "MERITO"

A seconda del valore che leggo, devo scrivere nella cella corrispondente del DataGrid (In fase di caricamento dei dati) la giusta "trascodifica"...
Per la Personalizzazione delle colonne ho usato il seguente codice:

DataGridTableStyle Stile = new DataGridTableStyle();
Stile.MappingName = dgCategorie.DataMember;

DataGridColumnStyle Col;
Stile.MappingName = dgCategorie.DataMember;
Stile.RowHeaderWidth = 15;

Col = new DataGridTextBoxColumn();
Col.MappingName = "c_categoria";
Col.Width = 100;
Col.HeaderText = "c_categoria";
Col.NullText = "";
Stile.GridColumnStyles.Add(Col);

Per personalizzare il contenuto di una cella come posso fare???

Grazie mille

Piumy83 - Micky

chava Profilo | Newbie

Potresti aggiungere una nuova colonna alla tabella con la proprietà
Expression = "iif(c_categoria='I','...',iif(c_categoria='A','arri...','...'))"
Se ti è possibile intervieni con questa formula sulla query oppure in join con una seconda tab con i valori

Piumy83 Profilo | Newbie

Mmmm... No non funziona... Ma probabilmente non ho capito il suggerimento... Specifico intanto che il DB su cui lavoro è un DB Access
Piumy83 - Micky

Kommad Profilo | Newbie

Io agirei direttamente sulla select che fai nel database access in maniera che fosse lui a risponderti i valori corretti.

- "I" --> "ISCRITTI"
- "A" --> "ARRIVATI"
- "M" --> "MERITO"

Nella select che richiami per farti passare i dati potresti fare:ù

SELECT Pippo, Pluto, Paperino, Paperoga: IIf(CampoData="I";"ISCRITTI";IIf(CampoData="A";"ARRIVATI";IIf(CampoData="M";"MERITO";"NC")))

IN questa maniera non hai problemi di inventarti giri strani, perchè è gia il database a passarti il tutto correttamente.

Ciao.

Piumy83 Profilo | Newbie

Mmmmm

Io ho fatto questa query:

SELECT C_CATEGORIA, TIPO_PUNT: IIf(TIPO_PUNT="I";"ISCRITTI";"NULLO")
FROM T_CETEGORIE
where c_categoria = 43

Ma mi da' questo errore: "Operatore mancante nell'espressione della query: TIPO_PUNT: IIf(TIPO_PUNT='I';'ISCRITTI';'NULLO')

Dove sbaglio?
Piumy83 - Micky

Kommad Profilo | Newbie


>SELECT C_CATEGORIA, TIPO_PUNT: IIf(TIPO_PUNT="I";"ISCRITTI";"NULLO")
>FROM T_CETEGORIE
>where c_categoria = 43

Se TIPO_PUNT è il nome del campo l'espressione è sbagliata perche' l'alias che hai usato (TIPO_PUNT:) è uguale al nome del campo della tabella sul quale vuoi fare l'IIF

Dovresti scrivere:

SELECT C_Categoria, Alias_Tipo_Punt: IIf(Tipo_Punt="I";"ISCRITTI";"NULLO")
FROM T_Categire
where C_Categoria = 43

Così dovrebbe funzionare!!

Ciao

Piumy83 Profilo | Newbie

A me continua a dare errore

Piumy83 - Micky

Jumpa Profilo | Junior Member

scusate l'intromissione,
ma io farei una tabella di supporto con dentro la codifica,
e poi ti tiri fuori i dati o facendo un join al volo,
oppure facendo una vista statica contenente il join, cosi che tu fai la select direttamente sulla vista e ti alimenti il datagrid.
secondo me è piu funzionale anche perche il giorno che ti cambia la codifica o aggiungi una voce o quello che ti pare non fai altro che aggiungere un record nella tabella dei codici
-------------------------
Follow the White Rabbit...

http://www.jumpa.org
-------------------------

Piumy83 Profilo | Newbie

Sì... Anche... Ma è appunto la codifica che a me non funziona...
Piumy83 - Micky

Jumpa Profilo | Junior Member

hai provato ad implementare la soluzione che ti ho proposto?
-------------------------
Follow the White Rabbit...

http://www.jumpa.org
-------------------------

Kommad Profilo | Newbie


>tu fai la select direttamente sulla vista e ti alimenti il datagrid.
>secondo me è piu funzionale anche perche il giorno che ti cambia
>la codifica o aggiungi una voce o quello che ti pare non fai
>altro che aggiungere un record nella tabella dei codici


Hai Ragione Jampa, ma non aveva parlato di tabelle o quant'altro per la codifica, quindi la cosa più semplice mi sembrava quella di mettere un IIF...
Sicuramente quello è il modo più versatile...

E' strano però che ti dia errore.. L'unica cosa che mi viene in mente e che potrebbe dipendere dal ";"
Prova a sostituirli con "," magari digerisce meglio la select...

Piumy83 Profilo | Newbie

Io scrivo la Query su Access e non funziona...
Ho provato in tutti i modi... Anche con la "," mi continua a dare lo stesso errore: "Operatore Mancante"...

Piumy83 - Micky

Kommad Profilo | Newbie

Scusami ho fatto un po' di confusione tra le versioni di access, e un bel po' che non ci metto le mani.

SELECT C_CATEGORIA, IIf(TIPO_PUNT="I","ISCRITTI","NULLO") AS TIPO_PUNT
FROM T_CETEGORIE
where c_categoria = 43

Questa l'ho provato sul crea query di Access e funziona.

Piumy83 Profilo | Newbie

Grande!!!
Grazie mille!!! Io ho sempre lavorato su DB Oracle, ed Access lo odio profondamente!!!

Grazie mille, mi hai risolto una grossa rogna!!!!

Piumy83 - Micky
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5