"tradurre" & , " , ... ecc. nei rispettivi caratteri in textb...

venerdì 09 gennaio 2009 - 13.10

danicotra Profilo | Newbie

Ciao a tutti,
mi cimento in ASP.NET da non molto e avevo bisogno di una dritta, spero possiate aiutarmi.
Quando vado in modalità edit con una datagrid riempita con i valori di una tabella DB SQL Server, in caso io abbia usato caratteri come " o & (tipo Gianni "testadilegno" Rossi) in campi di tipo varchar/nchar, nelle textbox compaiono entità html al posto di questi (cose del tipo: Gianni "testadilegno" Rossi)...
Come posso far comparire i caratteri "originali" da me inseriti (vorrei leggere nella textbox: Gianni "testadilegno" Rossi per intenderci)?
Grazie!

kontax Profilo | Junior Member

Se non mi sbaglio, devi importare il System.Web.Quindi:

using System.Web;

poi sulla stringa fai
string a = "Gianni "testadilegno" Rossi"; a=HttpUtility.HtmlDecode(a); TextBox1.Text=a;
Ciao

EDIT: scusa, avevo letto male.
Allora, il consiglio sopra ovviamente vale se non usi il caricamento dei dati da una datasource nella finestra di progettazione. Nel caso tu attualmente stia facendo così, ti consiglio di caricare i dati dal db da codice, e poi elaborare i dati come ti ho detto sopra.
Ciao

danicotra Profilo | Newbie

Ciao!
Ho provato seguendo il tuo consiglio ed effettivamente così già funziona (grazie!);
solo che devo manualmente applicare la conversione per tutte textbox della mia datagrid...
Se è l'unico modo possibile mi dovro' accontentare (e comunque ti ringrazio ancora) ma così è un po' scomodo...
Mi stavo domandando: esiste un modo di leggere i dati da DB effettuando la decodifica a monte?
Non so, tipo una particolare proprietà degli SqlCommand o degli SqlDataAdapter o ancora dei DataSet o dei DataView?
Io, infatti, creo un comando SqlCommand per la query SELECT, poi creo un oggetto SqlDataAdapter a cui associo il citato comando e, da questo, riempio un mio oggetto DataSet dal quale, infine, creo un oggetto DataView che poi associo come datasource della mia DataGrid. In un punto qualsiasi fra tutti questi passaggi non posso impostare qualcosa in modo tale che, tutti i dati letti e inseriti nell'oggetto X (SqlDataAdapter/DataSet/DataView) vengano già inseriti decodificati in modo automatico (in modo da non doverlo fare io manualmente alla fine)?
Grazie!

D.N.

kontax Profilo | Junior Member

Eh, guarda, che io sappia no..
Poi magari c'è il modo e sono io che non lo so, aspettiamo per vedere se c'è qualcuno ne sa di più.
Ciao

danicotra Profilo | Newbie

Ok, speriamo che qualche "guru" intervenga sull'argomento...

Intanto, in ogni caso, grazie davvero tante a te per l'aiuto.


D.N.

TOPOAMORE Profilo | Expert

Ciao
premetto che non sono un GURU ma ti consigliavo:
ammettiamo che questa classe non esista perche non te la crei tu?

Se ti serve una mano non c'e' problema basta che mi dici l'esatto movimento dei dati e come ti servono e ti aiuto

Ciaoooo
ASP 2.0 - VB 2008

danicotra Profilo | Newbie

Ciao!
Ma, ti diro', è molto semplice:
creo un comando sql ("SELECT * FROM tabella")
poi lo eseguo e riempio un dataset
dal dataset mi creo un dataview
ho una datagrid è associo datagrid.datasource=dataview
fin qui penso sia tutto chiaro, no?

ora, immagino sia altrettanto semplice e chiaro che le datagrid possono avere delle colonne EditCommandColumn, perfetto.
il problema è che, dopo aver premuto il bottone "edit" compaiono le textbox nel datagrid ma nelle textbox, appunto, le entità " e compagnia non vengono prima decodificate nei corrispondenti caratteri e quindi... ecco il nocciolo!

Una classe... mi stai suggerendo di riscrivere il metodo datagrid.datasource aggiungendo ad esso la decodifica?

P.S.
ma non importa guru o non guru, figurati...
a me basta sapere se esiste un modo comodo di applicare questo tipo di decodifica

D.N.

TOPOAMORE Profilo | Expert

Ciao
allora bisogna
1)intercettare l'evento click sull' edit
2)usare il replace a tutti i campi
3)piazzare i nuovi valori nelle text

Dimmi fino a dove arrivi al resto pensiamo dopo

Ciaoo
ASP 2.0 - VB 2008

danicotra Profilo | Newbie

Sì, avevo capito, infatti avevo provato su una webform e appurato che funzionava MA è così che risolverei SOLO E SOLO se non ci fosse un modo più "comodo" per fare la decodifica...
Oltretutto, ho anche alcune dropdownlist in cui i valori vengono direttamente da una select come datasource e lì non posso "agevolmente" applicare nemmeno la procedura -chiamiamola- "manuale" (di seguito un esempio)

<asp:SqlDataSource ID="mia_SqlDataSource" runat="server"
ConnectionString="..."
SelectCommand="SELECT * FROM [MiaTabella]">
</asp:SqlDataSource>

<asp:DropDownList ID="miaDDL" runat="server"
DataSourceID="mia_SqlDataSource" DataTextField="nome"
DataValueField="id">
</asp:DropDownList>

Insomma, quello che vorrei sapere è: anzichè dover essere io manualmente ad applicare il replace a tutti i campi (metti con un for each), non esiste un sistema per prelevare questi dati dal DB già decodificati (una funzione di SQL Server 2005 per esempio)?
Spero di essermi fatto capire meglio.
Grazie.

D.N.

TOPOAMORE Profilo | Expert

Che io sappia non esiste ma prova a postare nella sezione SQL del sito e vedi se hai risposte

Ciaooo
ASP 2.0 - VB 2008

kontax Profilo | Junior Member

A questo punto un' ultima cosa, magari è una domanda scema, ma i dati da decodificare, perchè ci sono sul db?
Non puoi modificarti una volta per tutte il db?O comunque, se l'inserimento dei dati avviene dalla tua applicazione, vedere perchè te li salva così?
In ogni caso, puoi provare come dice TOPOAMORE..
Ciao

danicotra Profilo | Newbie

Be', onestamente non so perchè i dati escano così dal db, io li immetto nelle textbox ovviamente con caratteri normali... Evidentemente li codifica lui prima di salvarli, credo sia l'unica spiegazione... (che sia una codifica per motivi di sicurezza?)
Ad ogni modo, provero' a postare sulla sezione SQL, grazie.

D.N.

kontax Profilo | Junior Member

Boh, non ne avevo mai sentito parlare..
Per curiosità, puoi postare il codice che usi per leggere dalla textbox di inserimento e per fare l'insert nel db?

danicotra Profilo | Newbie

Ho utilizzzato di base lo stesso listato che puoi trovare sul sito di html.it a questo url:
http://www.html.it/articoli/esempi/articoli_asp/206/listato1.html

D.N.
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