欢迎光临
我们一直在努力

带右键菜单的树形控件(1)-ASP教程,ASP应用

建站超值云服务器,限时71元/月

用户自定义控件代码如下:

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.onclick=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\" onmousemove=\"dispmenuitem()\" onmouseout=\"if(!(objmenuitem==\\\\)){objmenuitem.parentelement.style.backgroundcolor=\\\\;objmenuitem.style.color=\\\\;}\" oncontextmenu=\"return false\" onclick=\"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;\" onkeypress=\"treeinputkey();\" onblur=\"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)
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 特别注意:本站所有转载文章言论不代表本站观点! 本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。未经允许不得转载:IDC资讯中心 » 带右键菜单的树形控件(1)-ASP教程,ASP应用
分享到: 更多 (0)

相关推荐

  • 暂无文章