Gridview in asp.net

martedì 15 marzo 2011 - 11.48

trinity Profilo | Guru

Ragazzi,
io ho applicato ad una gridview un campo text di un tabella sql...ora vorrei che nella colonna della gridview non venisse visualizzato tutto il testo ma bensì solo una parte, che poi con la visualizzazione dei alcuni puntini di sospensione faccia capire che il testo è ben più lungo...poi io ci applicherei un pulsante chiamato dettaglio che determinerà a sua volta la visualizzazione dell'intero testo....Solo che sto vedendo la formattazione del campo ma non c'è questa opzione..C'è la proprietà "Wrap" ma non mi permette di fare quello che voglio..

Prima di tutto con la gridview si può fare? e se si come?

Grazie e ciao
Cirillo Fabio
www.wondernet.biz
fabio@wondernet.biz
http://blogs.dotnethell.it/fabiocirillo/
http://wnetsoftware.blogspot.com

paoval72 Profilo | Senior Member

Ciao. Di solito utilizzo due opzioni:
1) nell'evento _RowDataBound controllola lungheza della mia cella (dipende se utilizzi un BoundFiled o un controllolo asp annidato, tipo label o textbox). Questo è un esempio, anche se non è mai consigliato utilizzare l'indice di una cella della riga
Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

2) Mi creo un controllo che eredita dalla classe Label e faccio l'override del metodo MaxtextLength:
Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra
Poi, lato client, quando inserisco la label personalizzata, posso settare la massima lunghezza del testo:
<MyLabel MaxTextLength="10" runat="server" ID="lblFile"></MyLabel>

Vedi se ti può servire.

Ciao,
PV

alexmed Profilo | Guru

Oppure puoi fare così utilizzando il TemplateField:

Immagina che la GridView originale sia così:

<asp:GridView ID="GridView2" runat="server" AutoGenerateColumns="False"
DataSourceID="AccessDataSource1">
<Columns>
<asp:BoundField DataField="Data" HeaderText="Data" SortExpression="Data" />
<asp:BoundField DataField="Titolo" HeaderText="Titolo" SortExpression="Titolo" />
<asp:BoundField DataField="News" HeaderText="News" SortExpression="News" />
</Columns>
</asp:GridView>

Personalizziamo la colonna News inserendo al suo posto un TemplateField:

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"
DataSourceID="AccessDataSource1">
<Columns>
<asp:BoundField DataField="Data" HeaderText="Data" SortExpression="Data" />
<asp:BoundField DataField="Titolo" HeaderText="Titolo" SortExpression="Titolo" />
<asp:TemplateField HeaderText="Notizia">
<ItemTemplate>
<asp:Label ID="NewsLabel" runat="server" Text='<%# Eval("News").SubString(0,50) & " ..." %>' />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>

Cosa ne dici?

Ciao



alexmed

trinity Profilo | Guru

Grazie funziona
ciao :)
Cirillo Fabio
www.wondernet.biz
fabio@wondernet.biz
http://blogs.dotnethell.it/fabiocirillo/
http://wnetsoftware.blogspot.com

trinity Profilo | Guru

Ciao senti ora non capisco prima il codice funzionava, ora lancio la pagina e mi esce questo messaggio:

Index e length devono fare riferimento a una posizione nella stringa.
Nome parametro: length

ecco il codice scritto:

<asp:Label ID="Label1" runat="server"
Text='<%# Eval("notizia").Substring(0,50) & " ..." %>'></asp:Label>
</ItemTemplate>


sai il perchè?

Cirillo Fabio
www.wondernet.biz
fabio@wondernet.biz
http://blogs.dotnethell.it/fabiocirillo/
http://wnetsoftware.blogspot.com

paoval72 Profilo | Senior Member

Probabilmente viene passata una stringa vuota o nulla e quindi non può ovviamente trovare la substring.

PV

alexmed Profilo | Guru

Ciao
Come dice paoval72 ho gli passi una String più corta oppure vuota, quindi potresti risolvere richiamando una funzione:

ASP.NET

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

VB.NET

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

Ciao

alexmed
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