Quale controllo di visualizzazione Dati mi consigliate di usare?

venerdì 14 maggio 2010 - 11.32

willy23 Profilo | Newbie

Cari amici,uso asp.net 3.5 con codice VB, ho un database con 6 campi circa e solo uno di questi campi contiene testo molto lungo, anche 2000-3000
caratteri, e questo vale ovviamente per ogni record.
Adesso le mie domande sono queste:
1)quale controlo mi conviene utilizzare per visualizzare questi dati considerato che un campo contiene molti caratteri?
2) Si può mettere in ogni cella di una colonna di un gridview delle scroll? Cioè ogni casellina di una certa colonna dovrebbe avere al suo interno una
scrollbar verticale, è possibile?

Grazie anticipatamente per i consigli

kataklisma Profilo | Senior Member

Ciao!

>Cari amici,uso asp.net 3.5 con codice VB, ho un database con
>6 campi circa e solo uno di questi campi contiene testo molto
>lungo, anche 2000-3000
>caratteri, e questo vale ovviamente per ogni record.
>Adesso le mie domande sono queste:
>1)quale controlo mi conviene utilizzare per visualizzare questi
>dati considerato che un campo contiene molti caratteri?

Richiesta particolare :)
Potresti ad esempio, caricare i 5 campi in una normale datagrid e al click su una riga mostrare dinamicamente in una textbox multiline sottostante, il 6° campo.

>2) Si può mettere in ogni cella di una colonna di un gridview
>delle scroll? Cioè ogni casellina di una certa colonna dovrebbe
>avere al suo interno una
>scrollbar verticale, è possibile?

Non ho mai esteso la classe datagrid con delle scrollbar....ma ho quasi la certezza che non sia assolutamente facile ;) a parer mio ti conviene pensare ad altri metodi (vedi il mio consiglio di prima ;), a volte mi è molto utile, anche in applicazioni enterprise)

>Grazie anticipatamente per i consigli
Di niente!

Ciao!
------------------------------------------
Ignazio Catanzaro

http://blogs.dotnethell.it/swdev/

Gluck74 Profilo | Guru

Ciao,


anche se non credo sia molto difficile mettere le scroll bar ad una cella di una gridview (basta agire con un div e i fogli di stile)
io sono d'accordo con kataklisma: la soluzione forse più carina è,
per l'appunto, visualizzare solo 5 dei campi.

In una sesta colonna metti un link, un'immagine, un bottone o qualsiasi cosa vuoi.
Il click su questo elemanto ti permette di visualizzare i dati dell'ipotetica sesta colonna.
Anche quì hai una vasta scelta per la visualizzazione: una finestra, una popUp javascript, una popup ajax, l'espansione della grid stessa, l'esplosione della grid con una nuova riga.... e chi più ne ha più ne metta.

l'idea è questa, se ha bisogno anche di codice...... be, prima scegli la soluzione... ;-)))))

ciao ciao

willy23 Profilo | Newbie

Grazie ragazzi per i vostri preziosi consigli.
Ho fatto in questo modo:
Ho inserito una GridView e un button su una colonna esterna.
Quando clicco estraggo il valore del campo "oggetto" e lo copio su una textbox.
Adesso però ho un problemone e spero possiate aiutarmi:
Mi sono accorto che nascondendo la colonna "oggetto" non riesco ad estrarre il valore contenuto nella cella desiderata, proprio perchè risulta nascosto.
Così con varie ricerche ho capito che dovrei usare la proprietà DataKeyNames.
Però non ci riesco.
Io faccio così:
Prima del databind metto:

GridView1.DataKeyNames = New String() {"oggetto"}
GridView1.DataBind()

ma poi nell'evento GridView1_SelectedIndexChanged come faccio a far riportare i dati della della cella nella colonna "oggetto" che risulta nascosta?
Vi prego di riportarmi per intero il codice altrimenti mi perdo con facilità.
Grazie

Gluck74 Profilo | Guru

dunque, ti mando e descrivo del codice per fare una cosa carina ed un pochetto figa:

nella gridView, metti tutte e 6 le colonne.
L'ultima colonna risulterà dunque:

<ItemTemplate> <a href="javascript:expandcollapse('div<%# Eval("ID") %>');"> <img id="imgdiv<%# Eval("ID") %>" alt="Clicca per vedere/nascondere il testo" border="0" src="../img/Plus.gif" title="Clicca per vedere/nascondere i contratti" /> </a><br /> <div id="div<%# Eval("ID") %>" style="display: none; position: static; overflow: auto; width: 97%; margin: auto; text-align: center;"> <%@ Eval("<le tue note lunghe>") %> </div> </ItemTemplate>
dove appunto fai il bind con l'ID del contratto (o il campo chiave che utilizzi tu), ed il campo che contiene le note con tanti caratteri.

Ora ti serve per l'appunto la funzione javascript expandcollapse che, lato client, visualizza e/o nasconde il div contenente il testo.
la puoi mettere all'interno della medesima pagina oppure in un javascript a parte, fai tu. La funzione è questa:

function expandcollapse(obj) { var div = document.getElementById(obj); var img = document.getElementById('imgdiv' + obj); var imgPath = '<metti un path dove hai le immagini>'; if (div.style.display == "none") { div.style.display = "block"; img.src = imgPath + "minus.gif"; img.alt = "Chiudi"; img.title = "Chiudi"; } else { div.style.display = "none"; img.src = imgPath + "Plus.gif"; img.alt = "Espandi per vedere i contratti"; img.title = "Espandi per vedere i contratti"; } }

sottinteso è che le immagini Plus e minus le puoi mettere dove vuoi e puoi mettere qualsiasi immagine che più ti piace.

prova e fammi sapere.

willy23 Profilo | Newbie

Grazie Gluck, la tua idea è molto buona, ancora non ho provato perchè sono fuori per lavoro, ma nei prossimi
giorni la testo.
Grazie:)

Gluck74 Profilo | Guru

io l'ho usata in due soluzioni, ed ha avuto molto successo.

Buona fortuna

____________
Ricordati di utilizzare il tasto "Accetta" se i nostri consigli ti sono serviti a risolvere il problema.
È il modo per ringraziare chi ti ha aiutato.
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