1. 程式人生 > >GridVIew中下載文件的方法探討,方法(7)最佳。

GridVIew中下載文件的方法探討,方法(7)最佳。

out 字段 alert button nload 用戶 分離 lan man

(1)使用Button下載

在GridView屬性中添加:

OnRowCommand="GridView1_RowCommand"

在GridView的<Column>中添加:

<asp:ButtonField runat="server" Text="下載" HeaderText="下載" ButtonType="Button" CommandName="DownLoad_Click"
HeaderStyle-HorizontalAlign="Center" ItemStyle-HorizontalAlign="Center"/>

在aspx.cs中添加:

protected void GridView1_RowCommand(Object sender, GridViewCommandEventArgs e)
{
if (e.CommandName == "DownLoad_Click")//
{

//下載文件代碼,可參見上一篇博客文章。

}

}

註:該方法能夠實現下載功能,但用戶體驗一般。另外,如果在下載代碼的同時,將下載記錄保存到數據庫中的話,會插入兩條相同的記錄,為避免該問題,可以使用if判斷,只進行一次數據庫操作。

(2)使用Link下載

在GridView的<Column>中添加:

<asp:ButtonField ButtonType="Link" CommandName="DownLoad" DataTextField="文件名" HeaderText="文件名" "/>

另外需類同方法(1),添加OnRowCommand事件。

註:執行錯誤。通過string fnametype = Server.HtmlDecode(row.Cells[3].Text.ToString());獲得的文件名為空。

(3)使用HyperLink下載

在GridView的<Column>中添加:

<asp:HyperLinkField DataNavigateUrlFields="文件名" Target="_blank" HeaderText="文件" Text="下載" />

註:因為DataNavigateUrlFields綁定的是字段,不是文件目錄,所以文件需要放在同代碼一致的目錄下,否則找不到文件。在文件與代碼混放的前提下,對於.jpg,.txt等類型的文件,點擊後,會打開一個新的頁面,然後顯示文件內容,如圖片或文本,而不是瀏覽器下載提示,但可以右鍵保存;對於.zip,.doc等類型文件,可以實現在新頁面的下載功能。

(4)使用a標簽的href下載之一

在GridView的<Column>中添加:

<asp:TemplateField HeaderText="文件名">
<ItemTemplate>
<a href=‘javascript:void(0)‘ onclick="Hc();return false;"
onmouseover="JavaScript:this.style.color=‘#FF0000‘" onmouseout="JavaScript:this.style.color=‘#000000‘"><%#Eval("文件名")%></a>
</ItemTemplate>

</asp:TemplateField>

在<head>中添加:

<script type="text/javascript">
function Hc() {
alert("000");

//下載代碼,【尚未實現從GridView中取文件名和文件ID等信息】
}
</script>

註:此功能不知如何實現。因為我不知道如何實現取文件名,所以咱不能實現下載。

(5)使用a標簽的href下載之二

在GridView的<Column>中添加:

<ItemTemplate>
<a href=‘Resource\‘+‘<%#DataBinder.Eval(Container.DataItem,"文件名") %>‘ target="_blank"><%#Eval("文件名")%></a>
</ItemTemplate>

註:所有文件都是放在Resource文件夾下,點擊後,會出現新頁面顯示“目錄清單”,點擊相應的文件後,對不同類型的文件,效果不一樣,類同方法(3),也可以右鍵“目標另存為”。這種方法基本可以否定,安全性為0,不該顯示文件的也顯示了,用戶操作十分不便。

(6)使用a標簽的href下載之三

在GridView的<Column>中添加:

<ItemTemplate>
<a href=‘Resource\<%#DataBinder.Eval(Container.DataItem,"文件名") %>‘ target="_blank"><%#Eval("文件名")%></a>
</ItemTemplate>

註:與方法(5)的區別是,刪除了Resource\後面的 ‘+‘ 三個字符。點擊後,會出現新頁面,對不同類型文件的執行效果不同,類同方法(3)。與方法(3)的區別是,方法(3)的文件與代碼混放,而方法(6)文件與代碼是分離的。

(7)使用a標簽的href下載之四

在GridView的<Column>中添加:

<ItemTemplate>
<a href=‘Downloading.aspx?fid=<%#DataBinder.Eval(Container.DataItem,"文件ID")%>&fname=<%#DataBinder.Eval(Container.DataItem,"文件名")%>‘
target="_blank"><%#Eval("文件名") %></a>
</ItemTemplate>

在Downloading.aspx文件中添加:

protected void Page_Load(object sender, EventArgs e)
{
string strfid = Request.QueryString[0].ToString();
string strfname = Request.QueryString[1].ToString();

//下載文件代碼

//保存下載信息到數據庫的SQL代碼

}

註:需要添加新的頁面文件Downloading.aspx。href將對應的、下載必要的、SQL操作必要的信息傳遞到Downloading.aspx頁面。點擊後,出現Downloading.aspx,並彈出瀏覽器下載提示對話框,可以正常下載,也可關閉,關閉後,Downloading.aspx自動關閉。下載方式符合B/S習慣,與請用的網站下載方式一致。

總之,如果在GridView中下載文件的話,采用方法(7)就對了。

GridVIew中下載文件的方法探討,方法(7)最佳。