+ Rispondi al Thread
Pagina 1 di 3 123 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 30

Discussione: problema con visualizzazione dettagli dei dati prelevati da una gridView

  1. #1
    fafy85 non è in linea Scolaretto
    Post
    74

    problema con visualizzazione dettagli dei dati prelevati da una gridView

    Ciao ragazzi.
    Ho implementanto una pagina con una GridView che al suo avvio preleva alcuni dati (non tutti) da una tabella del mio database in access e li visualizza.
    Per visualizzare il resto dei dati di quella tabella del database, ho implementato un pulsante "Dettagli" su ogni riga della GridView in modo tale che quando l'utente ci clicca sopra, visualizza tutti i dati presenti nel database di quella riga selezionata in delle textBox.

    Il problema è che, per come l'ho fatta io, riesce a visualizzare tutti i dati tranne l'immagine (che ovviamente la faccio visualizzare anzichè in una textBox, in un campo immagine)..qualcuno di voi mi saprebbe aiutare a risolvere questo problema???
    Vi posto il codice della mia gridView:

    codice:
    CODICE DELLA PAGINA.ASPX
    <td colspan="2" >
                            <asp:Label ID="messaggio" runat="server" Font-Italic="True" Font-Bold="True" Text="Numero barche a motore trovate"/><br />
                            <asp:Label ID="TotaleRisultati" runat="server" Font-Size="Smaller" ForeColor="#68a0f9"/><br />
                            <br />
                            <asp:GridView ID="gvBarcheNoleg" runat="server" AutoGenerateColumns="False" CellPadding="4" CellSpacing="1" DataSourceID="BarcheNolegDS" 
                                       Font-Names="Trebuchet MS" Font-Size="Small" ForeColor="#333333" GridLines="None" SelectedIndex="0" Width="599px">
                                <FooterStyle BackColor="#000099" Font-Bold="True" ForeColor="White" />
                                <RowStyle BackColor="#E3EAEB" ForeColor="#000099" />
                                <EditRowStyle BackColor="#7C6F57" />
                                <SelectedRowStyle BackColor="#B1E3EC" Font-Bold="True" ForeColor="#000099" />
                                <PagerStyle BackColor="#B1E3EC" ForeColor="#000099" HorizontalAlign="Center" Font-Bold="True" />
                                <HeaderStyle Font-Bold="True" ForeColor="#000099" />
                                <AlternatingRowStyle BackColor="White" />
                                <Columns>
                                    <asp:CommandField SelectText="Seleziona" ShowSelectButton="True" />
                                    <asp:BoundField DataField="ID" HeaderText="ID" InsertVisible="False" ReadOnly="True" SortExpression="ID" />
                                    <asp:BoundField DataField="Nome" HeaderText="Nome" SortExpression="Nome" />
                                    <asp:BoundField DataField="PrezzoGiorno" HeaderText="Prezzo_Giorno" SortExpression="PrezzoGiorno" />
                                    <asp:BoundField DataField="PrezzoOra" HeaderText="Prezzo_Ora" SortExpression="PrezzoOra" />
                                    <asp:ButtonField ButtonType="Button" Text="Dettagli" CommandName="DettagliBarca"/>
                                </Columns>
                            </asp:GridView>
                            <asp:SqlDataSource ID="BarcheNolegDS" runat="server" ProviderName="System.Data.OleDb" 
                                    SelectCommand='SELECT [ID], [Nome], [PrezzoGiorno], [PrezzoOra] FROM [Noleggio] WHERE Categoria="Barca" '>
                            </asp:SqlDataSource>
                        </td>
    
    CODICE DELLA PAGINA ASPX.VB
    Protected Sub gvBarcheNoleg_RowCommand(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewCommandEventArgs) Handles gvBarcheNoleg.RowCommand
            If e.CommandName = "DettagliBarca" Then
                BarcheTutte.Visible = False
                dettagliBarca.Visible = True
                Dim row As GridViewRow
                row = gvBarcheNoleg.SelectedRow
                Dim sql As String
                sql = "SELECT ID, Nome, Immagine, Descrizione, PrezzoGiorno, PrezzoOra FROM Noleggio WHERE ID =" + row.Cells(1).Text + ";"
                Dim connectionstring = "Provider=Microsoft.Jet.OLEDB.4.0; Ole DB Services=-4; Data Source=" + Server.MapPath("..\db\dbNautica.mdb").ToString
                Dim myconnection As New OleDbConnection(connectionstring)
                Dim mycommand As New OleDbCommand(sql, myconnection)
                myconnection.Open()
                Dim reader As OleDbDataReader
                reader = mycommand.ExecuteReader
                While reader.Read()
                    txtID.Text = reader.Item(0).ToString
                    txtNome.Text = reader.Item(1).ToString
                    Foto.ImageUrl = reader.Item(2).ToString
                    txtDescrizione.Text = reader.Item(3).ToString
                    txtPrezzoGiorno.Text = reader.Item(4).ToString
                    txtPrezzoOra.Text = reader.Item(5).ToString
                End While
                myconnection.Close()
            End If
        End Sub

  2. #2
    L'avatar di SignIn
    SignIn non è in linea Scribacchino
    Luogo
    Milano
    Post
    1,026
    ...l'immagine risiede in un campo blob sul db? Se si allora dai un'occhiata a questa discussione:
    Bind a immagine
    altrimenti dai maggiori dettagli sul path ecc...

  3. #3
    fafy85 non è in linea Scolaretto
    Post
    74
    no, il campo immagine della tabella del mio database l'ho definito come collegamento ipertestuale...non so se può essere giusto..magari devo cambiare tipo e mettere testo oppure oggetto ole??? cosa mi consigliate??

  4. #4
    L'avatar di SignIn
    SignIn non è in linea Scribacchino
    Luogo
    Milano
    Post
    1,026
    Quote Originariamente inviato da fafy85 Visualizza il messaggio
    no, il campo immagine della tabella del mio database l'ho definito come collegamento ipertestuale.
    Ah, collegamento ipertestuale (Access come "db"). Se provi a debuggare ti accorgi che non ti viene restituito il semplice path che hai memorizzato poichè il collegamento ipertestuale (come tipologia di campo) contiene diverse parti separate dal carattere #.
    La sintassi dovrebbe essere tipo:
    DisplayText#Address#
    ad ogni modo ti consiglio (dato che non lavoro con access) di dare uno sguardo alla documentazione per maggiori info.
    Il mio consiglio è di cambiare banalmente il tipo di colonna (testo).
    Ultima modifica di SignIn; 11-03-2009 13:46 

  5. #5
    fafy85 non è in linea Scolaretto
    Post
    74
    quindi mi consigli di cambiare il tipo di campo "immagine" da collegamento ipertestuale a testo????

    E il mio codice cmq sta fatto bene??? o c'è qualcosa che devo cambiare???

    la parte di codice relativa alla lettura di tutti i dati dei campi della tabella del mio database è la seguente:

    codice:
    <asp:PanelID="dettagliBarca"runat="server">
    <br/>
    <table>
    <tr>
    <tdcolspan="2">
    <asp:LabelcssClass="labelTitolo"ID="label11"Text="Dettagli barca a motore selezionata"runat="server"/>
    <br/>
    </td>
    </tr>
    <tr>
    <tdstyle="height: 1%;">
    <asp:LabelID="Label1"runat="server"Text="ID:"Font-Bold="True"/>
    </td>
    <tdstyle="height: 1%">
    <asp:TextBoxCssClass="textBox"ID="txtID"ReadOnly="true"runat="server"/>
    </td>
    </tr>
    <tr>
    <tdstyle="width: 125px"> 
    <asp:LabelID="Label2"runat="server"Text="Nome:"Font-Bold="True"/>
    </td>
    <td>
    <asp:TextBoxcssClass="textBox"ID="txtNome"runat="server"/>
    </td>
    </tr>
    <tr>
    <tdstyle="width: 125px"> 
    <asp:LabelID="Label3"runat="server"Text="Immagine:"Font-Bold="True"/>
    </td>
    <td>
    <asp:ImageID="Foto"runat="server"ToolTip="foto barca"/>
    </td>
    </tr>
    <tr>
    <tdstyle="width: 125px"> 
    <asp:LabelID="Label4"runat="server"Text="Descrizione:"Width="102px"Font-Bold="True"/>
    </td>
    <td>
    <asp:TextBoxCssClass="textBox"ID="txtDescrizione"runat="server"/>
    </td>
    </tr>
    <tr>
    <tdstyle="width: 125px"> 
    <asp:LabelID="Label5"runat="server"Text="Prezzo al Giorno:"Font-Bold="True"Width="113px"/>
    </td>
    <td>
    <asp:TextBoxCssClass="textBox"ID="txtPrezzoGiorno"runat="server"/>
    </td>
    </tr>
    <tr>
    <tdstyle="width: 125px; height: 1%;"> 
    <asp:LabelID="Label6"runat="server"Text="Prezzo ad Ora:"Width="96px"Font-Bold="True"/>
    </td>
    <tdstyle="height: 1%">
    <asp:TextBoxCssClass="textBox"ID="txtPrezzoOra"runat="server"/>
    </td>
    </tr>
    <tr>
    <tdcolspan="2">
    <br/>
    <asp:ButtoncssClass="styleButton"ID="Indietro"Text="Indietro"runat="server"Width="56px"ToolTip="torna all'elenco"/>
    </td>
    </tr>
    </table>
    </asp:Panel>
    

  6. #6
    L'avatar di SignIn
    SignIn non è in linea Scribacchino
    Luogo
    Milano
    Post
    1,026
    Quote Originariamente inviato da fafy85 Visualizza il messaggio
    quindi mi consigli di cambiare il tipo di campo "immagine" da collegamento ipertestuale a testo????
    Si
    Quote Originariamente inviato da fafy85 Visualizza il messaggio
    E il mio codice cmq sta fatto bene??? o c'è qualcosa che devo cambiare???
    Di sicuro funziona. Ma si può notevolmente migliorare. Giusto per indicarti qualcosa:
    1)invece di eseguire la concatenazione di stringa per la costruzione dello statement sql puoi (anzi dovresti) usare gli OledbParameter
    2)Per il dettaglio potresti usare un controllo DetailsView (opzionale).
    3)Potresti avere due AccessDataSource, uno che mostra i dati nel GridView e l'altro che mostra il dettaglio in DetailsView (in questo caso fai quasi tutto
    tramite wizard) (opzionale)
    4)se fai uso dell'oggetto OleDbConnection ti consiglio di utilizzarlo all'interno di un blocco using. Per dettagli consulta msdn:
    Classe OleDbConnection (System.Data.OleDb)
    (non fai uso neanche di un blocco try catch)
    5)dato che fai uso dei css puoi inserire anche le informazioni riguardanti le celle della tabella contenuta nel panel dettagliBarca (opzionale)
    Ultima modifica di SignIn; 11-03-2009 17:35 

  7. #7
    fafy85 non è in linea Scolaretto
    Post
    74
    Ok..ti ringrazio moltissimo dei consigli e cercherò di seguirli, anche se non sono espertissima a mettere mani nel codice asp.net però ci proverò.

    In ogni caso, se non ho capito male, il problema che non visualizzava l'immagine era perchè il campo immagine del database era collegamento ipertestuale che restituiva una stringa strana.
    Per non avere questo errore, basta solo che cambio da collegamento ipertestuale a testo e così facendo mi dovrebbe visualizzare l'immagine giusto????

    Cmq ci provo e magari ti faccio sapere se me la visualizza o meno.
    Di nuovo grazie mille per il suggerimento e l'aiuto

  8. #8
    fafy85 non è in linea Scolaretto
    Post
    74
    Eccomi qui purtroppo a riscrivere
    Ho cambiato il tipo di campo alla tabella del mio database e ho messo memo perchè se mettevo testo, mi diceva che non potevo inserire il percorso del file perchè troppo lungo.
    Solo che quando vado a testare l'applicazione, l'immagine non viene lo stesso visualizzata..come mai?????
    Cosa altro potrebbe essere???

  9. #9
    L'avatar di SignIn
    SignIn non è in linea Scribacchino
    Luogo
    Milano
    Post
    1,026
    Un esempio di path che hai sul db?

  10. #10
    fafy85 non è in linea Scolaretto
    Post
    74
    per esempio nel database ho inserito questa path:

    "C:\Documents and Settings\FRANCESCA PEDACI\Desktop\PROGETTO NUOVA NAUTICA\foto imbarcazioni\barche\barca1"

+ Rispondi al Thread
Pagina 1 di 3 123 ultimoultimo

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi