Scrivere in Cella di una GridView

venerdì 07 settembre 2007 - 15.50

SharKMaN Profilo | Newbie

Ciao a tutti,
sto cercando di scrivere in una cella di una GridView ma... senza ottenere il risultato:

For Conta = 0 To GridOrdine.Rows.Count - 1

myReaderUte = myCmdUte.ExecuteReader

If myReaderUte.Read = True Then

GridOrdine.Rows(Conta).Cells(1).Text = Right(GridOrdine.Rows(Conta).Cells(1).Text,2) & "." & left(GridOrdine.Rows(Conta).Cells(1).Text,4)

If GridOrdine.Rows(Conta).Cells(3).Text = "C" Then
GridOrdine.Columns(6 + myReaderUte("UTE_9")).Visible = True
End If

If GridOrdine.Rows(Conta).Cells(3).Text = "R" Then
GridOrdine.Columns(9 + myReaderUte("UTE_9")).Visible = True
End If

End If

myReaderUte.Close()

Next

GridOrdine.Visible = True

Durante il Debug lo sostituisce...ed è anche visibile su cartaceo... ma nel momento in cui viene visualizzata la GridView la cella non viene modificata...

C'è la possibilità di fare ciò ?
Ciao a tutti
Daniele

freeteo Profilo | Guru

ciao,
non so se hai gia' risolto visto il tempo passato da quando hai postato il problema, cmq ti rispondo ugualmente.
Il problema potrebbe essere che hai legato la gridview a qualche fonte dati (tipo sqldatasource/accessdatasource), e quindi quando tu fai il codice, lo fai prima che venga bindata la griglia ai dati.

Prova a richiamare il metodo "DataBind()" della pagina prima di fare li tuo codice, cosi' facendo i dati vengono forzati ad essere caricati e bindati appunto alla griglia...a quel punto in memoria dovresti avere gia' tutte le celle e quindi scrivendo dentro a qualcuna di queste diovresti vederla poi anche nel rendering della pagina...
ciao.

Matteo Raumer
[MCAD .net]
http://blogs.dotnethell.it/freeteo

SharKMaN Profilo | Newbie

Ciao Teo e grazie dell'aiuto

ho fatto come mi hai detto di mettere prima del codice il Page.DataBind... ma il risultato è identico...

la cosa buffa è che quando sono in debug ed esegue tale stringa

GridOrdine.Rows(Conta).Cells(1).Text = Right(GridOrdine.Rows(Conta).Cells(1).Text, 2).ToString & "." & Mid(GridOrdine.Rows(Conta).Cells(1).Text, 5, 2).ToString & "." & Left(GridOrdine.Rows(Conta).Cells(1).Text, 4).ToString

se il dato è 20070922

in Cells(1).Text mi riporta correttamente 22.09.2007 ... solo che quando viene visualizzata la Griglia lo riporta allo stato naturale... come se il ciclo del For... neanche lo esegue...

Cosa possiam fare?
Ciao
Daniele

freeteo Profilo | Guru

ciao,
la cosa è strana, da me funziona ti posto la mia pagina:
<asp:GridView ID="GridView1" runat="server" DataSourceID="AccessDataSource1" DataKeyNames="id" AutoGenerateColumns="false" > <Columns> <asp:ButtonField CommandName="Select" Text="Seleziona" /> <asp:BoundField DataField="testo" HeaderText="testo" /> <asp:BoundField DataField="numero" HeaderText="numero" /> </Columns> </asp:GridView> <asp:AccessDataSource ID="AccessDataSource1" runat="server" DataFile="~/App_Data/db1.mdb" SelectCommand="SELECT * FROM [tabprova]"> </asp:AccessDataSource>
e il relativo codice behind:

protected void Page_Load(object sender, EventArgs e) { Page.DataBind(); foreach (GridViewRow row in GridView1.Rows) { row.Cells[1].Text += DateTime.Now; } }
e il risultato è quello atteso, ovvero vedo il valore della cella 1 contenente anche la data...prova a postare (o meglio ancora allegare la tua pagina e vediamo di capire dove sta l'inghippo...
ciao.

Matteo Raumer
[MCAD .net]
http://blogs.dotnethell.it/freeteo

SharKMaN Profilo | Newbie

Te la posto subito

C'è da dire che la GridView viene caricata nel momento in cui l'utente seleziona il cliente da una DropDown... ti ho inviato entrambi i file :)

Grazie della Cortesia...
Se sei di Milano o passi da Milano una birra te la offro volentieri Teo :)

Ciao
Dani
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