各位大侠, 我在gridview的模板列中绑定了一个超链接 我想在点击超链接的时候下载
文件的路径我已经存在数据库中。但是当文件是类似txt文本时他就直接打开了,没有出现提示下载或保存的提示框。请问怎么才能触发超链接事件。或者有别的更好的办法。越详细越好。谢...
文件的路径我已经存在数据库中。 但是当文件是 类似 txt文本时 他就直接打开了 , 没有出现提示下载或保存的 提示框 。 请问怎么才能触发 超链接事件 。 或者 有别的更好的办法 。 越详细越好 。 谢谢
展开
2个回答
展开全部
可以用数据流方式读取后用response方式写到页面就会提示下载了,参考代码:
//以下程序在page_Load里
FileStream fs = new FileStream(filePath, FileMode.Open); // 设置文件流,filePath为文件路径byte[] bytes = new byte[(int)fs.Length];fs.Read(bytes, 0, bytes.Length); // 读取
fs.Close();
Response.ClearContent(); // 清楚缓冲区所有内容
Response.ClearHeaders(); // 清楚缓冲区所有头
Response.ContentType = "application/octet-stream"; // 设置输出流的Http MIME类型//通知浏览器下载文件而不是打开
Response.AddHeader("Content-Disposition", "attachment; filename=" + HttpUtility.UrlEncode(fileName, System.Text.Encoding.UTF8)); //fileName为需要下载的文件名
Response.BinaryWrite(bytes); // 写入输入流
Response.Flush(); // 向客户端发送数据流
Response.End();
//以下程序在page_Load里
FileStream fs = new FileStream(filePath, FileMode.Open); // 设置文件流,filePath为文件路径byte[] bytes = new byte[(int)fs.Length];fs.Read(bytes, 0, bytes.Length); // 读取
fs.Close();
Response.ClearContent(); // 清楚缓冲区所有内容
Response.ClearHeaders(); // 清楚缓冲区所有头
Response.ContentType = "application/octet-stream"; // 设置输出流的Http MIME类型//通知浏览器下载文件而不是打开
Response.AddHeader("Content-Disposition", "attachment; filename=" + HttpUtility.UrlEncode(fileName, System.Text.Encoding.UTF8)); //fileName为需要下载的文件名
Response.BinaryWrite(bytes); // 写入输入流
Response.Flush(); // 向客户端发送数据流
Response.End();
追问
我就是不知道 怎么触发 那个超链接 的事件 他是在 gridview的模板列中 。
请问 我具体该怎么弄, 先谢谢了
追答
什么叫不知道怎么触发事件?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
linkbuttonr的 CommandArgument 绑定你的第二列的绑定值,
例如:
CommandArgument='<%# Eval("ID").ToString().Trim() %>'
ID就是第二列的值。
在你的RowCommand事件里取值:string strtemp=e.CommandArgument.ToString()
然后写跳转页面的 Response.Redirect("X.aspx?strNO="+strtemp);
另一个页面中 textbox.text=Request.QueryString["strNO"].ToString().Trim()
还有一种方法是直接在前台页面写的
例如:
CommandArgument='<%# Eval("ID").ToString().Trim() %>'
ID就是第二列的值。
在你的RowCommand事件里取值:string strtemp=e.CommandArgument.ToString()
然后写跳转页面的 Response.Redirect("X.aspx?strNO="+strtemp);
另一个页面中 textbox.text=Request.QueryString["strNO"].ToString().Trim()
还有一种方法是直接在前台页面写的
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询