webForumDet fria alternativet

Fråga: Hyperlink i datagrid

.NETur .NET

23 svar · 760 visningar · startad av gunnargren · sida 2 av 2

Frågan, av gunnargren

Hej! Har en datagrid där jag vill skapa en knapp och när man klickar på den ska ett pdf dokument komma fram. Hade tänkt spara pdf filen i en mapp och spara sökvägen i databasen. Direkta sökvägen är C:\\Inetpub\\wwwroot\\Test\\pdf\\festprogram.pdf och den fungerar om jag testar den i en browser. Så här ser koden ut <asp:Hyperlinkcolumn target="blank" dataNavigateUrlfield="urTDS" datatextfield

Läs frågan i sin helhet →
Medlem sedan jan. 20022 440 inlägg
#21

Om du vill kan du eposta sidan.aspx och sidan.aspx.vb till mig så kan jag kommentera vad du gjort fel och hur du ska åtgärda det.

Medlem sedan apr. 200625 inlägg
#22

Skickade filerna till din hotmail adress. Tack för att du tar dig tid att hjälpa mig...

Medlem sedan apr. 200625 inlägg
#23

Tar upp min gammla tråd här. Har det inte fått att fungera än, börjar tor att det kan vara hur jag har sparat det i databasen som kan vara fel, har bara lagt in sökvägen direkt i databasen. Men jag visar koden får jag se om någon kan hjälpa mig.

Först aspx sidan:

asp:datagrid id="DataGrid1" runat="server" OnPageIndexChanged="DataGrid1_PageIndexChanged" OnItemCreated="Datagrid1_ItemCreated"
<Columns>
<asp:BoundColumn Visible="False" DataField="urID"></asp:BoundColumn>
       <asp:TemplateColumn HeaderText=" Artikelnr. ">
	<ItemStyle Width="100px" CssClass="mellanrubrik"></ItemStyle>
	     <ItemTemplate><div class="mellanrubrik" align="left">
	     <%#Container.DataItem ("urArtikel")%></div>
	</ItemTemplate>
        </asp:TemplateColumn>
        <asp:TemplateColumn HeaderText=" Kulörbeskrivning ">
	<ItemStyle Width="100px" CssClass="mellanrubrik"></ItemStyle>
	<ItemTemplate><div class="mellanrubrik" align="left">
	      <%#Container.DataItem ("urBeskrivning")%></div>
	</ItemTemplate>
         </asp:TemplateColumn>
         <asp:TemplateColumn>
	     <ItemTemplate>
	     <asp:LinkButton ID="pdfLink" runat="server" 
		CommandArgument='<%#Databinder.Eval   (Container.DataItem, "urID")%>'
		CommandName="HelpDisplay" Text='<%#Databinder.Eval (Container.DataItem, "urTDS")%>'>
		</asp:LinkButton>
		</ItemTemplate>
	</asp:TemplateColumn>		
</Columns>
</asp:datagrid>

och så aspx.vb sidan

Imports System.Data
Imports System.Data.OleDb
Imports System.IO
Public Class urval
    Inherits System.Web.UI.Page

    Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        If Not Page.IsPostBack Then
            Dim urval As jonas.myUrvalCls = New jonas.myUrvalCls
            Dim ds As DataSet = New DataSet
            Try
                ds = urval.GetEntrys()
                urval = Nothing
                DataGrid1.DataSource = ds.Tables(0).DefaultView
                DataGrid1.DataBind()

            Catch ex As Exception
                Throw (ex)
            End Try
        End If
    End Sub

    Protected Sub DataGrid1_PageIndexChanged(ByVal obj As Object, ByVal e As DataGridPageChangedEventArgs)
        'OnPageIndexChanged = "DataGrid1_PageIndexChanged"
        DataGrid1.CurrentPageIndex = e.NewPageIndex
        DataGrid1.DataBind()

        Dim page As New jonas.myForumCls
        Dim ds1 As DataSet = page.GetEntrys
        DataGrid1.DataSource = ds1
        DataGrid1.DataMember = ""
        DataGrid1.DataBind()

    End Sub

    Protected Sub Datagrid1_ItemCreated(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DataGridItemEventArgs)
        Dim itemType As ListItemType = e.Item.ItemType
        If itemType = ListItemType.Pager Then
            Dim pager As TableCell = CType(e.Item.Controls(0), TableCell)
            Dim i As Integer
            For i = 0 To pager.Controls.Count Step +2
                Try
                    Dim myLabel As Label = CType(pager.Controls(i), Label)
                    myLabel.Text = "Sida " + myLabel.Text
                    myLabel.CssClass = "aktuellsida"
                Catch
                    Dim myLinkButton As LinkButton = CType(pager.Controls(i), LinkButton)
                    myLinkButton.Text = "[ " + myLinkButton.Text + " ]"
                    myLinkButton.CssClass = "sidlankar"
                End Try
            Next
        End If
    End Sub

    Public Sub HelpDisplay(ByVal sender As Object, ByVal e As CommandEventArgs)
        Dim myDir As String = Server.MapPath("~/Autofox/pdf/")
        Dim oFileStream As FileStream
        Dim lFileSize As Long, lStartpos = 0
        Dim myFile As String = e.CommandArgument

        ' Read the file
        Try
            oFileStream = New FileStream(myDir & myFile, FileMode.Open)
        Catch ex As FileNotFoundException
            HttpContext.Current.Response.Clear()
            Response.Write(myDir)
            'CreateMessageAlert(Me, "Could not find the specific file.", "key1")
            HttpContext.Current.Response.End()
            Return
        Catch Ex As Exception
            HttpContext.Current.Response.Clear()
            Response.Write(myDir)
            ' CreateMessageAlert(Me, "An error occured: " & Ex.Message, "key1")
            HttpContext.Current.Response.End()
            Return
        End Try

        ' Get the size of the file
        lFileSize = oFileStream.Length

        Dim bBuffer(CInt(lFileSize)) As Byte
        oFileStream.Read(bBuffer, 0, CType(lFileSize, Integer))
        oFileStream.Close()

        ' Attach The stream to the browser.
        With HttpContext.Current
            .Response.ClearContent()
            .Response.ContentType = "application/pdf"
            .Response.AddHeader("content-disposition", "attachment; filename=" & myFile & "")
            .Response.BinaryWrite(bBuffer)
            .Response.End()

        End With

    End Sub
End Class

Blir mycket kod, men bättre för mycket än för lite. Sist så har vi databasen:

urID | urArtikel | urBeskrivning | urTDS | urMSDS | urProdukter | urArbets
1 S401 svart c:\inetpub\wwwroot\autofox\Information.pdf

Det är alltså dom fyra sista som ska innehålla länkar till pdf filerna. Men tänkte börja med att få till en till att börja med. Nu när jag klickar så händer det ingenting. Får inget felmeddelande men inget händer.

Tack på förhand /Jonas

Medlem sedan apr. 200625 inlägg
#24

Någon som en idé varför det inte fungerar?

138 ms totalt · 3 externa anrop · v20260731065814-full.8a4e7caf
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
135 ms — hämta tråd, inlägg och bilagor (db)