Databind

giovedì 25 settembre 2008 - 18.44

overdotato Profilo | Newbie

Salve, ho un problemuccio...

Creando una connessione a un db, e successivamente inserendo una tabella di questo in un datarow, vorrei che una gridview fosse bindata a questa fonte:

avevo provato:

'creo una connessione sql e... Dim dbConn As New SqlConnection(stringaconnessione) '...la apro dbConn.Open() 'richiamo la funzione della classe connessione per ottenere un row sul quale operare Dim dbRow As DataRow = creazione.crea(dbConn, nometabella, stringaquery) 'chiudo la connessione dbConn.Close() gridview1.databind()

ma la griglia non appare nella finestra (resta vuota perciò non viene mostrata, bindando la griglia all'oggetto preimpostato SqlDataSource,
funziona perfettamente)

rossimarko Profilo | Guru

Ciao,

nel codice che hai postato manca la riga in cui imposti il datasource della tua griglia:

gridview1.datasource = [tabella] gridview1.databind()

La tua funzione dovrebbe ritornarti la datatable contenente la riga così puoi impostarla direttamente come datasource della griglia
-----------------------------------------
Rossi Marco
http://blogs.dotnethell.it/rossimarko

overdotato Profilo | Newbie

quindi come datasource dovrei mettere il nme della tabella?

VB.net:

gridview1.dataource(nometabella)
gridview1.databind()

?

Però calcola che la mia funzione restituisce un datarow...la datatable è all'interno della funzione e non è visibile all'esterno...
Non esiste un metodo per risalire ad una tale ripartendo dalla datarow per esempio?

rossimarko Profilo | Guru

>Però calcola che la mia funzione restituisce un datarow...la
>datatable è all'interno della funzione e non è visibile all'esterno...
>Non esiste un metodo per risalire ad una tale ripartendo dalla
>datarow per esempio?


Si certo, la tua datarow ha una proprietà Table: http://msdn.microsoft.com/en-us/library/system.data.datarow.table.aspx
-----------------------------------------
Rossi Marco
http://blogs.dotnethell.it/rossimarko

overdotato Profilo | Newbie

Ok bene funziona ma, non ha gli effetti desiderati purtroppo

In pratica dialogando con uan funzione " Protected Sub grid_RowDataBound(ByVal sender As Object, ByVal e As GridViewRowEventArgs)"

ad ogni indice della tabella viene assegnata un immagine da un db.
mettendo questo codice e volendo visionare tutti i file:

stringaurl = String.Format("img.ashx?ID={0}", e.Row.RowIndex)

Li visiona correttamente, ma perche sono tutti e in ordine

ma appena voglio selezionare con una query immagini sfalsate, per esempio 6 tra 10 in ordine sfalsato, i dati come nome , tipo immagine vengono pescati correttamente, ma mi vengono mostrate solo le prima sei immagini (in ordine dall'elenco originale)

ho provato perciò

stringaurl = String.Format("img.ashx?ID={0}", e.Row("FileID"))

dove FileID rappresenta il nome del campo contenente l'ID dell'immagine (cosi me la dovrebbe trovare), ma ottengo errore sotto e.Row("FileID"), dicendo che la classe gridview non puo essere indicizzata perchè non possiede una proprietà di default...come faccio?

rossimarko Profilo | Guru

All'interno dell'evento rowdatabound per prelevare un dato dalla base dati devi accedere prima all'oggetto DataItem associato alla riga del gridview. Nel caso in cui la sorgente dati sia una DataTable allora il codice per prelevare il valore è il seguente:

If e.Row.RowType = DataControlRowType.DataRow Then 'Riferimento alla sorgente dati della riga Dim drv As DataRowView = DirectCast(e.Row.DataItem, DataRowView) 'Valore della colonna codice Dim str As String = drv("Codice").ToString() End If
-----------------------------------------
Rossi Marco
http://blogs.dotnethell.it/rossimarko

overdotato Profilo | Newbie

Funziona alla grande
Grazie mille
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-2023
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5