点击按钮没有反应,帮我看看是哪里错了!webform2.aspx<%@ Page language="c#" Codebehind="WebForm2.aspx.cs" AutoEventWireup="false" Inherits="schoolmanager.WebForm2" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
<HEAD>
<title>WebForm2</title>
<meta content="Microsoft Visual Studio .NET 7.1" name="GENERATOR">
<meta content="C#" name="CODE_LANGUAGE">
<meta content="JavaScript" name="vs_defaultClientScript">
<meta content="http://schemas.microsoft.com/intellisense/ie5" name="vs_targetSchema">
</HEAD>
<body MS_POSITIONING="GridLayout">
<form id="Form1" method="post" runat="server">
<asp:datagrid id="DataGrid1" runat="server" AllowPaging="True" Width="320px" AutoGenerateColumns="False"
CellPadding="4" BackColor="White" BorderWidth="1px" BorderStyle="None" BorderColor="#CC9966"
ShowHeader="False">
<SelectedItemStyle Font-Bold="True" ForeColor="#663399" BackColor="#FFCC66"></SelectedItemStyle>
<ItemStyle ForeColor="#330099" BackColor="White"></ItemStyle>
<HeaderStyle Font-Bold="True" ForeColor="#FFFFCC" BackColor="#990000"></HeaderStyle>
<FooterStyle ForeColor="#330099" BackColor="#FFFFCC"></FooterStyle>
<Columns>
<asp:BoundColumn DataField="booksname">
<HeaderStyle Width="100px"></HeaderStyle>
</asp:BoundColumn>
<asp:TemplateColumn HeaderText="下载">
<HeaderStyle Width="50px"></HeaderStyle>
<ItemTemplate>
<asp:Button id="down_Click" runat="server" Text="下载" CommandName="Download"></asp:Button>
</ItemTemplate>
</asp:TemplateColumn>
</Columns>
<PagerStyle HorizontalAlign="Center" ForeColor="#330099" BackColor="#FFFFCC"></PagerStyle>
</asp:datagrid></form>
</body>
</HTML>
webform2.aspxusing System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.IO;namespace schoolmanager
{
/// <summary>
/// WebForm2 的摘要说明。
/// </summary>
public class WebForm2 : System.Web.UI.Page
{
protected System.Web.UI.WebControls.DataGrid DataGrid1;

private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
schoolmanager.publicclass.DataBound db=new schoolmanager.publicclass.DataBound();//自己写的数据绑定类
DataGrid1.DataSource=db.BoundData("select * from BooksInf","BooksInf");
DataGrid1.DataBind();
} #region Web 窗体设计器生成的代码
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}

/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{    
this.DataGrid1.ItemCommand += new System.Web.UI.WebControls.DataGridCommandEventHandler(this.DataGrid1_ItemCommand);
this.Load += new System.EventHandler(this.Page_Load); }
#endregion private void DataGrid1_ItemCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
if(e.CommandName == "Download")
{
//文件名
string fileExcel = e.Item.Cells[0].Text;
      
//取得的文件存储路径
string filePath = Server.MapPath("\\schoolmanager\booksrar");
string fileName = filePath + "\\" + fileExcel;
//以字符流的形式下载文件
FileStream fs = new FileStream(fileName, FileMode.Open);
byte[] bytes = new byte[(int)fs.Length];
fs.Read(bytes, 0, bytes.Length);
fs.Close();
Response.ContentType = "application/octet-stream";
//通知浏览器下载文件而不是打开
Response.AddHeader("Content-Disposition",  "attachment;  filename="  +  HttpUtility.UrlEncode(fileExcel,System.Text.Encoding.UTF8)) ;
Response.BinaryWrite(bytes);
Response.End();
} }
}
}

解决方案 »

  1.   

    这样改一下试试!前台
    <asp:Button id="down_Click" runat="server" Text="下载" CommandName="Download" OnClick=Button1_Click></asp:Button>后台:
    public void Button1_Click(object sender, System.EventArgs e)
    {
    string fileExcel = e.Item.Cells[0].Text;
          
    //取得的文件存储路径
    string filePath = Server.MapPath("\\schoolmanager\booksrar");
    string fileName = filePath + "\\" + fileExcel;
    //以字符流的形式下载文件
    FileStream fs = new FileStream(fileName, FileMode.Open);
    byte[] bytes = new byte[(int)fs.Length];
    fs.Read(bytes, 0, bytes.Length);
    fs.Close();
    Response.ContentType = "application/octet-stream";
    //通知浏览器下载文件而不是打开
    Response.AddHeader("Content-Disposition",  "attachment;  filename="  +  HttpUtility.UrlEncode(fileExcel,System.Text.Encoding.UTF8)) ;
    Response.BinaryWrite(bytes);
    Response.End();}
      

  2.   

    我又用了另一个控件来做(DataList),运行时找不到路径
    未能找到文件“D:\毕业设计\schoolmanager\booksrar\aaa.rar”。 
    说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.IO.FileNotFoundException: 未能找到文件“D:\毕业设计\schoolmanager\booksrar\aaa.rar”。源错误: 
    行 20:  {
    行 21:  string path=Server.MapPath(Request.Params["fileurl"].ToString());
    行 22:  System.IO.FileStream fs = System.IO.File.OpenRead(path);
    行 23:  byte[] FileData = new byte[fs.Length];
    行 24:  fs.Read(FileData,0,(int)fs.Length);
     源文件: d:\毕业设计\schoolmanager\download.aspx.cs    行: 22 
      

  3.   

    先说一下,我的aaa.rar文件路径放在D:\毕业设计\schoolmanager\booksrar\aaa.rar下面,
    aaa.rar是文件。代码:
    libary.aspx.cs
    private void dgbook_ItemCommand(object source, System.Web.UI.WebControls.DataListCommandEventArgs e)
    {
    if(((LinkButton)e.CommandSource).CommandName=="bookname")
    {
    string fileurl = ((HtmlInputHidden)e.Item.FindControl("hdd")).Value;
    Response.Redirect("download.aspx?fileurl="+fileurl);
    }
    }download.aspx.csprivate void Page_Load(object sender, System.EventArgs e)
    {
    string path=Server.MapPath(Request.Params["fileurl"].ToString());
    System.IO.FileStream fs = System.IO.File.OpenRead(path);
    byte[] FileData = new byte[fs.Length];
    fs.Read(FileData,0,(int)fs.Length);
    Response.Clear();
    Response.AddHeader("Content-Type", "application/zip");
    string FileName = System.Web.HttpUtility.UrlEncode (System.Text.Encoding.UTF8.GetBytes(path));
    Response.AddHeader("Content-Disposition","inline;filename="+ System.Convert.ToChar(34) + FileName + System.Convert.ToChar(34));
    Response.AddHeader("Content-Length", fs.Length.ToString());
    Response.BinaryWrite(FileData);
    fs.Close();
    System.IO.File.Delete(path);
    Response.End();
    }
      

  4.   

    library.aspx<asp:datalist id="dgbook" runat="server">
    <ItemTemplate>
    <TABLE style="WIDTH: 359px; HEIGHT: 18px">
    <TR>
    <TD>○</TD>
    <TD>
    <asp:LinkButton id=bookname runat="server" Text='<%# DataBinder.Eval(Container.DataItem,"booksname") %>' CommandName="bookname">
    </asp:LinkButton></TD>
    <TD><INPUT id=hdd type=hidden value='<%# DataBinder.Eval(Container.DataItem,"bookurl")%>' name=hdd runat="server">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
    <TD>作者:</TD>
    <TD><%# DataBinder.Eval(Container.DataItem,"bookauther")%></TD>
    </TR>
    </TABLE>
    </ItemTemplate>
    </asp:datalist>
      

  5.   

    文件没找到换英文路径试下;
    又D:\毕业设计\schoolmanager\booksrar\aaa.rar是你的虚拟目录吗?
      

  6.   

    /// <summary>
    /// 文件下载
    /// </summary>
    /// <param name="FullFileName"></param>
    private void FileDownload(string FullFileName)
    {
    FileInfo DownloadFile = new FileInfo(FullFileName); 
    Response.Clear();
    Response.ClearHeaders();
    Response.Buffer=false;
    Response.ContentType="application/octet-stream";
    Response.AppendHeader("Content-Disposition","attachment;filename=" +HttpUtility.UrlEncode(DownloadFile.FullName,System.Text.Encoding.UTF8));
    Response.AppendHeader("Content-Length",DownloadFile.Length.ToString());
    Response.WriteFile(DownloadFile.FullName);
    Response.Flush();
    Response.End();
    }