求教:LinkButton与网页对话框的问题

zhangzs8896 2005-10-29 11:41:21
我有一段下栽文件的代码,如下:
public void DownLoadFile(string FileName,string strAbsolutePath)
{
System.IO.Stream iStream = null;
byte[] buffer = new Byte[10000];
int length;
long dataToRead;
string filepath = strAbsolutePath;
try
{
iStream = new System.IO.FileStream(filepath, System.IO.FileMode.Open,System.IO.FileAccess.Read,System.IO.FileShare.Read);
dataToRead = iStream.Length;
Response.ContentType = "application/octet-stream";
Response.AddHeader("Content-Disposition", "attachment; filename=" +HttpUtility.UrlEncode(FileName));
while (dataToRead > 0)
{
if (Response.IsClientConnected)
{
length = iStream.Read(buffer, 0, 10000);
Response.OutputStream.Write(buffer, 0, length);
Response.Flush();
buffer= new Byte[10000];
dataToRead = dataToRead - length;
}
else
{
dataToRead = -1;
}
}
}
catch (Exception ex)
{
Response.Write("Error : " + ex.Message);
}
finally
{
if (iStream != null)
{
//Close the file.
iStream.Close();
}
}
}
我是将这些功能做在了usercontrol里。
(在DataGrid里的模板列里放了一个LinkButton,使它的click事件执行这段代码)
普通的页面使用这个usercontrol都是可以的,没有任何问题。但是我的实际应用需要的是在网页对话框里调用这段代码。
不知道是什么原因却不行,而且如果我点击了这个LinkButton后其他的LinkButton也失效了。
还请高手指教
...全文
175 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhangzs8896 2005-10-31
  • 打赏
  • 举报
回复
Error : 未找到路径“D:\׶칤Ŀ\1 ҵ\̴\camc.workflow\camc.workflow.businessflow\Temp\20051031\b5ef4376-6884-4fd2-98cb-a007e5f45811.rar”的一部分。
zhangzs8896 2005-10-31
  • 打赏
  • 举报
回复
按老大指点:
更改为:
<a href='../Files/UpLoadFile.aspx?NameAndPath=<%# DataBinder.Eval(Container.DataItem, "FileName").ToString()+","+DataBinder.Eval(Container.DataItem, "FilePath").ToString()%>'>
<%# DataBinder.Eval(Container.DataItem, "FileName")%>
</a>

中间页面:Page_Load内:
string[] NameAndPath=Request.QueryString["NameAndPath"].ToString().Split(',');
string FileName=NameAndPath[0];
string FilePath=NameAndPath[1];
DownLoadFile(FileName,FilePath); ---下栽代码方法。

结果是:有部分乱码以至找不到文件。
我的实际路径是: d:\中文\...\..
saucer 2005-10-31
  • 打赏
  • 举报
回复
do an encode/decode

<a href='../Files/UpLoadFile.aspx?NameAndPath=<%# HttpUtility.UrlEncode(DataBinder.Eval(Container.DataItem, "FileName").ToString()+","+DataBinder.Eval(Container.DataItem, "FilePath").ToString(), System.Text.Encoding.GetEncoding("GB2312"))%>'>

string[] NameAndPath=HttpUtility.UrlDecode(Request.QueryString["NameAndPath"].ToString(),System.Text.Encoding.GetEncoding("GB2312")).Split(',');
.....
zhangzs8896 2005-10-29
  • 打赏
  • 举报
回复
简单的连接到是可以下栽,
<a href='<%# DataBinder.Eval(Container.DataItem, "FilePath") %>'>
<%# DataBinder.Eval(Container.DataItem, "FileName") %></a>

但是不符合要求:(
因为显示的文件名不是我要的,我的物理文件是一个随机数+后缀,而需要显示的是汉字(原始文件名上传后更改文件名,我的原始文件名和文件物理路径全放在数据库里的)
还请大家帮忙,我只能按我开始说的做,但是不知道问题出在哪里。

luyesql 2005-10-29
  • 打赏
  • 举报
回复
帮你顶一下,因为不懂
zhangzs8896 2005-10-29
  • 打赏
  • 举报
回复
对了,我这个是跨进程的。
我是在项目1中打开网页对话框(项目2),项目对话框中放了Usercontrol的。
高手快来啊..............
losingrose 2005-10-29
  • 打赏
  • 举报
回复
用户控件不会自己保存状态的,需要自己写属性来设置
saucer 2005-10-29
  • 打赏
  • 举报
回复
试着将这下载的编码放在另一个页面里

>>>因为显示的文件名不是我要的,我的物理文件是一个随机数+后缀

用类似这样的语句

<a href="download.aspx?id=123">....</a>

123 -> 物理文件
zhangzs8896 2005-10-29
  • 打赏
  • 举报
回复

zhangzs8896 2005-10-29
  • 打赏
  • 举报
回复
ItemCommand里:
//这样调用的
System.Web.UI.WebControls.LinkButton lk=new LinkButton();
lk=(LinkButton)e.Item.FindControl("lk_FileName");
if (e.CommandName == "filename")
{
DownLoadFile(lk.Text,FilePath); //写别的代码可以。
} }
wangbiao 2005-10-29
  • 打赏
  • 举报
回复
你的用户控件公开了你的方法了吗?是不是linkbutton事件丢失了

jQuery EasyUI是一组基于jQuery的UI插件集合,而jQuery EasyUI的目标就是帮助web开发者更轻松的打造出功能丰富并且美观的UI界面。开发者不需要编写复杂的javascript,也不需要对css样式有深入的了解,开发者需要了解的只有一些简单的html标签 1.3.6更新 Bug treegrid: getChecked方法不能返回正确的行. fixed. tree: 异步树,在onlyLeafCheck:true时复选框不显示正确. fixed. Improvement treegrid:继承datagrid组件所有的selecting和checking方法。 linkbutton:图标对齐方式,支持值:'top','bottom','left','right'。 linkbutton:添加"size"属性,支持值:'small','large'。 linkbutton:添加的onClick事件。 menubutton:添加"menuAlign"属性,允许用户设置顶级菜单对齐。 combo:添加"panelAlign"属性,支持值:'left','right'。 calendar:"formatter"、"styler"和"validator"选项可用于自定义日历日期。 calendar:添加的onChange事件。 panel:添加"method","queryParams"和"loader"属性。 panel:添加"onLoadError"事件。 datagrid:添加"onBeginEdit"事件。 datagrid:添加"onEndEdit"事件。 datagrid:添加"sort"方法和"onBeforeSortColumn"事件。 datagrid:"combogrid"编辑器集成到datagrid。 datagrid:添加"ctrlSelect"属性,允许使用ctrl+click 多选 slider:添加"converter"选项,允许用户决定如何将一个值转换为滑块的位置或滑块位置值。 searchbox:添加"disabled"属性。 searchbox:添加"disabled","enable","clear","reset"方法。 spinner:添加"readonly"属性、"readonly"方法和"onChange事件。
最新版本的jQuery EasyUI 1.3.6版全中文API汉化文档火热出炉,由于很多人和我要chm格式的,所以本次API我提供了2种版本的API,一个还是以前的EXE格式,另外一个就是人气颇高的chm格式。本次还将EasyUI 1.3.6版直接提供到API包里面,方便没有去官网下载的人直接使用。请大家持续关注我发布的资源,不出意外,我是会一直持续更新本API文档的。本次更新内容大约有30个,Bug修复的只有2个,剩下的全是新增内容,EasyUI的控件已经越来越好用了,顶一个。但是希望能把性能也提升提升,总是感觉在某些情况下EasyUI的性能不是太好。具体更新内容请看下面的说明: jQuery EasyUI 1.3.6版本更新内容: Bug(修复) treegrid:修复“getChecked”方法不能正确的返回被选择的行的问题; tree:修复在“onlyLeafCheck”属性为true时,复选框无法在异步树种正确显示的问题。 Improvement(改进) treegrid:所有的选择和选中的方法都扩展自datagrid组件; linkbutton:添加图标对齐功能的完整支持,可用值有:“top”、“bottom”、“left”、“right”; linkbutton:添加“size”属性,可用值有:“small”、“large”; linkbutton:添加“onClick”事件; menubutton:添加“menuAlign”属性,该属性允许用户设置顶级菜单对齐; combo:添加“panelAlign”属性,可用值有:“left”、“right”; calendar:添加“formatter”、“styler”和“validator”属性,这些属性允许用于自定义日历日期; calendar:添加“onChange”事件; panel:添加“method”、“queryParams”和“loader”选项; panel:添加“onLoadError”事件; datagrid:添加“onBeginEdit”事件,该事件在一个行进入编辑模式时触发; datagrid:添加“onEndEdit”事件,该事件在完成编辑但是编辑器尚未销毁之前触发; datagrid:添加“sort”方法和“onBeforeSortColumn”事件; datagrid:将“combogrid”编辑器集成到datagrid中; datagrid:添加“ctrlSelect”属性,在启用多行选择的时候允许使用Ctrl键+鼠标点击的方式进行多选操作; slider:添加“converter”属性,该属性允许用户决定如何将一个值转换为进度条位置或进度条位置值; searchbox:添加“disabled”属性; searchbox:添加“disable”、“enable”、“clear”、“reset”方法; spinner:添加“readonly”属性、“readonly”方法和“onChange”事件。

62,074

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧