Boundfield gridview

lunedì 02 marzo 2009 - 09.55

bolla111 Profilo | Senior Member

ciao
come faccio a rendere visibile o invisibile una colonna di gridview di tipo boudfield da codice?

rossimarko Profilo | Guru

Ciao,

puoi accedere alla colonna con la collection Columns:
grid.Columns[0].Visible = false
-----------------------------------------
Rossi Marco
http://blogs.dotnethell.it/rossimarko

bolla111 Profilo | Senior Member

ah ok...grazie..
però purtropppo non ho risolto il mio problema...
uso questo codice per caricare delle textbox con i dati presenti nel gridview:

Protected Sub Gridview3_RowCommand(ByVal sender As Object, ByVal e As GridViewCommandEventArgs)

If e.CommandName = "Apri" Then

Label3.Text = "MODIFICA"
Panel3.Visible = True

Dim c3 As Control = CType(e.CommandSource, Control)
Dim r3 As GridViewRow = CType(c3.NamingContainer, GridViewRow)
TextBox1.Text = r3.Cells(0).Text
TextBox2.Text = r3.Cells(1).Text
TextBox3.Text = r3.Cells(2).Text
TextBox4.Text = r3.Cells(3).Text
TextBox5.Text = r3.Cells(4).Text
TextBox6.Text = r3.Cells(5).Text
TextBox7.Text = r3.Cells(6).Text
TextBox8.Text = r3.Cells(7).Text
TextBox9.Text = r3.Cells(8).Text
TextBox10.Text = r3.Cells(9).Text
Else
MsgBox("Errore")
End If

End Sub

...però non mi popola le textbox con i valori delle colonne che hanno la proprietà visible impostata a false...e neanche impostando la proprietà visible a true prima del caricamento dati non cambia niente...

rossimarko Profilo | Guru

Se la colonna non viene visualizzata non conterrà nessun valore.

Tu usi delle colonne nascoste per caricare dei dati che non visualizzi in griglia ma che vorresti nelle textbox?

Non puoi rifare una query su database e caricare tutto quello che ti serve per quel record selezionato?
-----------------------------------------
Rossi Marco
http://blogs.dotnethell.it/rossimarko

bolla111 Profilo | Senior Member

infatti ho pensato di farlo...ma per caricare i dati che mi servono devo sempre appoggiarmi alle chiavi del record di cui voglio prendere i dati e riempire le textbox...e sono proprio le colonne che fungono da chiavi ad essere nascoste nel gridview

rossimarko Profilo | Guru

Per le chiavi usa la proprietà DateKeyNames (http://msdn.microsoft.com/it-it/library/system.web.ui.webcontrols.gridview.datakeynames.aspx) che indica le colonne che contengono le chiavi che identificano il record.
In questo modo poi da codice potrai accedere alla collection DataKeys (http://msdn.microsoft.com/it-it/library/system.web.ui.webcontrols.gridview.datakeys.aspx) specificando l'indice di riga
-----------------------------------------
Rossi Marco
http://blogs.dotnethell.it/rossimarko

bolla111 Profilo | Senior Member

più o meno ho capito come funziona....
ma se ho più di un datakeys? come faccio a dirgli quale caricare?

rossimarko Profilo | Guru

Puoi mettere più nomi di colonne separate da virgola nella proprietà datakeynames
-----------------------------------------
Rossi Marco
http://blogs.dotnethell.it/rossimarko

bolla111 Profilo | Senior Member

si...mi sono spiegato male...
quando vado a ricaricare i dati da codice cosa gli do come parametro?
x esempio:
Dim caricavalori As String = ""
caricavalori = "SELECT VALORE1,VALORE2,VALORE3,VALORE4,VALORE5, WHERE VALORE1=@VALORE1 AND VALORE2=@VALORE2"
Dim carica As SqlClient.SqlCommand
carica = New SqlCommand(caricavalori, connn)
carica.Parameters.Add("VALORE1", SqlDbType.NVarChar)
carica.Parameters("VALORE1").Value = ???
carica.Parameters.Add("VALORE2", SqlDbType.NVarChar)
carica.Parameters("VALORE2").Value = ???

rossimarko Profilo | Guru

Usi la collection DataKeys della griglia

Se ad esempio hai impostato DataKeyNames="IDUtente,Cognome"

per accedere ai valori puoi usare:
grid.DataKeys(indiceRiga).Values("IDUtente") grid.DataKeys(indiceRiga).Values("Cognome")
-----------------------------------------
Rossi Marco
http://blogs.dotnethell.it/rossimarko

bolla111 Profilo | Senior Member

il problema che indice riga rimane -1
probabilmente c'è qualcosa di sbagliato nella gestione degli eventi: io utilizzo un rowcommand (perchè le textbox vengono riempite alla pressione dei link presenti in una colonna apposita nel gridview); se modifico questo evento in "onselectedindexchanged" alla pressione del link non viene generato alcun evento...
puoi aiutarmi?

rossimarko Profilo | Guru

Il valore dell'indice di riga da dove lo prendi? Per scatenare onselectedindexchanged devi inserire un pulsante con commandname = "select"
-----------------------------------------
Rossi Marco
http://blogs.dotnethell.it/rossimarko

bolla111 Profilo | Senior Member

Dim index As Integer = GridView.SelectedIndex

rossimarko Profilo | Guru

Il pulsante di selezione è un ButtonField? Hai messo il commandname?

<asp:ButtonField CommandName="Select" Text="Seleziona" />
-----------------------------------------
Rossi Marco
http://blogs.dotnethell.it/rossimarko

bolla111 Profilo | Senior Member

<ItemTemplate>
<asp:LinkButton ID="btn3" runat="server" CommandName="Apri3">Apri</asp:LinkButton>
</itemTemplate>

rossimarko Profilo | Guru

Allora modifica il commandname in Select, altrimenti l'evento selectedindexchanged non viene scatenato

<ItemTemplate>
<asp:LinkButton ID="btn3" runat="server" CommandName="Select">Apri</asp:LinkButton>
</itemTemplate>
-----------------------------------------
Rossi Marco
http://blogs.dotnethell.it/rossimarko

bolla111 Profilo | Senior Member

vale sempre -1....6 sicuro che l'evento onrowcommand vada bene?

rossimarko Profilo | Guru

No non devi usare il rowcommand, ma il selectedindexchanged.

Il commandName="select" scatenal l'evento selectedindexchanged. Il rowcommand è generico per tutti i comandi inseriti all'interno della griglia. Se tu metti invece come commandName="Select" viene gestito anche l'evento SelectedIndexChanged e l'indice dell'elemento selezionato viene correttamente impostato


-----------------------------------------
Rossi Marco
http://blogs.dotnethell.it/rossimarko

bolla111 Profilo | Senior Member

ok...ora sembra tutto apposto...grazie 1000

rossimarko Profilo | Guru

Se sei a posto accetta una rispota così il thread viene chiuso

Grazie
-----------------------------------------
Rossi Marco
http://blogs.dotnethell.it/rossimarko

bolla111 Profilo | Senior Member

si si...certo...
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