Lista di valori in un formula field

mercoledì 13 luglio 2011 - 15.47
Tag Elenco Tags  C#  |  .NET 3.5  |  Windows XP  |  Visual Studio 2008

serginho78 Profilo | Newbie

Salve a tutti,
ho un problemino. Ho una lista di valori che prendo da un database. E' possibile andare a inserire la lista di valori in un campo formula field? Lo chiedo perchè i valori di cui parlo sono alfanumerici (stringhe in pratica) e, visto che il numero di valori è variabile, volevo sapere se è possibile fare quanto detto. Faccio un esempio pratico. Ho un'auto che ha degli accessori (ad es: accendisigari e navigatore). Posso andare a inserirli (entrambi i valori) in un formula field? C'è da dire che, da codice, utilizzo un foreach per prendere i valori suddetti e, poi, il mio scopo è di inserirli nel formula field creato.
Come faccio io:

foreach (var accessorioMezzo in mezzoAccessorioService.SelectAccessoriDelMezzo(noleggiomezzo.Fk_Mezzo)) //accessoriMezzo è la lista degli accessori appartenenti a un determinato mezzo
{
var nomeaccessorio = accessorioService.SelectAccessorio(accessorioMezzo.Fk_Accessorio); //prendo il nome dell'accessorio
repIni.DataDefinition.FormulaFields["campoAppoggio"].Text = "'" + nomeaccessorio + "'"; //e lo metto nel formula field
}

dopo aver inserito un valore, all'arrivo del 2° valore mi va a sovrascrivere (giustamente penso!) il 1° valore immesso.
Questo esempio è solo nel caso di 2 accessori....ma, naturalmente, ne posso avere molti di più. Come posso fare?

Grazie anticipatamente per le risposte!

EDIT:
Ok, ho risolto andando a inserire una stringa d'appoggio (inserisco il codice):

string appoggio = "'";
foreach (var accessorioMezzo in mezzoAccessorioService.SelectAccessoriDelMezzo(noleggiomezzo.Fk_Mezzo))
{
string nomeaccessorio = accessorioService.SelectAccessorio(accessorioMezzo.Fk_Accessorio);
appoggio += nomeaccessorio.ToString() + " ";
}
appoggio += "'";
repIni.DataDefinition.FormulaFields["AccessorioMezzo"].Text = appoggio;

Sfrutto il ciclo foreach per andarmi a inserire nella stringa i valori che trovo man mano nel DB.
Ma, adesso, ho un altro piccolo problema....come faccio a portarmi accapo ogni valore che inserisco nel campo formula field?
Perchè, come ho fatto io, mi esce una lista di questo genere:

accendisigari stereo navigatore

e vorrei, invece, che i valori andassero a capo.

freeteo Profilo | Guru

Ciao,
dato che giri e concateni la stringa, ti basta aggiungere un "Acapo" e poi dire alla formula "Can Grow" (può aumentare) nelle sue proprietà.
Per l'acapo ti basta fare una concatenazione del carattere "chr(13)" :

...
foreach (var ...) { string nomeaccessorio = accessorioService.SelectAccessorio(accessorioMezzo.Fk_Accessorio); appoggio += "'" nomeaccessorio.ToString() + "' + char(13) "; } repIni.DataDefinition.FormulaFields["AccessorioMezzo"].Text = appoggio;
notare gli apici come "contornino" i valori, separati appunto dal chr(13) che devi scrivere come stringa nella formula...

Ciao.

Matteo Raumer
[MCAD .net, MVP Visual C#]
http://blogs.dotnethell.it/freeteo
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-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5