实验一 想到了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);
s.Start();
}
}
///
/// 文件夹弹出框
///
private void FoldDialog()
{
FolderDialog d = new FolderDialog();
string path = string.Empty;
if (d.ShowDialog() == DialogResult.OK)
{
path = d.Path;
}
}
|
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 };//逻辑桌面
///
/// 显示文件夹浏览器对话框
///
///
public DialogResult ShowDialog()
{
fDialog.Description = "请选择文件夹" ;
return fDialog.ShowDialog();
}
///
/// 获取或设置文件夹上方显示的说明
///
/// 文件夹上方说明
///
public DialogResult ShowDialog(string description)
{
fDialog.Description = description;
return fDialog.ShowDialog();
}
///
/// 文件夹目标路径
///
public string Path
{
get
{
return fDialog.DirectoryPath;
}
}
~FolderDialog()
{
fDialog.Dispose();
}
}
}
|
但是效果却如下:
弹出框不是激活状态
单击弹出框 效果
要的就是这效果,但是功能上有缺陷……实验一宣告失败(如果你这样成功了还请告知……)
实验二 BS要这效果? 那JS应该可以 ,下手……
先看效果:
看上去,好像是满足了需求
通过方法,还能顺利取出路径
再看代码
后台代码
代码如下 |
复制代码 |
//导入
(X.GetCtl("btnTopBarArrowDown") as Ext.Net.Button).Listeners.Click.Handler = "BrowseFolder();";
///
/// 导入->确定 方法
///
///
[DirectMethod]
public void GetPath(string path)
{
CommonMethod.Show("", path, Ext.Net.MessageBox.Icon.INFO);
}
|
虽然表面上看“功能实现,代码也简洁,可以说是很成功” 但却牺牲了IE的安全性,需要进行一些设置。
步骤如图
一、
二、
再看看ActiveX 百科解释
“ActiveX 是一个开放的集成平台,为开发人员、 用户和 Web生产商提供了一个快速而简便的在 Internet 和 Intranet 创建程序集成和内容的方法。 使用 ActiveX, 可轻松方便的在 Web页中插入 多媒体效果、 交互式对象、以及复杂程序,创建用户体验相当的高质量多媒体 CD-ROM”
所以可想而知,如果为了实现这个功能我们把ActiveX状态都设置成“启用”的后果是什么了……
语文上经常用到“前后呼应”,那么回归到之初的问题