Problema di formattazione dropdownlist

martedì 10 giugno 2008 - 23.20

kontax Profilo | Junior Member

ciao a tutti,
ho un problemino di formattazione..
Ho una dropdownlist all'interno di una grid, il codice è questo:
Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra
Per caricarla uso quindi la funzione:
Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

Ecco il problema: i dati mi vengono dati da una stored formattati con una stringa di 64 caratteri con determinati spazi bianchi fra parole che fanno parte della stringa. Esempio = "Da Definire Da Definire Da Definire "
I dati letti dalla stored sul C# sono ancora correttamente formattati, ma quando visualizzo la dropdownlist, questa si è "mangiata" tutti gli spazi fra le parole tranne uno..."Da Definire Da Definire Da Definire"
Perchè lo fa? C'è un modo per evitarlo?
Grazie, ciaoo

alx_81 Profilo | Guru

>ciao a tutti,
Ciao!

>Ecco il problema: i dati mi vengono dati da una stored formattati
>con una stringa di 64 caratteri con determinati spazi bianchi.
>I dati letti dalla stored sul C# sono ancora correttamente formattati,
>ma quando visualizzo la dropdownlist, questa si è "mangiata"
>tutti gli spazi fra le parole tranne uno..."Da Definire Da Definire
>Da Definire"
>Perchè lo fa? C'è un modo per evitarlo?
Lo fa perchè in HTML il corrispettivo di una dropdownlist è un <select>.
Quest'ultimo, per definire i "listItem" utilizza il tag option come segue:

<select> <option value="VALORE1">TESTO1</option> <option value="VALORE2">TESTO2</option> <option value="VALORE3">TESTO3</option> </select>

Di conseguenza, siccome è al di fuori del tag ed è un testo semplice, HTML ti accetta solo il primo spazio eliminando gli altri.
Quello che puoi fare è fare la replace del valore "SPAZIO" con "&nbsp;" che è il codice di escape per HTML.
Puoi farlo sia da codice sia su SQL. Scegli tu dove è meglio. L'importante è sostituire gli spazi col codice di escape prima di bindare il dato.

>Grazie, ciaoo
Di nulla!

--

Alessandro Alpi | SQL Server MVP

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org

kontax Profilo | Junior Member

Grazie!
Da solo non ci sarei mai arrivato..

kontax Profilo | Junior Member

No,ho cantato vittoria troppo presto...
Con &nbsp; non funziona...
Questo è l'output:
Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra
Perchè mi compare &amp; al posto di &?
Nella visualizzazione invece al posto degli spazi c'è la stringa &nbsp; .
??

alx_81 Profilo | Guru

>Questo è l'output:
> <option value="Da&nbsp;Definire&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Da&nbsp;Definire&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Da&nbsp;Definire&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;">Da&nbsp;Definire&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Da&nbsp;Definire&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Da&nbsp;Definire&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</option>
Questo output è corrotto.. nel VALUE deve esserci il VALORE invisibile della combo, quello che devi mettere per visualizzarlo è tra <option> e </option>.
Inoltre, quando stampi, devi usare la Server.HtmlEncode(Stringa)/Server.HtmlDecode(Stringa) perchè altrimenti tutti i caratteri vengono ricodificati.

Io farei:

Query con spazi --> Da codice replace --> Stampa con Server.HtmlEncode(RisultatoDelReplace)
--

Alessandro Alpi | SQL Server MVP

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org

kontax Profilo | Junior Member

Hmm..dovrei avere risolto il problema degli spazi..
Ho provato con tripletta = tripletta.Replace(" ", Server.HtmlDecode("&nbsp;"));
Ed effettivamente sembra che gli spazi ci siano, anche se la formattazione non è quella giusta ancora..
Ora ci sono un numero di spazi uguali fra le parole, mentre voglio che mantengano un incolonnamento...
Cioè,
M\042 B\TWOSITMMXXX 0528067006141
B\BBRUBEBB010 B\TWOSITMMXXX 3010000585840
Questo è quello che succede mentre io vorrei:
M\042 B\TWOSITMMXXX 0528067006141
B\BBRUBEBB010 B\TWOSITMMXXX 3010000585840
Dal db lo faccio con:
DEPOSITARIA+REPLICATE(' ',32-LEN(DEPOSITARIA))+
SOGGETTO+REPLICATE(' ',32-LEN(SOGGETTO))+
CONTO+REPLICATE(' ',30-LEN(CONTO)) AS TRIPLETTA

Dove sbaglio?
Graziee

kontax Profilo | Junior Member

Esattamente quello che poi ho fatto!

Se hai idea di come si fa un bell'incolonnamento okk, sennò GRAZIE ANCORA per tutto!

alx_81 Profilo | Guru

>Se hai idea di come si fa un bell'incolonnamento okk, sennò GRAZIE
>ANCORA per tutto!
Secondo me è un problema di font.. prova col Courier New, in cui la i tiene lo stesso spazio di una m

--

Alessandro Alpi | SQL Server MVP

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org

kontax Profilo | Junior Member

Perfetto,funziona..grazie!
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