带右键菜单的树形控件(1)

用户自定义控件代码如下:
using System;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.ComponentModel;
using System.IO;

namespace EWFS.CL
{
 public  struct stuTreeNodes
 {
  public string strKey;
  public string strDispVal;
  public string strParentKey;
  public string strJavaScriptCmd;
 }

 public struct stuTreeNodesIcons
 {
  public string strTreeCaptionIcon;
  public string strTreeContentOpenIcon;
  public string strTreeContentCloseIcon;
 }

 public struct stuTreePopMenu
 {
  public string strMenuItemImg;
  public string strMenuItemText;
  public string strMenuItemCmd;
 }


 [DefaultProperty("Text"),
 ToolboxData("<{0}:TreeView runat=server></{0}:TreeView>")]
 public class TreeView : System.Web.UI.WebControls.WebControl
 {
  private string m_TreeCaption; //标题
  private stuTreeNodes[] m_stuTreeNodes; //节点内容
  private stuTreeNodesIcons m_stuTreeNodesIcons; //节点图标
  private string m_TreeChangedPostURL; //修改后的树传送的地址
  private bool m_TreeAddDir;
  private bool m_TreeRenDir;
  private bool m_TreeDelDir;
  private stuTreePopMenu[] m_stuTreePopMenu;
  private string m_GotoID;
  private bool m_TreeRootPopMenu;
  private System.Data.DataSet m_dsTreeNodes;
  

  protected System.Web.UI.WebControls.Table TreeTable;
  
  public string TreeGotoID //定位ID
  {
   get{return m_GotoID;}
   set{m_GotoID=value;}
  }

  [Bindable(true),
  Category("Appearance"),
  DefaultValue(true)]
  public bool TreeRootPopMenu
  {
   get{return m_TreeRootPopMenu;}
   set{m_TreeRootPopMenu=value;}
  }

  [Bindable(true),
  Category("Appearance"),
  DefaultValue("")]
  public bool TreeAddDir
  {
   get{return m_TreeAddDir;}
   set{m_TreeAddDir=value;}
  }

  public bool TreeRenDir
  {
   get{return m_TreeRenDir;}
   set{m_TreeRenDir=value;}
  }
  
  public bool TreeDelDir
  {
   get{return m_TreeDelDir;}
   set{m_TreeDelDir=value;}
  }

 

  public stuTreePopMenu[] StuTreePopMenu
  {
   get{return m_stuTreePopMenu;}
   set{m_stuTreePopMenu=value;}
  }


  public string TreeChangedPostURL
  {
   get{return m_TreeChangedPostURL;}
   set{m_TreeChangedPostURL=value;}
  }

  public stuTreeNodesIcons StuTreeNodesIcons
  {
   get {return m_stuTreeNodesIcons;}
   set {m_stuTreeNodesIcons = value;}
  }

  public stuTreeNodes[] StuTreeNodes
  {
   get
   {
    return m_stuTreeNodes;
   }
   set
   {
    m_stuTreeNodes=value;
   }
  }

  public string TreeCaption
  {
   get
   {
    return m_TreeCaption;
   }

   set
   {
    m_TreeCaption = value;
   }
  }
  
  /// <summary>
  /// 获取节点内容
  /// </summary>
  public System.Data.DataSet dsTreeNodes
  {
   get{return this.m_dsTreeNodes;}
   set
   {
    this.m_dsTreeNodes=value;
    SetTreeNodes();
   }
  }

  private void SetTreeNodes()
  {
   this.m_stuTreeNodes =new stuTreeNodes[m_dsTreeNodes.Tables[0].Rows.Count];
   for(int i=0;i<m_dsTreeNodes.Tables[0].Rows.Count;i++)
   {
    this.m_stuTreeNodes[i].strKey=m_dsTreeNodes.Tables[0].Rows[i][0].ToString();
    this.m_stuTreeNodes[i].strParentKey=m_dsTreeNodes.Tables[0].Rows[i][1].ToString()=="0"?"":m_dsTreeNodes.Tables[0].Rows[i][1].ToString();
    this.m_stuTreeNodes[i].strDispVal=m_dsTreeNodes.Tables[0].Rows[i][2].ToString();
    this.m_stuTreeNodes[i].strJavaScriptCmd=m_dsTreeNodes.Tables[0].Rows[i][3].ToString();
   }
  }
  /// <summary>
  /// 将此控件呈现给指定的输出参数。
  /// </summary>
  /// <param name="output"> 要写出到的 HTML 编写器 </param>
  protected override void CreateChildControls()
  {
   System.Web.UI.WebControls.Table oTB=new Table();
   System.Web.UI.WebControls.Table oTB1=new Table();
   System.Web.UI.WebControls.TableRow oTR=new TableRow ();
   System.Web.UI.WebControls.TableCell oTD=new TableCell ();
   System.Web.UI.WebControls.Unit oU=new Unit("98%");
   System.Web.UI.ControlCollection oCC=null;
   System.Web.UI.Control oC1=null;
   int i;
   
   //输出JS文件
   string scr="";//"<script language=javascript src=BuildTree.js></script>/r/n";
   //scr+="<script language=javascript src=PopMenu.js></script>/r/n";
   scr+="<script>/r/n";
   //设置右键菜单
   scr+="var MenuItemArray=new Array( ";
   if(m_TreeAddDir)
   {
    scr+="['<img src=images/mycomputer.gif>','增加目录','TreeAddDir()'],";
   }
   if(m_TreeDelDir)
   {
    scr+="['<img src=images/mycomputer.gif>','删除目录','TreeDelDir()'],";
   }
   if(m_TreeRenDir)
   {
    scr+="['','重命名','TreeRenDir()'],";
   }

   //通过外部增加菜单内容
   if(!(m_stuTreePopMenu==null))
   {
    for(i=0;i<m_stuTreePopMenu.Length ;i++)
    {
     scr+="['"+m_stuTreePopMenu[i].strMenuItemImg +"',"
      +"'"+m_stuTreePopMenu[i].strMenuItemText +"',"
      +"'"+m_stuTreePopMenu[i].strMenuItemCmd.Replace("'","//'") +"'],";
    }
   }

   //scr+="['','','']);/n";
   scr=scr.Substring(0,scr.Length-1);
   scr+=");/n";

   scr+="var oIMGS=new Array(3);/r/n";
   scr+="for(i=0;i<3;i++)/r/n";
   scr+="{/r/n";
   scr+=" oIMGS[i]=new Image;/r/n";
   scr+="}/r/n";
   scr+="oIMGS[0].src='"+m_stuTreeNodesIcons.strTreeCaptionIcon+"'/r/n"; //头部图形
   scr+="oIMGS[1].src='"+m_stuTreeNodesIcons.strTreeContentCloseIcon +"'/r/n"; //未选中
   scr+="oIMGS[2].src='"+m_stuTreeNodesIcons.strTreeContentOpenIcon +"'/r/n"; //选中
   scr+="document.body.οnclick='HiddenPopMenu()';/r/n";

   scr+="function TreeSelectStart(){if(event.srcElement.tagName=='INPUT'){return true;}else{return false;}}/n";
   scr+=TableTreeMove();
   scr+="</script>";
   scr+="<script language=vbscript>/r/n";
   scr+="call document.body.attachEvent(/"onclick/",getRef(/"TreeViewAddBodyOnClick/"))/r/n";
   scr+="sub TreeViewAddBodyOnClick()/r/n";
   scr+="  HiddenPopMenu/r/n end sub /r/n</script>/r/n";
   scr+="<script>var eISOTreeViewPostAction='"
    +m_TreeChangedPostURL+"'</script>/r/n"; //指定修改后传送的URL
   
   scr+="</form><iframe src='' name='eISOTreeViewFrame' style=/"display:none/"></iframe>/r/n";
   scr+="<form name=TreeChangedFORM action='"+m_TreeChangedPostURL
    +"' target='eISOTreeViewFrame' style=/"display:none/"><input type=text name=ChangedValue ></form><from>/r/n";
  

   this.Controls.Add (new LiteralControl(scr));
   

   //this.Parent.Page.Controls[0].Controls.Add
   
   //建立根目录
   TreeTable=new Table ();
   TreeTable.BorderWidth =0;
   TreeTable.CellPadding =0;
   TreeTable.CellSpacing =0;
   TreeTable.ID="TreeTable";
   TreeTable.Style.Add ("font-size","12px");
   TreeTable.Style.Add ("width","100%");

   oTR=new TableRow ();
   oTR.ID ="TreeViewRoot";
   oTD=new TableCell ();
   oTD.Width =20;
   oTD.Text ="<img src='"+m_stuTreeNodesIcons.strTreeCaptionIcon+"' width=16 heigth=16>";
   oTR.Cells.Add (oTD);

   oTD=new TableCell ();
   oTD.Style.Add ("width","99%");
   oTD.Style.Add ("cursor","hand");
   oTD.Text ="<span>"+m_TreeCaption+"</span>";
   oTD.Style.Add ("padding-left","4px");
   oTR.Cells.Add (oTD);

   TreeTable.Rows.Add (oTR);
   
   oTR=new TableRow ();
   oTD=new TableCell ();
   oTD.ColumnSpan =2;
   oTR.Cells.Add (oTD);

   TreeTable.Rows.Add (oTR);
   this.Controls.Add (TreeTable);
   
   stuTreeNodes[] sTN =m_stuTreeNodes;

   TreeTable.Attributes.Add ("onclick","TreeNodeClick()");
   TreeTable.Attributes.Add ("onselectstart","return TreeSelectStart();");
   TreeTable.Attributes.Add ("oncontextmenu","TreePopMenu();return false;");
//   TreeTable.Attributes.Add ("onmousemove","TableTreemv()");
//   TreeTable.Attributes.Add ("onmousedown","TableTreemd()");
//   TreeTable.Attributes.Add ("onmouseup","TableTreemu()");

   
   for(i=0;i<sTN.Length ;i++)
   {
    oCC=null;
    oTR=new TableRow ();
    oTD=new TableCell ();
    oTD.Width =20;
    oTD.Text ="<img src=croend.gif width=20 height=18>";
    oTR.Cells.Add(oTD);

    oTD=new TableCell ();
    oTD.Width =16;
    oTD.Text ="<img src="+m_stuTreeNodesIcons.strTreeContentCloseIcon +" width=15 height=15>";
    oTD.VerticalAlign =VerticalAlign.Top;
    oTR.Cells.Add(oTD);
    oTD.Style.Add ("padding-left","4px");

    oTD=new TableCell ();
    oTD.Width =oU;
    oTD.Style.Add ("padding-left","4px");
    
    oTD.Text ="<span style=/"cursor:hand/">"+sTN[i].strDispVal+"</span>" ;
    oTD.Attributes.Add("nowrap","");
    
    oTR.Cells.Add(oTD);
    oTR.Attributes.Add ("CMD",sTN[i].strJavaScriptCmd);

    oTB=new Table() ;
    oTB.Rows.Add(oTR);
    oTB.CellPadding =0;
    oTB.CellSpacing =0;
    oTB.Style.Add ("width","100%");
    oTB.Style.Add ("font-size","12px");
    oTB.ID =sTN[i].strKey ;

    if(sTN[i].strParentKey =="")
    {
     oCC=TreeTable.Rows[1].Cells[0].Controls;
    }
    else
    {
     oC1=this.Page.FindControl(sTN[i].strParentKey);
     oTB1=(Table) oC1;
     //有子节点增加一行
     if(oTB1.Rows.Count==1)
     {
      AddTableRow(oTB1);
     }
     oCC=oTB1.Rows[1].Cells[oTB1.Rows[1].Cells.Count -1].Controls;
    }

    if(oCC.Count >0)
    {
     oTB1=(Table)oCC[oCC.Count-1];
     if(oTB1.Rows[0].Cells[0].Text.IndexOf ("croend.gif")>=0)
      oTB1.Rows[0].Cells[0].Text ="<img src=cro.gif width=20 height=18>";
    }
    oCC.AddAt(oCC.Count,oTB);
   }
   //TreeTable.Rows[1].Cells.Add(TreeTable.Rows[0].Cells[0]);
   for(i=0;i<sTN.Length ;i++)
   {
    oC1=Page.FindControl(sTN[i].strKey);
    oTB1=(Table) oC1;
    if(oTB1.Rows.Count ==2)
    {
     if(oTB1.Rows[0].Cells[0].Text.IndexOf ("end.gif")==-1)
     {
      oTB1.Rows[1].Cells[0].Attributes.Add ("background","lin.gif");
     }
     oTB1.Rows[0].Cells[0].Text ="<img src=clo.gif width=20 height=18>";
     oTB1.Rows[0].Cells[0].Style.Add ("cursor","hand");
     oTB1.Rows[1].Style.Add("display","none");

     CreateImages();

    }
   }
   this.Controls.Add(new LiteralControl (AddTreeJS()));
   this.Controls.Add(new LiteralControl (AddPopMenuJS()));
   
  }

  #region 增加表行 AddTableRow(Table oTB2)
  private void AddTableRow(Table oTB2)
  {
   System.Web.UI.WebControls.TableRow oTR=new TableRow ();
   System.Web.UI.WebControls.TableCell oTD=new TableCell ();
   for(int i=0;i<oTB2.Rows[0].Cells.Count-1;i++)
   {
    oTD=new TableCell ();
    if(i==oTB2.Rows[0].Cells.Count-2)
     oTD.ColumnSpan =2;
    oTR.Cells.Add (oTD);
   }
   oTB2.Rows.Add (oTR);
  }
  #endregion

  
  #region 增加右键弹出式菜单 AddPopMenuJS()
  private string AddPopMenuJS()
  {
   string strPopMenu="<script language=javascript>/r/n//gdx/r/n";
   strPopMenu+="HTMLPopMenu='<div id=/"oPopMenu/" style=/"LEFT: 20px; VISIBILITY: hidden; POSITION: absolute; TOP: 30px/">';/r/n/r/n";
   strPopMenu+="HTMLPopMenu+='<TABLE cellSpacing=/"0/" cellPadding=/"0/" border=/"0/">'/r/n";
   strPopMenu+="HTMLPopMenu+='<TR>'/r/n";
   strPopMenu+="HTMLPopMenu+='<TD height=/"1/" bgcolor=/"white/" style=/"BORDER-RIGHT: black 1px solid; BORDER-TOP: black 1px solid; BORDER-LEFT: black 1px solid; BORDER-BOTTOM: black 1px solid; BACKGROUND-COLOR: #ebf5f7/">'/r/n";
   strPopMenu+="//Menu Item Area/r/n";
   strPopMenu+="HTMLPopMenu+='<table id=/"oPopMenuTB/" border=/"0/" style=/"cursor:hand;font-size:12px/" οnmοusemοve=/"DispMenuItem()/" οnmοuseοut=/"if(!(objMenuItem==//'//')){objMenuItem.parentElement.style.backgroundColor=//'//';objMenuItem.style.color=//'//';}/" οncοntextmenu=/"return false/" οnclick=/"ExecMenuCMD(event.srcElement.parentElement.getAttribute(//'CMD//'));/" cellSpacing=/"0/" cellPadding=/"0/" border=/"0/">'/r/n";
   strPopMenu+="HTMLPopMenu+='</table>'/r/n";
   strPopMenu+="//Menu Item Area/r/n";
   strPopMenu+="HTMLPopMenu+='</TD>'/r/n";
   strPopMenu+="HTMLPopMenu+='<TD width=/"3/">'/r/n";
   strPopMenu+="HTMLPopMenu+='<table width=/"100%/" height=/"100%/" border=/"0/" cellSpacing=/"0/" cellPadding=/"0/" ID=/"Table2/">'/r/n";
   strPopMenu+="HTMLPopMenu+='<tr>'/r/n";
   strPopMenu+="HTMLPopMenu+='<td height=/"3/"></td>'/r/n";
   strPopMenu+="HTMLPopMenu+='<tr>'/r/n";
   strPopMenu+="HTMLPopMenu+='<td>'/r/n";
   strPopMenu+="HTMLPopMenu+='<div style=/"FILTER: progid:DXImageTransform.Microsoft.BasicImage( Rotation=0,Mirror=0,Invert=0,XRay=0,Grayscale=0,Opacity=0.25);BACKGROUND-COLOR: gray;height:100%; width:3px/">'/r/n";
   strPopMenu+="HTMLPopMenu+='<img src=/"/" width=/"1/" height=/"1/">'/r/n";
   strPopMenu+="HTMLPopMenu+='</div>'/r/n";
   strPopMenu+="HTMLPopMenu+='</td>'/r/n";
   strPopMenu+="HTMLPopMenu+='</tr>'/r/n";
   strPopMenu+="HTMLPopMenu+='</table>'/r/n";
   strPopMenu+="HTMLPopMenu+='</TD>'/r/n";
   strPopMenu+="HTMLPopMenu+='</TR>'/r/n";
   strPopMenu+="HTMLPopMenu+='<TR style=/"height:3px/">'/r/n";
   strPopMenu+="HTMLPopMenu+='<TD colspan=/"2/">'/r/n";
   strPopMenu+="HTMLPopMenu+='<table width=/"100%/" height=/"100%/" border=/"0/" cellSpacing=/"0/" cellPadding=/"0/" ID=/"Table3/">'/r/n";
   strPopMenu+="HTMLPopMenu+='<tr>'/r/n";
   strPopMenu+="HTMLPopMenu+='<td width=/"3/"></td>'/r/n";
   strPopMenu+="HTMLPopMenu+='<td><div style=/"FILTER: progid:DXImageTransform.Microsoft.BasicImage( Rotation=0,Mirror=0,Invert=0,XRay=0,Grayscale=0,Opacity=0.25);BACKGROUND-COLOR: gray;height:3px/">'/r/n";
   strPopMenu+="HTMLPopMenu+='<img src=/"/" width=/"1/" height=/"1/"></div>';/r/n";
   strPopMenu+="HTMLPopMenu+='</td>';/r/n";
   strPopMenu+="HTMLPopMenu+='</tr>';/r/n";
   strPopMenu+="HTMLPopMenu+='</table>';/r/n";
   strPopMenu+="HTMLPopMenu+='</TD>';/r/n";
   strPopMenu+="HTMLPopMenu+='</TR>';/r/n";
   strPopMenu+="HTMLPopMenu+='</TABLE>';/r/n";
   strPopMenu+="HTMLPopMenu+='</div>';/r/n";
   strPopMenu+="/r/n";
   strPopMenu+="var objMenuItem='';/r/n";
   strPopMenu+="var objBeforePop='';/r/n";
   strPopMenu+="function DispMenuItem()/r/n";
   strPopMenu+="{/r/n";
   strPopMenu+=" if(event.srcElement.tagName=='TD')/r/n";
   strPopMenu+=" {/r/n";
   strPopMenu+="  if(!(objMenuItem==''))/r/n";
   strPopMenu+="  {/r/n";
   strPopMenu+="   objMenuItem.parentElement.style.backgroundColor='';/r/n";
   strPopMenu+="   objMenuItem.style.color='black';/r/n";
   strPopMenu+="  }/r/n";
   strPopMenu+="  objMenuItem=event.srcElement;/r/n";
   strPopMenu+="  objMenuItem.parentElement.style.backgroundColor='blue';/r/n";
   strPopMenu+="  objMenuItem.style.color='white';/r/n";
   strPopMenu+=" }/r/n";
   strPopMenu+="}/r/n";
   strPopMenu+="/r/n";
   strPopMenu+="function ExecMenuCMD(cmd)/r/n";
   strPopMenu+="{/r/n";
   strPopMenu+=" if(!cmd=='' && cmd.indexOf('(')>0 && cmd.indexOf(')')>0)/r/n";
   strPopMenu+=" {/r/n";
   strPopMenu+="  eval(cmd);/r/n";
   strPopMenu+="  HiddenPopMenu();/r/n";
   strPopMenu+=" }/r/n";
   strPopMenu+=" HiddenPopMenu();/r/n";
   strPopMenu+="}/r/n";
   strPopMenu+="/r/n";
   strPopMenu+="function DisplayMenu(ArrayMenuItem)/r/n";
   strPopMenu+="{/r/n";
   strPopMenu+=" //window.oPopMenuTB.removeNode(false);/r/n";
   strPopMenu+=" while(oPopMenuTB.rows.length>0)/r/n";
   strPopMenu+=" {/r/n";
   strPopMenu+="  oPopMenuTB.rows[0].removeNode(true);/r/n";
   strPopMenu+=" }/r/n";
   strPopMenu+=" for(i=0;i<ArrayMenuItem.length-1;i++)/r/n";
   strPopMenu+=" {/r/n";
   strPopMenu+="  myrow=window.oPopMenuTB.insertRow();/r/n";
   strPopMenu+="  mycel=myrow.insertCell();/r/n";
   strPopMenu+="  mycel.height=19/r/n";
   strPopMenu+="  mycel.style.paddingLeft='4px';/r/n";
   strPopMenu+="  mycel.style.paddingRight='2px';/r/n";
   strPopMenu+="  mycel.style.paddingTop='2px';/r/n";
   strPopMenu+="  mycel.style.paddingBottom='2px';/r/n";
   strPopMenu+="  mycel.innerHTML=ArrayMenuItem[i][0];/r/n";
   strPopMenu+="  mycel=myrow.insertCell();/r/n";
   strPopMenu+="  mycel.style.paddingLeft='2px';/r/n";
   strPopMenu+="  mycel.style.paddingRight='4px';/r/n";
   strPopMenu+="  mycel.style.paddingTop='2px';/r/n";
   strPopMenu+="  mycel.style.paddingBottom='2px';/r/n";
   strPopMenu+="  mycel.innerHTML=ArrayMenuItem[i][1];/r/n";
   strPopMenu+="  mycel.noWarp=true;/n";
   strPopMenu+="  myrow.setAttribute('CMD',ArrayMenuItem[i][2]); /r/n";
   strPopMenu+=" }/r/n";
   strPopMenu+="}/r/n";
   strPopMenu+="/r/n";
   strPopMenu+="function PopMenu()/r/n";
   strPopMenu+="{/r/n";
   strPopMenu+=" /r/n";
   strPopMenu+=" objBeforePop=event.srcElement; //弹出菜单前的对象/r/n";
   strPopMenu+=" /r/n";
   strPopMenu+=" if((oPopMenu.clientHeight+event.y)>document.body.clientHeight)/r/n";
   strPopMenu+=" {/r/n";
   strPopMenu+="  oPopMenu.style.posTop =event.y-oPopMenu.clientHeight+document.body.scrollTop;/r/n";
   strPopMenu+=" }/r/n";
   strPopMenu+=" else/r/n";
   strPopMenu+=" {/r/n";
   strPopMenu+="  oPopMenu.style.posTop =event.y+document.body.scrollTop;/r/n";
   strPopMenu+=" }/r/n";
   strPopMenu+=" if((oPopMenu.clientWidth+event.x)>document.body.clientWidth )/r/n";
   strPopMenu+=" {/r/n";
   strPopMenu+="  oPopMenu.style.posLeft =event.x-oPopMenu.clientWidth+document.body.scrollLeft ;/r/n";
   strPopMenu+=" }/r/n";
   strPopMenu+=" else/r/n";
   strPopMenu+=" {/r/n";
   strPopMenu+="  oPopMenu.style.posLeft =event.x+document.body.scrollLeft;/r/n";
   strPopMenu+=" }/r/n";
   strPopMenu+=" oPopMenu.style.visibility ='visible';/r/n";
   strPopMenu+=" //alert(oPopMenu.clientHeight );/r/n";
   strPopMenu+="}/r/n";
   strPopMenu+="function HiddenPopMenu()/r/n";
   strPopMenu+="{/r/n";
   strPopMenu+=" oPopMenu.style.visibility ='hidden';/r/n";
   strPopMenu+="}/r/n";
   strPopMenu+="document.write(HTMLPopMenu);/r/n</script>";

   strPopMenu="<script language=javascript src=/eGMS/Web/JS/PopMenu.js></script>";
   return strPopMenu;
  }
  #endregion

  private string AddTreeJS()
  {
   string strTree="<script language=javascript>/r/n";
   strTree+="var strTreeUndeleteDir='子目录不为空,不能删除';/n";
   strTree+="var strTreeNewItem='新建目录';/n";

   strTree+="TreeHTML1='<div id=/"TreeInputParent/" style = /"VISIBILITY: hidden;position:absolute/">'/r/n";
   strTree+="TreeHTML1+='<input type=/"text/" name=/"TreeInput/" id=/"TreeInput/" style=/"BORDER-RIGHT: 1px solid; BORDER-TOP: 1px solid; FONT-SIZE: 12px; Z-INDEX: 9; BORDER-LEFT: 1px solid; BORDER-BOTTOM: 1px solid;/" οnkeypress=/"TreeInputKey();/" οnblur=/"TreeInputBlur();/">'/r/n";
   strTree+="TreeHTML1+='<input type=/"hidden/" id=/"TreeInput1/" id=/"TreeInput1/">'/r/n";
   strTree+="TreeHTML1+='</div>'/r/n";
   strTree+="/r/n";
   strTree+=" document.write(TreeHTML1);/r/n";
   strTree+="/r/n";
   strTree+="var objSelected=''/r/n";

   //快速定位
   strTree+="function tmpGotoID(id)/n";
   strTree+="{/n";
   strTree+=" obj=document.all.tags('TABLE');/n";
   strTree+=" for(i=0;i<obj.length;i++)/n";
   strTree+=" {/n";
   strTree+="  if(obj[i].id==id)/n";
   strTree+="  {/n";
   strTree+="   obj=obj[i];/n";
   strTree+="   break;/n";
   strTree+="  }/n";
   strTree+=" }/n";
   strTree+=" obj.rows[0].cells[1].innerHTML='<img width=16 height=16 border=0 src='+oIMGS[2].src+'>';/n";
   strTree+=" //obj.rows[0].cells[2].childNodes[0].style.backgroundColor='blue';/n";
   strTree+=" //obj.rows[0].cells[2].childNodes[0].style.color='white';/n";
   strTree+=" objSelected=obj.rows[0].cells[2].childNodes[0];/n";
   strTree+=" /n";
   strTree+=" obj=obj.parentElement.parentElement.parentElement.parentElement;/n";
   strTree+=" while(!(obj.id=='TreeTable'))/n";
   strTree+=" {/n";
   strTree+="  obj.rows[1].style.display='inline';/n";
   strTree+="  obj.rows[0].cells[0].childNodes[0].src='ope.gif';/n";
   strTree+="  obj=obj.parentElement.parentElement.parentElement.parentElement;/n";
   strTree+=" }/n";
   strTree+=" /n";
   strTree+="}/n";

   string mm=m_GotoID+"";
   if(!(mm.Trim()=="")) //快速定位
    strTree+="tmpGotoID('"+mm+"');/n";

   //右键弹出菜单
   strTree+="function TreePopMenu()/r/n";
   strTree+="{/r/n";
   strTree+=" if(event.srcElement.tagName=='SPAN')/r/n";
   strTree+=" {/r/n";
   //根节点禁止右键菜单
   if(m_TreeRootPopMenu==false)
   {
    strTree+="  if(event.srcElement.parentElement.parentElement.id=='TreeViewRoot')/n";
    strTree+="   return;/n";
   }
   strTree+="  if (!(objSelected==''))/r/n";
   strTree+="  {/r/n";
   strTree+="   loc=objSelected.parentElement.parentElement.cells.length-2/r/n";
   strTree+="   objSelected.style.backgroundColor='';/r/n";
   strTree+="   objSelected.style.color='';/r/n";
   strTree+="   if(!(objSelected.parentElement.parentElement.parentElement.parentElement.id=='TreeTable'))/n";
   strTree+="    objSelected.parentElement.parentElement.cells[loc].innerHTML=oIMGS[1].outerHTML/r/n";
   strTree+="  }/r/n";
   strTree+="  objSelected=event.srcElement;/r/n";
   strTree+="  loc=objSelected.parentElement.parentElement.cells.length-2/r/n";
   strTree+="  objSelected.style.backgroundColor='blue';/r/n";
   strTree+="  objSelected.style.color='white'/r/n";
   strTree+="  DisplayMenu(MenuItemArray);/r/n";
   strTree+="  PopMenu();/r/n";
   strTree+=" }/r/n";
   strTree+="}/r/n";
 
   strTree+="function TreeNodeClick()/r/n";
   strTree+="{/r/n";
   strTree+=" /r/n";
   strTree+=" if(event.srcElement.tagName=='SPAN')/r/n";
   strTree+=" {/r/n";
   strTree+="  if (!(objSelected==''))/r/n";
   strTree+="  {/r/n";
   strTree+="   loc=objSelected.parentElement.parentElement.cells.length-2/r/n";
   strTree+="   objSelected.style.backgroundColor='';/r/n";
   strTree+="   objSelected.style.color='';/r/n";
   strTree+="   if(!(objSelected.parentElement.parentElement.parentElement.parentElement.id=='TreeTable'))/n";
   strTree+="    objSelected.parentElement.parentElement.cells[loc].innerHTML=oIMGS[1].outerHTML/r/n";
   strTree+="  }/r/n";
   strTree+="  objSelected=event.srcElement;/r/n";
   strTree+="  loc=objSelected.parentElement.parentElement.cells.length-2/r/n";
   strTree+="  objSelected.style.backgroundColor='blue';/r/n";
   strTree+="  objSelected.style.color='white'/r/n";
   strTree+="  if(!(objSelected.parentElement.parentElement.parentElement.parentElement.id=='TreeTable'))/n";
   strTree+="   objSelected.parentElement.parentElement.cells[loc].innerHTML=oIMGS[2].outerHTML/r/n";
   strTree+="  cmdstr=objSelected.parentElement.parentElement.CMD;/r/n";
   strTree+="  if(!(cmdstr==''))/r/n";
   strTree+="   eval(cmdstr);/r/n";
   strTree+="  return;/r/n";
   strTree+=" }/r/n";
   strTree+=" /r/n";
   strTree+=" if(event.srcElement.tagName=='IMG')/r/n";
   strTree+=" {/r/n";
   strTree+="  obj=event.srcElement;/r/n";
   strTree+="  if(obj.src.indexOf('clo.gif')>0)/r/n";
   strTree+="  {/r/n";
   strTree+="   obj.src=/"ope.gif/"/r/n";
   strTree+="   obj.parentElement.parentElement.parentElement.rows[1].style.display='inline';/r/n";
   strTree+="   return/r/n";
   strTree+="  }/r/n";
   strTree+="  if(obj.src.indexOf('ope.gif')>0)/r/n";
   strTree+="  {/r/n";
   strTree+="   obj.src=/"clo.gif/"/r/n";
   strTree+="   obj.parentElement.parentElement.parentElement.rows[1].style.display='none';/r/n";
   strTree+="   return;/r/n";
   strTree+="  }/r/n";
   strTree+=" }/r/n";
   strTree+="}/r/n";

   strTree+="function TreePostChange(v1){" ;
   strTree+=" document.TreeChangedFORM.ChangedValue.value=v1;";
   strTree+=" document.TreeChangedFORM.submit();}/n";


   //删除目录
   strTree+="function TreeDelDir(){/n";
   strTree+=" objNode=objBeforePop.parentElement.parentElement.parentElement.parentElement;/r/n";
   strTree+=" objNodeParent=objNode.parentElement;/r/n";
   strTree+=" if(objNode.rows.length>1)/r/n";
   strTree+=" {/r/n";
   strTree+="  objNode.rows[1].style.display='inline';/r/n";
   strTree+="  objNode.rows[0].cells[0].childNodes[0].src='ope.gif'/r/n";
   strTree+="  objNode.rows[0].cells[1].childNodes[0].src=oIMGS[2].src;/r/n";
   strTree+="  alert(strTreeUndeleteDir)/r/n";
   strTree+="  return;/r/n";
   strTree+=" }/r/n";
   strTree+=" TreePostChange('DELETE?'+objNode.id);}/n";

   strTree+="function TreeDelDirEnabled()/r/n";
   strTree+="{/r/n";
   strTree+=" objNode=objBeforePop.parentElement.parentElement.parentElement.parentElement;/r/n";
   strTree+=" objNodeParent=objNode.parentElement;/r/n";
   strTree+=" if(objNode.rows.length>1)/r/n";
   strTree+=" {/r/n";
   strTree+="  objNode.rows[1].style.display='inline';/r/n";
   strTree+="  objNode.rows[0].cells[0].childNodes[0].src='ope.gif'/r/n";
   strTree+="  objNode.rows[0].cells[1].childNodes[0].src=oIMGS[2].src;/r/n";
   strTree+="  alert(strTreeUndeleteDir)/r/n";
   strTree+="  return;/r/n";
   strTree+=" }/r/n";
   strTree+=" TreePostChange('DEL?'+objNode.id);";
   strTree+=" objNodeParent.removeChild(objNode);/r/n";
   strTree+=" if(objNodeParent.childNodes.length==0)/r/n";
   strTree+=" {/r/n";
   strTree+="  //空子目录/r/n";
   strTree+="  obj1=objNodeParent.parentElement.parentElement.parentElement/r/n";
   strTree+="  obj1.deleteRow(1);/r/n";
   strTree+="obj1.rows[0].cells[0].childNodes[0].src='cro.gif';/r/n";
   strTree+="  obj1p=obj1.parentElement;/r/n";
   strTree+=" /r/n";
   strTree+="  if(obj1p.childNodes[obj1p.childNodes.length-1]==obj1)/r/n";
   strTree+="  {/r/n";
   strTree+="   //目录底部/r/n";
   strTree+="   obj1.rows[0].cells[0].childNodes[0].src='croend.gif';/r/n";
   strTree+="   obj1.rows[0].cells[0].style.cursor='';/r/n";
   strTree+="  }/r/n";
   strTree+="  return/r/n";
   strTree+=" }/r/n";
   strTree+=" /r/n";
   strTree+=" //设置上层目录类型/r/n";
   strTree+=" obj1=objNodeParent.childNodes[objNodeParent.childNodes.length-1];/r/n";
   strTree+=" if(obj1.rows.length==2)/r/n";
   strTree+=" {/r/n";
   strTree+="  obj1.rows[1].cells[0].background='';/r/n";
   strTree+=" }/r/n";
   strTree+=" else/r/n";
   strTree+=" {/r/n";
   strTree+="  obj1.rows[0].cells[0].childNodes[0].src='croend.gif';/r/n";
   strTree+=" }/r/n";
   strTree+="}/r/n";
   
   //重命名
   strTree+="//重命名/r/n";
   strTree+="var oTreeInpt=TreeInputParent.childNodes[0];/r/n";
   strTree+="var oTreeInpt1=TreeInputParent.childNodes[1];/r/n";
   
   //查询是否能够Rename
   strTree+="function TreeRenDir()/r/n";
   strTree+="{/r/n";
   strTree+=" objRen=objBeforePop;/r/n";
   strTree+=" TreePostChange('RENAME?'+objRen.parentElement.parentElement.parentElement.parentElement.id);}/n";

   strTree+="function TreeRenDirEnabled()/r/n";
   strTree+="{/r/n";
   strTree+=" objRen=objBeforePop;/r/n";
   strTree+=" if(objRen.parentElement.parentElement.parentElement.parentElement.id=='TreeTable')/n";
   strTree+="  return;/n";
   strTree+=" oTreeInpt.value =objRen.innerText;/r/n";
   strTree+=" oTreeInpt1.value =objRen.innerText;/r/n";
   strTree+=" objRen.innerText='';/r/n";
   strTree+=" objRen.appendChild (oTreeInpt);/r/n";
   strTree+=" oTreeInpt=objRen.childNodes[0];/r/n";
   strTree+=" oTreeInpt.focus();/r/n";
   strTree+="}/r/n";
   strTree+="/r/n";

   strTree+="var NewItem=0;/r/n";
   strTree+="var lNewItem=false;/n";

   strTree+="function TreeAddDir()/r/n";
   strTree+="{/r/n";
   strTree+=" objNode=objBeforePop.parentElement.parentElement.parentElement.parentElement;/r/n";
   strTree+=" objBeforePop.style.backgroundColor='';/r/n";
   strTree+=" objBeforePop.style.color='';/r/n";
   strTree+=" TreeCreatTable('NewItem'+NewItem,objNode.id);/r/n";
   strTree+=" TreePostChange('NEWITEM?'+objNode.id);}/n";

   strTree+="function TreeAddDirEnabled()/r/n";
   strTree+="{/r/n";
   strTree+=" objNode=objBeforePop.parentElement.parentElement.parentElement.parentElement;/r/n";
   strTree+=" objBeforePop.style.backgroundColor='';/r/n";
   strTree+=" objBeforePop.style.color='';/r/n";
   strTree+=" TreeCreatTable('NewItem'+NewItem,objNode.id);/r/n";
   strTree+=" NewItem++;/r/n";
   strTree+=" /r/n";
   strTree+=" if(objNode.rows.length==1)/r/n";
   strTree+=" {/r/n";
   strTree+="  //建立下一行/r/n";
   strTree+="  oTr=objNode.insertRow();/r/n";
   strTree+="  for(m=0;m<objNode.rows[0].cells.length-1;m++)/r/n";
   strTree+="  {/r/n";
   strTree+="   oTd=oTr.insertCell();/r/n";
   strTree+="  }/r/n";
   strTree+="  oTd.colSpan=2/r/n";
   strTree+="/r/n";
   strTree+="  if(!(objNode.parentElement.childNodes[objNode.parentElement.childNodes.length-1]==objNode))/r/n";
   strTree+="  {/r/n";
   strTree+="   objNode.rows[1].cells[0].background='lin.gif';/r/n";
   strTree+="  }/r/n";
   strTree+="  objNode.rows[0].cells[0].innerHTML=/"<img src=ope.gif width=20 height=18>/";/r/n";
   strTree+="  objNode.rows[0].cells[0].style.cursor='hand';/r/n";
   strTree+=" }/r/n";
   strTree+=" else/r/n";
   strTree+=" {/r/n";
   strTree+="  if(!(objNode.id=='TreeTable')){/n";
   strTree+="  objNode.rows[1].style.display='inline';/r/n";
   strTree+="  objNode.rows[0].cells[0].innerHTML=/"<img src=ope.gif width=20 height=18>/";/r/n";
   strTree+="  if(!(objNode.parentElement.childNodes[objNode.parentElement.childNodes.length-1]==objNode))/r/n";
   strTree+="   objNode.childNodes[objNode.childNodes.length-1].rows[1].cells[0].background='lin.gif';/r/n";
   strTree+="  }/n}/r/n";
   strTree+=" /r/n";
   strTree+=" obj1=objNode.rows[1].cells[objNode.rows[1].cells.length-1];/r/n";
   strTree+=" if(obj1.childNodes.length>0)/r/n";
   strTree+=" {/r/n";
   strTree+="  obj=obj1.childNodes[obj1.childNodes.length-1];/r/n";
   strTree+="  if(obj.rows[0].cells[0].innerHTML.indexOf('croend.gif')>-1)/r/n";
   strTree+="   obj.rows[0].cells[0].innerHTML=/"<img src=cro.gif>/";/r/n";
   strTree+="  else/r/n";
   strTree+="   obj.rows[1].cells[0].background='lin.gif';/r/n";
   strTree+="  /r/n";
   strTree+=" }/r/n";
   strTree+=" obj1.insertAdjacentElement('beforeEnd',oTb);/r/n";
   strTree+=" objBeforePop=oTb.rows[0].cells[2].childNodes[0];/r/n";
   strTree+=" lNewItem=true;/n TreeRenDirEnabled();/r/n";
   strTree+="}/r/n";
   strTree+="/r/n";

   strTree+="function TreeCreatTable(ID,ParID)/r/n";
   strTree+="{/r/n";
   strTree+=" oTb=document.createElement (/"TABLE/")/r/n";
   strTree+=" oTb.width='100%';/r/n";
   strTree+=" oTb.border=0;/r/n";
   strTree+=" oTb.cellPadding =0;/r/n";
   strTree+=" oTb.cellSpacing =0;/r/n";
   strTree+=" oTb.id=ID;/r/n";
   strTree+=" oTb.style.fontSize='12px';/r/n";
   strTree+=" /r/n";
   strTree+=" oTr=oTb.insertRow();/r/n";
   strTree+=" oTr.setAttribute('CMD',/"/");/r/n";
   strTree+=" /r/n";
   strTree+=" oTd=oTr.insertCell();/r/n";
   strTree+=" oTd.width=20;/r/n";
   strTree+=" oTd.height=18;/r/n";
   strTree+=" oTd.innerHTML=/"<img src=croend.gif width=20 height=18>/"/r/n";
   strTree+=" /r/n";
   strTree+=" oTd=oTr.insertCell();/r/n";
   strTree+=" oTd.width=16;/r/n";
   strTree+=" oTd.innerHTML=oIMGS[1].outerHTML;/r/n";
   strTree+=" oTd.align='center'/r/n";
   strTree+=" oTd.style.paddingLeft='4px';/r/n";
   strTree+=" /r/n";
   strTree+=" oTd=oTr.insertCell();/r/n";
   strTree+=" oTd.width='98%'/r/n";
   strTree+=" oTd.innerHTML='<span>'+strTreeNewItem +NewItem+'</span>';/r/n";
   strTree+=" oTd.style.cursor='hand';/r/n";
   strTree+=" oTd.style.paddingLeft='4px';/r/n";
   strTree+="}/r/n";
   strTree+="/r/n";
   
   strTree+="//重命名键判断/r/n";
   strTree+="function TreeInputKey()/r/n";
   strTree+="{/r/n";
   strTree+=" if(event.keyCode==13)/r/n";
   strTree+=" {/r/n";
   strTree+="  TreeInputBlur();/r/n";
   strTree+=" }/r/n";
   strTree+=" if(event.keyCode==27)/r/n";
   strTree+=" {/r/n";
   strTree+="  o1=oTreeInpt.parentElement;/r/n";
   strTree+="  TreeInputParent.appendChild (oTreeInpt);/r/n";
   strTree+="  o1.innerText =oTreeInpt1.value;/r/n";
   strTree+=" }/r/n";
   strTree+="}/r/n";
   strTree+="/r/n";
   
   strTree+="//判断新内容/r/n";
   strTree+="function TreeInputBlur()/r/n";
   strTree+="{/r/n";
   strTree+=" if(oTreeInpt.value=='')/r/n";
   strTree+=" {/r/n";
   strTree+="  alert('名称不能为空');/r/n";
   strTree+="  oTreeInpt.focus ();/r/n";
   strTree+="  return;/r/n";
   strTree+=" }/r/n";
   strTree+=" o3=oTreeInpt.parentElement.parentElement.parentElement.parentElement.parentElement/r/n";
   strTree+=" o2=o3.parentElement/r/n";
   strTree+=" for(i=0;i<o2.childNodes.length;i++)/r/n";
   strTree+=" {/r/n";
   strTree+="  //alert(o2.childNodes[i].rows[0].cells[2].innerText)/r/n";
   strTree+="  if(o2.childNodes[i].rows[0].cells[2].innerText==oTreeInpt.value)/r/n";
   strTree+="  {/r/n";
   strTree+="   alert('名称重复');/r/n";
   strTree+="   oTreeInpt.focus ();/r/n";
   strTree+="   return;/r/n";
   strTree+="  }/r/n";
   strTree+=" }/r/n";
   strTree+="if(!lNewItem){";
   strTree+="TreePostChange('REN?'+o3.id+'?'+oTreeInpt.value);}/n";
   strTree+="else{/n";
   strTree+="TreePostChange('NEW?'+o3.id+'?'+oTreeInpt.value+'?'+o2.parentElement.parentElement.parentElement.id);lNewItem=false;}/n";
   strTree+=" o1=oTreeInpt.parentElement;/r/n";
   strTree+=" TreeInputParent.appendChild (oTreeInpt);/r/n";
   strTree+=" o1.innerText =oTreeInpt.value;/r/n";
   strTree+="}/r/n</script>";
   return strTree;
  }


  private void CreateImages()
  {
   string fp=this.Parent.Page.Server.MapPath(".")+"//";

   string strOPE="R0lGODlhFAASAJECAAAAAICAgP///wAAACH5BAEAAAIALAAAAAAUABIAAAInlI+pK8EPY5MUhotxdIo/j4CLaJCJA6Tp5LTnuMGW/GVZhXf5rj8FADs=";
   SaveImage(strOPE,fp+"ope.gif");

   string strCRO ="R0lGODlhFAASAIABAICAgP///yH5BAEAAAEALAAAAAAUABIAAAIcjI+pG8APY5O0uorfzRy5P4EdtI1caWJoSq1IAQA7";
   SaveImage(strCRO,fp+"cro.gif");

   string strCROEND="R0lGODlhFAASAIABAICAgP///yH5BAEAAAEALAAAAAAUABIAAAIYjI+pG8APY5O0uorfzRy5P4HdSJbmiUoFADs=";
   SaveImage(strCROEND,fp+"croend.gif");

   string strLIN="R0lGODlhFAASAIABAICAgP///yH5BAEAAAEALAAAAAAUABIAAAIYjI+pG8APY5O0uorfzRzt3n1gJo6WGUIFADs=";
   SaveImage(strLIN,fp+"lin.gif");

   string strCLO="R0lGODlhFAASAJECAAAAAICAgP///wAAACH5BAEAAAIALAAAAAAUABIAAAIqlI+pK8EPY5MUhotxdIo/DxweA4qbAKTp5LRJaYwLPFnzlmXV3vF+/ygAADs=";
   SaveImage(strCLO,fp+"clo.gif");
  }


  private void SaveImage(string strFileB64,string strFileName)
  {
   FileStream oFS=new FileStream (strFileName,FileMode.Create);
   byte[] bDes=Convert.FromBase64String (strFileB64);
   oFS.Write(bDes,0,bDes.Length );
   oFS.Close ();
  }
  /// <summary>
  /// 生成目录移动脚本
  /// </summary>
  /// <returns></returns>
  private string TableTreeMove()
  {
   return "var lmousedown=false;/n"
    +"var createspan='';/n"
    +"var redobj='';/n"
    +"var selectednode=''/n"
    +"function TableTreemv()/n"
    +"{/n"
    +" if(lmousedown==false)/n"
    +"  return;/n"
    +" createspan.style.left=event.x;/n"
    +" createspan.style.top=event.y;/n"
    +" if(event.srcElement.tagName=='SPAN' && event.srcElement.style.cursor=='hand')/n"
    +" {/n"
    +"  event.srcElement.style.color='red';/n"
    +"  if(redobj!='' && redobj!=event.srcElement && redobj.style.color=='red' )/n"
    +"  {/n"
    +"   redobj.style.color='';/n"
    +"   /n"
    +"  }/n"
    +"  redobj=event.srcElement;/n"
    +"  /n"
    +" }/n"
    +"}/n"
    +"function TableTreemu()/n"
    +"{/n"
    +" if(lmousedown==false)/n"
    +"  return;/n"
    +" lmousedown=false;/n"
    +" if(createspan !='')/n"
    +" {/n"
    +"  document.body.removeChild(createspan);/n"
    +"  createspan='';/n"
    +" }/n"
    +" if(event.srcElement.tagName=='SPAN' && event.srcElement.style.cursor=='hand')/n"
    +" {/n"
    +"  if(event.srcElement.parentElement.parentElement.parentElement.parentElement.rows.length==1)/n"
    +"  {/n"
    +"   tr=event.srcElement.parentElement.parentElement.parentElement.parentElement.insertRow();/n"
    +"   tr.insertCell();/n"
    +"   td=tr.insertCell();td.colSpan=2;/n"
    +"  }/n"
    +"  event.srcElement.parentElement.parentElement.parentElement.parentElement.rows[1].cells[1].appendChild(selectednode);/n"
    +" }/n"
    +"}/n"
    +"function TableTreemd()/n"
    +"{/n"
    +" if(event.srcElement.tagName=='SPAN' && event.srcElement.style.cursor=='hand')/n"
    +" {/n"
    +"  lmousedown=true;/n"
    +"  //event.srcElement.innerHTML='aaa';/n"
    +"  selectednode=event.srcElement.parentElement.parentElement.parentElement.parentElement;/n"
    +"  TableTreeCreateObject();/n"
    +" }/n"
    +"}/n"
    +"function TableTreeCreateObject()/n"
    +"{/n"
    +" o1=document.createElement('SPAN');/n"
    +" o1.innerText=selectednode.innerText;/n"
    +" ///n"
    +" //o1.style.position='absloute';/n"
    +" o1.style.top=event.y;/n"
    +" o1.style.left =event.x;/n"
    +" document.body.appendChild(o1);/n"
    +" o1.style.position='absolute';/n"
    +" createspan=o1;/n"
    +"}/n";
  }

 }


}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值