2012-11-13 58 views
0

大家好,我有vb代码下面,我打电话时,有人点击链接。呼叫功能<a>标签

Private Sub DownloadFile(ByVal fname As String, ByVal forcedownload As Boolean) 
    Dim flpth As String 
    Dim fnm As String 
    Dim ext As String 
    Dim tp As String 

    flpth = System.IO.Path.GetFullPath(Server.MapPath(fname)) 
    fnm = System.IO.Path.GetFileName(flpth) 
    ext = System.IO.Path.GetExtension(fnm) 
    tp = "" 

    If Not IsDBNull(ext) Then 
     ext = LCase(ext) 
    End If 

    Select Case ext 
     Case ".doc", ".rtf" 
      tp = "application/msword" 
     Case ".pdf" 
      tp = "application/pdf" 
     Case ".zip" 
      tp = "application/zip" 
    End Select 

    If (forcedownload) Then 
     Response.Clear() 
     Response.ClearContent() 
     Response.ClearHeaders() 
     Response.ContentType = tp 
     Response.AppendHeader("Content-Disposition", "attachment; filename=" + fnm + ext) 
     Response.TransmitFile(flpth) 
     Response.Flush() 
     Response.End() 
    End If 

End Sub 

我打算在下面的代码中调用上面的代码,但它不工作。请任何身体帮助。

<a id="Click" runat="server" href="#" onclick="DownloadFile('files/Notes.doc',True)">Click here</a> 

回答

2

正确的方法是通过拖动来添加一个link button拖放到页面上,然后去这个按钮的属性,并添加的OnClick methodo,这也是创建代码一种自动功能背后,你在哪里运行DownloadFile

1

1)尝试使用LinkButton

2)你不能传回参数,你必须在服务器上获取数据。

+0

太好了。谢谢 – kami

0

如果使用锚标记作为服务器控件,您将需要设置onServerClick事件。您可以将自定义标签添加到您的锚点以便使用。

<a id="hypDownload" href="javascript:void(0);" runat="server" onserverclick="DownloadFile()" filename="files/Notes.doc" forcedownload="true"></a> 

Private Sub hypDownload_ServerClick(sender As Object, e As EventArgs) Handles hypDownload.ServerClick 
    Dim filename As String = hypDownload.Attributes("filename") 'Also: CType(sender, HtmlAnchor).Attributes("filename") 
    Dim forcedownload As Boolean = hypDownload.Attributes("forcedownload").ToString().ToLower() = "true" 
    DownloadFile(filename, forcedownload) 
End Sub 
+0

感谢您的帮助 – kami

0

将此javascript放在ASPX页面上。

<script type="text/javascript"> 
    function DownloadFile() {  
     document.getElementById(<%= DownloadFile.ClientID%>).click(); 
    }  
</script> 

地方有隐藏切勿将按钮的显示样式设置为隐藏的的JavaScript将无法找到网页上的按钮显示样式div标签中的按钮。

<div style="display= hidden;"> 
    <asp:button id="DownloadFile" runat="server" />  
</div> 

然后,如下图所示设置你<a>标签:

<a href="javascript:DownloadFile();">link text</a> 

然后用你的子程序作为ASP Click事件:按钮

说了这么多,在asp:LinkBut​​ton的选项会导致代码少得多。