遍历虚拟网站下所有目录
前台页面
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>选择本地路径</title>
<base target="_self" />
<script src="http://www.cnblogs.com/js/jquery-1.4.2.js" type="text/javascript"></script>
<script language="javascript" type="text/javascript">
var _text; // 返回的名
var _value; // 返回的值
function NoTrans(obj){
return obj.replace("\\","\\\\");
}
// div 出现在右侧,方便用户选择
$(document).ready(function(){
$("a").click(function(){
var obj = $(this);
var offset = obj.offset();
var right = offset.left + obj.width();
var down = offset.top + obj.height();
$("#dSubmit").css({'top':down,'left':right + 50});
})
});
function SetTextValue(text, value){
_text = text;
_value = value;
}
function SetValueAndReturn(){
}
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
<div>
<asp:TreeView ID="tvLocalDirFile" runat="server" ImageSet="XPFileExplorer"
NodeIndent="15" ExpandDepth="1">
<ParentNodeStyle Font-Bold="False" />
<HoverNodeStyle Font-Underline="True" ForeColor="#6666AA" />
<SelectedNodeStyle BackColor="#B5B5B5" Font-Underline="False"
HorizontalPadding="0px" VerticalPadding="0px" />
<NodeStyle Font-Names="Tahoma" Font-Size="8pt" ForeColor="Black"
HorizontalPadding="2px" NodeSpacing="0px" VerticalPadding="2px" />
</asp:TreeView>
</div>
<div id="dSubmit" align="center" style="position:absolute; border: solid 1 #462375">
<input type="button" id="btnOK" value="确定" onclick="returnValue();" />
<input type="button" id="btnCancel" value="取消" onclick="window.close();" />
</div>
<script language="javascript" type="text/javascript">
// 返回的方法
function returnValue() {
var opener = null;
try{
opener = window.dialogArguments;
}
catch(e) { }
if(opener == null)
{
opener = window.opener;
;
}
try {
opener.document.getElementById("<%= rtnIdObj%>").<%= rtnIdPro%>= _text;
}
catch (e){ }
try {
opener.document.getElementById("<%= rtnNameObj%>").<%=rtnNamePro %> = _value;
}
catch(e){ }
try
{
<%=string.IsNullOrEmpty(Request.QueryString["callbackfn"]) ? "" : "opener." + Request.QueryString["callbackfn"] + "();"%>
}
catch(e){}
window.close();
}
</script>
</div>
</form>
</body>
</html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>选择本地路径</title>
<base target="_self" />
<script src="http://www.cnblogs.com/js/jquery-1.4.2.js" type="text/javascript"></script>
<script language="javascript" type="text/javascript">
var _text; // 返回的名
var _value; // 返回的值
function NoTrans(obj){
return obj.replace("\\","\\\\");
}
// div 出现在右侧,方便用户选择
$(document).ready(function(){
$("a").click(function(){
var obj = $(this);
var offset = obj.offset();
var right = offset.left + obj.width();
var down = offset.top + obj.height();
$("#dSubmit").css({'top':down,'left':right + 50});
})
});
function SetTextValue(text, value){
_text = text;
_value = value;
}
function SetValueAndReturn(){
}
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
<div>
<asp:TreeView ID="tvLocalDirFile" runat="server" ImageSet="XPFileExplorer"
NodeIndent="15" ExpandDepth="1">
<ParentNodeStyle Font-Bold="False" />
<HoverNodeStyle Font-Underline="True" ForeColor="#6666AA" />
<SelectedNodeStyle BackColor="#B5B5B5" Font-Underline="False"
HorizontalPadding="0px" VerticalPadding="0px" />
<NodeStyle Font-Names="Tahoma" Font-Size="8pt" ForeColor="Black"
HorizontalPadding="2px" NodeSpacing="0px" VerticalPadding="2px" />
</asp:TreeView>
</div>
<div id="dSubmit" align="center" style="position:absolute; border: solid 1 #462375">
<input type="button" id="btnOK" value="确定" onclick="returnValue();" />
<input type="button" id="btnCancel" value="取消" onclick="window.close();" />
</div>
<script language="javascript" type="text/javascript">
// 返回的方法
function returnValue() {
var opener = null;
try{
opener = window.dialogArguments;
}
catch(e) { }
if(opener == null)
{
opener = window.opener;
;
}
try {
opener.document.getElementById("<%= rtnIdObj%>").<%= rtnIdPro%>= _text;
}
catch (e){ }
try {
opener.document.getElementById("<%= rtnNameObj%>").<%=rtnNamePro %> = _value;
}
catch(e){ }
try
{
<%=string.IsNullOrEmpty(Request.QueryString["callbackfn"]) ? "" : "opener." + Request.QueryString["callbackfn"] + "();"%>
}
catch(e){}
window.close();
}
</script>
</div>
</form>
</body>
</html>
后台代码
protected string rtnIdObj, rtnIdPro;
protected string rtnNameObj, rtnNamePro;
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
TreeNode node = new TreeNode(this.RepalcePrevDir(Request.ApplicationPath), Request.ApplicationPath);
node.SelectAction = TreeNodeSelectAction.Expand;
tvLocalDirFile.Nodes.Add(node);
// 这里要移除根路径不是 / 的那些字符
ListAllPath(Request.ApplicationPath.Remove(1), tvLocalDirFile.Nodes[0]);
// 初始化传入的值
SplitIdAndValue();
}
}
/// <summary>
/// 分隔传到页面的值的 id 和 value 值,方便传回调用页面
/// </summary>
private void SplitIdAndValue()
{
rtnNamePro = rtnIdPro = "value"; // 都只能是 value 属性
string[] rtnId;
string[] rtnName;
if (!string.IsNullOrEmpty(Request["rtnText"]))
{
rtnId = Request["rtnText"].ToString().Split('.'); // 接收返回值的对象ID和属性
if (rtnId.Length == 2) // 将objectname.value 格式的传入参数,分解为对象名和属性两个字符串
{
rtnIdObj = rtnId[0];
rtnIdPro = rtnId[1];
}
}
if (!string.IsNullOrEmpty(Request["rtnValue"]))
{
rtnName = Request["rtnValue"].ToString().Split('.');
if (rtnName.Length == 2)
{
rtnNameObj = rtnName[0];
rtnNamePro = rtnName[1];
}
}
}
/// <summary>
/// 转换成相对路径
/// </summary>
/// <param name="imagesurl1">虚拟目录</param>
/// <returns></returns>
private string urlconvertor(string imagesurl1)
{
string tmpRootDir = Server.MapPath(System.Web.HttpContext.Current.Request.ApplicationPath.ToString());// 获取程序根目录
string imagesurl2 = imagesurl1.Replace(tmpRootDir, ""); // 转换成相对路径
imagesurl2 = imagesurl2.Replace(@"\", @"/");
//imagesurl2 = imagesurl2.Replace(@"Aspx_Uc/", @"");
return imagesurl2;
}
// 转换成绝对路径
private string urlconvertorlocal(string imagesurl1)
{
string tmpRootDir = Server.MapPath(System.Web.HttpContext.Current.Request.ApplicationPath.ToString());// 获取程序根目录
string imagesurl2 = tmpRootDir + imagesurl1.Replace(@"/", @"\"); // 转换成绝对路径
return imagesurl2;
}
/// <summary>
/// 列出网站根目录
/// </summary>
/// <param name="dirPath"></param>
/// <param name="passNode"></param>
private void ListAllPath(string dirPath, TreeNode passNode)
{
string[] dirs;
string[] files;
//Response.Write(VirtualPathUtility.GetDirectory(Request.ApplicationPath));
dirs = Directory.GetDirectories(this.urlconvertorlocal(dirPath));
files = Directory.GetFiles(this.urlconvertorlocal(dirPath));
for (int i = 0; i < dirs.Length; i++)
{
TreeNode node = new TreeNode(this.RepalcePrevDir(this.urlconvertor(dirs[i])), dirs[i]);
//node.NavigateUrl = "#";
node.SelectAction = TreeNodeSelectAction.Expand;
//node.SelectAction= TreeNodeSelectAction.
passNode.ChildNodes.Add(node); // 已经添加了节点
ListAllPath(this.urlconvertor(dirs[i]), passNode.ChildNodes[passNode.ChildNodes.IndexOf(node)]); // 索引到那个节点
}
for (int i = 0; i < files.Length; i++)
{
TreeNode tNode = new TreeNode(this.RepalcePrevDir(this.urlconvertor(files[i])), files[i]);
tNode.NavigateUrl = "javascript:SetTextValue('" + this.urlconvertor(files[i]) + "', '" + files[i].Replace("\\", "\\\\") + "')";
passNode.ChildNodes.Add(tNode);
}
}
/// <summary>
/// 去除掉路径前的所有父路径
/// </summary>
/// <param name="dir"></param>
/// <returns></returns>
private string RepalcePrevDir(string dir)
{
return dir.Substring(dir.LastIndexOf("/") + 1);
}
protected string rtnNameObj, rtnNamePro;
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
TreeNode node = new TreeNode(this.RepalcePrevDir(Request.ApplicationPath), Request.ApplicationPath);
node.SelectAction = TreeNodeSelectAction.Expand;
tvLocalDirFile.Nodes.Add(node);
// 这里要移除根路径不是 / 的那些字符
ListAllPath(Request.ApplicationPath.Remove(1), tvLocalDirFile.Nodes[0]);
// 初始化传入的值
SplitIdAndValue();
}
}
/// <summary>
/// 分隔传到页面的值的 id 和 value 值,方便传回调用页面
/// </summary>
private void SplitIdAndValue()
{
rtnNamePro = rtnIdPro = "value"; // 都只能是 value 属性
string[] rtnId;
string[] rtnName;
if (!string.IsNullOrEmpty(Request["rtnText"]))
{
rtnId = Request["rtnText"].ToString().Split('.'); // 接收返回值的对象ID和属性
if (rtnId.Length == 2) // 将objectname.value 格式的传入参数,分解为对象名和属性两个字符串
{
rtnIdObj = rtnId[0];
rtnIdPro = rtnId[1];
}
}
if (!string.IsNullOrEmpty(Request["rtnValue"]))
{
rtnName = Request["rtnValue"].ToString().Split('.');
if (rtnName.Length == 2)
{
rtnNameObj = rtnName[0];
rtnNamePro = rtnName[1];
}
}
}
/// <summary>
/// 转换成相对路径
/// </summary>
/// <param name="imagesurl1">虚拟目录</param>
/// <returns></returns>
private string urlconvertor(string imagesurl1)
{
string tmpRootDir = Server.MapPath(System.Web.HttpContext.Current.Request.ApplicationPath.ToString());// 获取程序根目录
string imagesurl2 = imagesurl1.Replace(tmpRootDir, ""); // 转换成相对路径
imagesurl2 = imagesurl2.Replace(@"\", @"/");
//imagesurl2 = imagesurl2.Replace(@"Aspx_Uc/", @"");
return imagesurl2;
}
// 转换成绝对路径
private string urlconvertorlocal(string imagesurl1)
{
string tmpRootDir = Server.MapPath(System.Web.HttpContext.Current.Request.ApplicationPath.ToString());// 获取程序根目录
string imagesurl2 = tmpRootDir + imagesurl1.Replace(@"/", @"\"); // 转换成绝对路径
return imagesurl2;
}
/// <summary>
/// 列出网站根目录
/// </summary>
/// <param name="dirPath"></param>
/// <param name="passNode"></param>
private void ListAllPath(string dirPath, TreeNode passNode)
{
string[] dirs;
string[] files;
//Response.Write(VirtualPathUtility.GetDirectory(Request.ApplicationPath));
dirs = Directory.GetDirectories(this.urlconvertorlocal(dirPath));
files = Directory.GetFiles(this.urlconvertorlocal(dirPath));
for (int i = 0; i < dirs.Length; i++)
{
TreeNode node = new TreeNode(this.RepalcePrevDir(this.urlconvertor(dirs[i])), dirs[i]);
//node.NavigateUrl = "#";
node.SelectAction = TreeNodeSelectAction.Expand;
//node.SelectAction= TreeNodeSelectAction.
passNode.ChildNodes.Add(node); // 已经添加了节点
ListAllPath(this.urlconvertor(dirs[i]), passNode.ChildNodes[passNode.ChildNodes.IndexOf(node)]); // 索引到那个节点
}
for (int i = 0; i < files.Length; i++)
{
TreeNode tNode = new TreeNode(this.RepalcePrevDir(this.urlconvertor(files[i])), files[i]);
tNode.NavigateUrl = "javascript:SetTextValue('" + this.urlconvertor(files[i]) + "', '" + files[i].Replace("\\", "\\\\") + "')";
passNode.ChildNodes.Add(tNode);
}
}
/// <summary>
/// 去除掉路径前的所有父路径
/// </summary>
/// <param name="dir"></param>
/// <returns></returns>
private string RepalcePrevDir(string dir)
{
return dir.Substring(dir.LastIndexOf("/") + 1);
}
走向地狱的途中,不小心走了程序员这条路,路上一个个黑心的老板,和暗无天日的加班,我才发现,通往地狱的路径中,我们这行是最短的。