Aprire un file pdf con un hyperlink da una gridviews

mercoledì 04 agosto 2010 - 11.42
Tag Elenco Tags  C#  |  .NET 2.0  |  Visual Studio 2008  |  SQL Server 2008

luba Profilo | Newbie

ciao a tutti
sono un nuovo utente.

Sto creando una piccola applicazione per gestire degli ordini.

Ho creato una gridviews ed ho aggiunto un campo hyperlinkfield cercando di settare i parametri in modo che mi si colleghi al file pdf relativo all'ordine.
Ma purtroppo non ho trovato una soluzione.

Il file viene inserito tramite un file Upload in una cartella.
E il path del file lo salvo in banca dati SQL.

Qualcuno mi può aiutare
Grazie

alx_81 Profilo | Guru

>ciao a tutti
>sono un nuovo utente.
ciao e benvenuto su dotnethell.it

>Ho creato una gridviews ed ho aggiunto un campo hyperlinkfield
>cercando di settare i parametri in modo che mi si colleghi al
>file pdf relativo all'ordine.
cosa vuoi scrivere nell'hyperlink? Il link diretto al pdf oppure ad una pagina che poi apre il pdf?

>Grazie
di nulla!

--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi

luba Profilo | Newbie

Ciao Alx_81,
grazie per il benvenuto...

Beh per me va bene il link diretto. Ma visto che sono nuovo dell'ambiente mi faccio volentieri consigliare la soluzione migliore... ;-)
Ti ringrazio

Buona giornata

alx_81 Profilo | Guru

>Beh per me va bene il link diretto. Ma visto che sono nuovo dell'ambiente
>mi faccio volentieri consigliare la soluzione migliore... ;-)
questo me lo devi dire tu. I parametri che passi nel link a cosa serviranno?
--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi

luba Profilo | Newbie

Ok,
i parametri che passerò nel link mi servono solo per aprire il file associato in inserimento all'ordine creato.
Credo che il link diretto sia la soluzione migliore per il tipo di utenza per cui devo sviluppare.

Grazie ancora

mrub Profilo | Junior Member

Allora ... per pensare ad una soluzione occore sapere

- come vengono denominati i file pdf (es. IDordine.pdf)
- oppure, quali sono i campi che determionano il nome del file
- Hai inserito nel datasource tali campi?

saputo questo puoi utilizzare
- se il nome del file dipende da un solo campo (ad es. il file si chiama ordine_campo.pdf)
- l'yperlinkfield settando opportunamnte il formatstringurl
- utiizzare un templateField (trasformi la colonna in template) con <asp:hyperlink ... navigateurl='<% Eval("campo","ordina_{0}.pdf") %>

- se il nome dipende da più campi
- utiizzare un templateField con <asp:hyperlink ... navigateurl='<% scriviurl(Eval("campo1"),Eval("campo2"),Eval("campo3")) %>

e nel codice ... function scriviurl(a_campo1,a_campo2,a_campo3)

Spero di esserti stato utile ... facci sapere
Ciao, mirko.

luba Profilo | Newbie

Ciao,
ecco che rispondo.

Per la denominazione dei file non mi sono posto il problema sinceramente. Devo vincolare il nome dei file pdf per esempio all' ID dell'ordine???
Per quanto riguarda il datasource uso il campo allegatoOrdine che arriva dal datasource e determina il nome del file. Nella mia testa l'idea era di prendere il nome del file e inserirlo con il path nel database e poi rappresentarlo in una gridviews per visualizzarlo.

mi puoi per favore spiegare meglio queste 2 soluzioni... non ho capito bene il meccanismo...

- l'yperlinkfield settando opportunamnte il formatstringurl --> ho provato ma non riesco a far niente...
- utiizzare un templateField (trasformi la colonna in template) con <asp:hyperlink ... navigateurl='<% Eval("campo","ordina_{0}.pdf") %>

Ti ringrazio molto
Ciao

mrub Profilo | Junior Member

Allora ... posto che il nome del file sia ordine_IDordine (es. ordine_1)

Dall'editor visuale delle colonne del gridview puoi:

Selezionare la colonna del gridview corrispondente all'hyperlink e

settare fra le sue proprietà
DataTextField: IDordine
DatanavigateUrlFormatString: IDordine_{0}.pdf

oppure "converti il campo in un template Field"
poi
o
pulsante dex sul gridview->modifica colonne->selezioni la colonna generata, inserisci un hyperlink
e setti la proprieta navigateurl=<% Eval("IDordine","ordine_{0}.pdf") %>
o
in visualizzazione Origine inserisci:
<asp:TemplateField InsertVisible="False">
<ItemTemplate>
<asp:HyperLink ID="VediStampaHyperLink" target="_blank" runat="server" cssclass="linkstampa" NavigateUrl='<% Eval("IDordine","ordine_{0}.pdf") %>' ToolTip="Vedi il file di stampa" />
</ItemTemplate>
</asp:TemplateField>

Buon lavoro, mirko.

luba Profilo | Newbie

Ciao Mirko,
grazie mille per la risposta.

ho corretto la mia soluzione. Semplicemente non settavo correttamente i datatextfield e datatextfieldformat...

Ora voglio chiedere ancora una cosa. I miei file al momento sono in una cartella all'interno della cartella del progetto.
1. Posso lasciarli li?
2. Mi manca ancora la sintassi giusta per arrivare alla cartella del file.
Impostando in questo modo il NavigateUrl <% Eval("IdOrdine","ordine_{0}.pdf") %> non mi trova il file. La cartella si chiama file, e li ci sono tutti i pdf.
Come posso inserire il path corretto.

Ti ringrazio

mrub Profilo | Junior Member

<% Eval("IdOrdine","~/file/ordine_{0}.pdf") %>
:)

luba Profilo | Newbie

Ciao,
ringrazio per i consigli!Sono stati molto utili.

La mia prima esperienza con .net si sta rilevando più dura del previsto, perciò devo ancora chiedere aiuto ;-)

Da una detailview, che uso per l'inserimento dei dati, vorrei selezionare il nome dell'allegato (che arriva dalla lettura della cartella) tramite una dropdownlist o simili.
C'è un modo simile per farlo e per farsi che il path dove si trovano i file venga inserito automaticamente?

al momento non riesco ancora a visualizzare i file pdf correttamente nella mia gridview, poiché mi sono accorto, che non inserisco il path giusto nel database e quindi mi ritorna una Bad Request, quando cerco di visualizzare il file, per questo vorrei inserirlo in automatico...

spero abbiate capito il problema

vi ringrazio molto.

luba Profilo | Newbie

Ciao,
quello che ho scritto prima vi prego di cancellarlo.

Non sono ancora riuscito però a risolvere il problema seguente.
Impostando nel navigateUrl del mio Hyperlink filed il seguente codice
<% Eval("idOrdine","~/file/ordine{0}.pdf")%> (che dovrebbe andare a prendere il file tipo ordine9.pdf, nella cartella file inserita nella cartella del sito)
e impostando anche il DataTextFormatString a idOrdine{0}.pdf non sono ancora riuscito a far visualizzare il file.

l'errore che mi ritorna il server quando schiaccio sul link è
Errore server nell'applicazione '/gestione'
Errore HTTP 400 - Bad Request.

Sapete dirmi qualcosa? Ho sbagliato qualche sintassi...non riesco proprio a sbrogliare la matassa;-)

mrub Profilo | Junior Member

:) ho scritto il codice di esmpio al volo e ho omesso il #

la sintassi corretta è '<%# Eval(....'

luba Profilo | Newbie

Grazie mrub,
dopo che ho scritto ho fatto delle ricerche e ho trovato l'errore.
Ho risolto il problema e la mia applicazione funziona. Ora devo solo riordinare i dettagli..
bello asp.. ;-)

Vi ringrazio per l'aiuto.

Ciao
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