动态添加FileUpload的问题
我在做一个内部电子邮件的模块,添加附件遇到问题搞不定,我是在一个GridView模板列里放了一个FileUpload,当点击一个“继续添加附件”的按钮时给一个DataTable动态添加一行,然后绑定GridView,这样GridView就多显示出一个FileUpload来,然后用ViewState记录下DataTable的状态。问题出在当你在一个FileUpload里选择了一个文件,再点击“继续添加附件”,这时所有FileUpload的文本框全部为空了。麻烦大家提示一下我怎么才能保留住已经选择的文件名,或者有什么其它别的办法动态添加FileUpload也行,谢了各位--------------------编程问答-------------------- 幫頂... --------------------编程问答-------------------- FileUpload的Value属性是只读的,[继续添加附件]按钮不能执行提交事件,否则就会出现你提到的问题,想办法用客户端Javascript实现,一次提交客户端生成所有FileUpload的值 --------------------编程问答-------------------- 是用Ajax方法,服务器每产生新的行的时候,仅将新的行的html发送到客户端,客户端把这行html插入。 --------------------编程问答-------------------- 不过ajax相对于普通的asp.net,差别太大了。如果你没有写过 RenderControl 代码,也不很熟悉javascript,还是算了。 --------------------编程问答--------------------
//container_id 是指FILEUPLOAD控件显示的页面TAG
// 如有这样一段代码
/*
<p id="attachs">
</p>
附件显示在上面, 那么再有一个BUTTON的onclock="Attachment('attachs')"就OK啦
*/
代码如下:
function Attachment(container_id) {
var o = document.getElementById(container_id);//得到容器
var filebutton = '<br><input type="file" size="70%" name="File" class="txt" />';
o.insertAdjacentHTML("beforeEnd",filebutton);// 写入
} --------------------编程问答-------------------- 当点击一个“继续添加附件”的按钮时给一个DataTable动态添加一行,然后绑定GridView,这样GridView就多显示出一个FileUpload来,然后用ViewState记录下DataTable的状态。问题出在当你在一个FileUpload里选择了一个文件,再点击“继续添加附件”,这时所有FileUpload的文本框全部为空了。麻烦大家提示一下我怎么才能保留住已经选择的文件名,或者有什么其它别的办法动态添加FileUpload也行
===============================
你的错误的原因是发送提交给服务器端的,客户端的页面被刷新,楼上的也说了,fileupload是只读,所以状态无法保存,但ajax在这种情况下,几乎没有用武的余地,主要是js操作本地文件的二进制内容受到的限制太多。
所以解决方案是添加新附件不要提交服务器端,也就是说不要用服务器端的方法去处理新附件二要用js
最后发送邮件时在服务器端用
Request.Files 获得所有的附件
孟子网站上有专门的讲解
--------------------编程问答-------------------- 学习。。。
补充:.NET技术 , ASP.NET