实验一 想到了WinForm 中的文件夹上传
在WebForm中引用WinForm->“using System.Windows.Forms;” 这里要涉及线程操作
代码如下 | 复制代码 |
[DirectMethod] public void TopBarClick(string strOpearate) { btnUpdateEmInfos(strOpearate); } protected void btnUpdateEmInfos(string strOperate) { if (strOperate == "导入") { Thread s = new Thread(new ThreadStart(FoldDialog)); //s.ApartmentState=ApartmentState.STA; //COM提供的线程模型共有三种:Single-Threaded Apartment(STA 单线程套间)、Multithreaded Apartment(MTA 多线程套间)和Neutral Apartment/Thread Neutral Apartment/Neutral Threaded Apartment(NA/TNA/NTA 中立线程套间,由COM+提供)。 s.SetApartmentState(System.Threading.ApartmentState.STA); } /// <summary> |
FolderBrowserFolder
代码如下 | 复制代码 |
namespace CRM_BS.WebUI.Common { public class FolderDialog : FolderNameEditor { FolderNameEditor.FolderBrowser fDialog = new System.Windows.Forms.Design.FolderNameEditor.FolderBrowser { StartLocation = System.Windows.Forms.Design.FolderNameEditor.FolderBrowserFolder.Desktop };//逻辑桌面 /// <summary> /// 显示文件夹浏览器对话框 /// </summary> /// <returns></returns> public DialogResult ShowDialog() { fDialog.Description = "请选择文件夹" ; return fDialog.ShowDialog(); } /// <summary> /// 获取或设置文件夹上方显示的说明 /// </summary> /// <param name="description">文件夹上方说明</param> /// <returns></returns> public DialogResult ShowDialog(string description) { fDialog.Description = description; return fDialog.ShowDialog(); } /// <summary> /// 文件夹目标路径 /// </summary> public string Path { get { return fDialog.DirectoryPath; } } ~FolderDialog() { fDialog.Dispose(); } } } |
但是效果却如下:
弹出框不是激活状态
单击弹出框 效果
要的就是这效果,但是功能上有缺陷……实验一宣告失败(如果你这样成功了还请告知……)
实验二 BS要这效果? 那JS应该可以 ,下手……
先看效果:
看上去,好像是满足了需求
通过方法,还能顺利取出路径
再看代码
代码如下 | 复制代码 |
<%--导入--%> <script language="javascript" type="text/javascript"> </script> |
后台代码
代码如下 | 复制代码 |
//导入 (X.GetCtl("btnTopBarArrowDown") as Ext.Net.Button).Listeners.Click.Handler = "BrowseFolder();"; /// <summary> |
虽然表面上看“功能实现,代码也简洁,可以说是很成功” 但却牺牲了IE的安全性,需要进行一些设置。
步骤如图
一、
二、
再看看ActiveX 百科解释
“ActiveX 是一个开放的集成平台,为开发人员、 用户和 Web生产商提供了一个快速而简便的在 Internet 和 Intranet 创建程序集成和内容的方法。 使用 ActiveX, 可轻松方便的在 Web页中插入 多媒体效果、 交互式对象、以及复杂程序,创建用户体验相当的高质量多媒体 CD-ROM”
所以可想而知,如果为了实现这个功能我们把ActiveX状态都设置成“启用”的后果是什么了……
语文上经常用到“前后呼应”,那么回归到之初的问题