温馨提示:代码在线浏览功能只能做为源码浏览参考,如果想更进一步了解该代码请下载:无限级树形菜单(Sql数据库)
当前文件:
SqlTree/DefaultTree.aspx.cs,打开代码结构图
SqlTree/DefaultTree.aspx.cs,打开代码结构图1using System; 2
using System.Data; 3
using System.Configuration; 4
using System.Collections; 5
using System.Web; 6
using System.Web.Security; 7
using System.Web.UI; 8
using System.Web.UI.WebControls; 9
using System.Web.UI.WebControls.WebParts; 10
using System.Web.UI.HtmlControls; 11
using System.Data.SqlClient; 12
using System.Threading; 13
14
//该源码下载自www.51aspx.com(51aspx.com) 15
16
public partial class DefaultTree : System.Web.UI.Page 17
{ 18
19
string sql = null; 20
SqlDataAdapter da = null; 21
SqlConnection con = new SqlConnection("server=(local);database=GHRQ;uid=sa;pwd=sa"); 22
int j = 0; 23
int count = 0; 24
int depth = 0; 25
ArrayList dep = new ArrayList(); 26
DataSet TreeTable = new DataSet(); 27
public string html = ""; 28
29
protected void Page_Load(object sender, EventArgs e) 30
{ 31
32
if (!Page.IsPostBack) 33
{ 34
35
36
//GetUserName("admin"); 37
} 38
} 39
40
41
42
43
//判断父亲接点是否还有兄弟 44
public bool JudgeBrother(string current, int i) 45
{ 46
string nextnode; 47
bool flag =true; 48
while (true) 49
{ 50
i++; 51
if (i == count - 1) 52
{ 53
break; 54
} 55
nextnode = TreeTable.Tables[0].Rows[i]["ID"].ToString().Trim(); 56
if (nextnode.Length > current.Length) //比他长可能是叶子,在下一级 57
{ 58
continue; 59
} 60
else if (nextnode.Length < current.Length) 61
{ 62
break; 63
} 64
else //有兄弟 65
{ 66
flag = false; 67
break; 68
} 69
70
} 71
return flag; 72
73
} 74
//有兄弟是false; 75
76
public void GetUserName(string username) 77
{ 78
int i = 1; 79
da = new SqlDataAdapter("select * from MenuFunc123 order by ID", con); 80
da.Fill(TreeTable); 81
this.count = TreeTable.Tables[0].Rows.Count; 82
83
Response.Write( "<div class='stylediv'onClick=ClickMenu('maindiv','nolines','0')>"); 84
Response.Write( "<img id=nolines0 src='plus_nolines.gif' width='18px' height='18px' align='absmiddle' />"); 85
Response.Write( "<img id=open0 src='open.gif' width='16px' height='16px' align='absmiddle' />"); 86
Response.Write( "<a onmousemove='ChangeColora(this)' onmouseleave='ChangeColorb(this)'><span class='stylespan'>港华燃气</span></a></div>"); 87
Response.Write( "<div id='maindiv'>"); 88
89
Response.Write( "<div class='stylediv'onClick=ClickMenu('div_" + i.ToString() + "','plus','" + i.ToString() + "')>"); 90
Response.Write( "<img src='empty.gif' width='18px' height='18px' align='absmiddle' />"); 91
for (int mm = depth; mm >0; mm--) 92
{ 93
Response.Write("<img src='line.gif' width='18px' height='18px' align='absmiddle' />"); 94
} 95
Response.Write( "<img id=plus" + i.ToString() + " src='plus.gif' width='18px' height='18px' align='absmiddle' />"); 96
Response.Write( "<img id=open" + i.ToString() + " src='open.gif' width='16px' height='16px' align='absmiddle' />"); 97
Response.Write( "<a onmousemove='ChangeColora(this)' onmouseleave='ChangeColorb(this)'>" + "<span class='stylespan'>" + TreeTable.Tables[0].Rows[i]["FuncName"].ToString().Trim() + "</SPAN></a></div>"); 98
Response.Write( "<div id='div_" + i.ToString() + "' style='display: none'>"); 99
this.depth++; //第一级 100
101
dep.Add(false); 102
//string ff = dep[0].ToString(); 103
CreatTrees(TreeTable.Tables[0].Rows[1]["ID"].ToString().Trim(), TreeTable.Tables[0].Rows[2]["ID"].ToString().Trim(), TreeTable.Tables[0].Rows[2]["FuncName"].ToString().Trim(), 2,false); 104
Response.Write( "</div>"); 105
Response.Write( "</div>"); 106
} 107
108
//flag=true 表示无兄弟 109
void CreatTrees(string por, string current, string currentname, int i,bool flag) //i的位置跟current 一样 110
{ 111
if (i == count - 1) //说名是最后一个 112
{ 113
Response.Write( "<div class='stylediv'>"); 114
Response.Write("<img src='empty.gif' width='18px' height='18px' align='absmiddle' />"); 115
for (int mm = depth; mm > 0; mm--) 116
{ 117
if (flag && mm == 1 && depth < 2) 118
{ 119
Response.Write("<img src='empty.gif' width='18px' height='18px' align='absmiddle' />"); 120
break; 121
} 122
Response.Write("<img src='line.gif' width='18px' height='18px' align='absmiddle' />"); 123
} 124
Response.Write( "<img src='joinbottom.gif' width='18px' height='18px' align='absmiddle' />"); 125
Response.Write( "<img src='folder.gif' width='16px' height='16px' align='absmiddle' />"); 126
Response.Write( "<a target=\"mainFrame\" onmousemove='ChangeColora(this)' onmouseleave='ChangeColorb(this)' href='JumpPage.htm?page=" + TreeTable.Tables[0].Rows[i]["FuncUrl"].ToString().Trim() + "'>" + "<span class='stylespan'> " + currentname + "</span></a></div>"); 127
} 128
else 129
{ 130
string nextnode = TreeTable.Tables[0].Rows[i + 1]["ID"].ToString().Trim(); 131
if (current.Length > por.Length) //比他长可能是叶子,在下一级 132
{ 133
134
if (current.Length < nextnode.Length) //说名他也是一个父亲接点 135
{ 136
137
Response.Write( "<div class='stylediv'onClick=ClickMenu('div_" + i.ToString() + "','plus','" + i.ToString() + "')>"); 138
Response.Write( "<img src='empty.gif' width='18px' height='18px' align='absmiddle' />"); 139
flag=JudgeBrother(current, i); 140
141
for (int mm = depth; mm > 0; mm--) 142
{ 143
if (flag&&mm==1&&depth<2) 144
{ 145
Response.Write("<img src='empty.gif' width='18px' height='18px' align='absmiddle' />"); 146
break; 147
} 148
Response.Write("<img src='line.gif' width='18px' height='18px' align='absmiddle' />"); 149
} 150
Response.Write( "<img id=plus" + i.ToString() + " src='plus.gif' width='18px' height='18px' align='absmiddle' />"); 151
Response.Write( "<img id=open" + i.ToString() + " src='open.gif' width='16px' height='16px' align='absmiddle' />"); 152
Response.Write( "<a onmousemove='ChangeColora(this)' onmouseleave='ChangeColorb(this)'>" + "<span class='stylespan'>" + TreeTable.Tables[0].Rows[i]["FuncName"].ToString().Trim() + "</SPAN></a></div>"); 153
Response.Write( "<div id='div_" + i.ToString() + "' style='display: none'>"); 154
155
this.depth++; 156
dep.Add(flag); 157
CreatTrees(current, TreeTable.Tables[0].Rows[i + 1]["ID"].ToString().Trim(), TreeTable.Tables[0].Rows[i + 1]["FuncName"].ToString().Trim(), i + 1,flag); 158
159
} 160
else if (current.Length == nextnode.Length)//--------------------他就是叶子------------ 161
{ 162
//Response.Write( "<div class='treenode" + depth.ToString() + "'><img src='style/icons/folder.gif' /><a target=\"mainFrame\" href='JumpPage.htm?page=" + TreeTable.Tables[0].Rows[i]["FuncUrl"].ToString().Trim() + "'>" + " " + currentname + "</a></div>"; 163
Response.Write( "<div class='stylediv'>"); 164
Response.Write( "<img src='empty.gif' width='18px' height='18px' align='absmiddle' />"); 165
166
//for (int mm = depth; mm > 0; mm--) 167
//{ 168
// if (flag && mm == 1) 169
// { 170
// Response.Write("<img src='empty.gif' width='18px' height='18px' align='absmiddle' />"); 171
// break; 172
// } 173
// Response.Write("<img src='line.gif' width='18px' height='18px' align='absmiddle' />"); 174
//} 175
int nn = 0; 176
for (int mm = depth; mm > 0; mm--) 177
{ 178
179
if (flag && mm == 1) 180
{ 181
Response.Write("<img src='empty.gif' width='18px' height='18px' align='absmiddle' />"); 182
break; 183
} 184
if (dep[nn].ToString() == "False") 185
Response.Write("<img src='line.gif' width='18px' height='18px' align='absmiddle' />"); 186
if (dep[nn++].ToString() == "True") 187
Response.Write("<img src='empty.gif' width='18px' height='18px' align='absmiddle' />"); 188
} 189
Response.Write( "<img src='join.gif' width='18px' height='18px' align='absmiddle' />"); 190
Response.Write( "<img src='folder.gif' width='16px' height='16px' align='absmiddle' />"); 191
Response.Write( "<a target=\"mainFrame\" onmousemove='ChangeColora(this)' onmouseleave='ChangeColorb(this)' href='JumpPage.htm?page=" + TreeTable.Tables[0].Rows[i]["FuncUrl"].ToString().Trim() + "'>" + "<span class='stylespan'> " + currentname + "</span></a></div>"); 192
CreatTrees(current, TreeTable.Tables[0].Rows[i + 1]["ID"].ToString().Trim(), TreeTable.Tables[0].Rows[i + 1]["FuncName"].ToString().Trim(), i + 1, flag); 193
} 194
else //长度比下一个大,下一个在上级,又是叶子。 195
{ 196
//Response.Write( "<div class='treenode" + depth.ToString() + "'><img src='style/icons/folder.gif' /><a target=\"mainFrame\" href='JumpPage.htm?page=" + TreeTable.Tables[0].Rows[i]["FuncUrl"].ToString().Trim() + "'>" + " " + currentname + "</a></div>"; 197
Response.Write( "<div class='stylediv'>"); 198
Response.Write( "<img src='empty.gif' width='18px' height='18px' align='absmiddle' />"); 199
200
for (int mm = depth; mm > 0; mm--) 201
{ 202
if (flag && mm == 1) 203
{ 204
Response.Write("<img src='empty.gif' width='18px' height='18px' align='absmiddle' />"); 205
break; 206
} 207
Response.Write("<img src='line.gif' width='18px' height='18px' align='absmiddle' />"); 208
} 209
Response.Write( "<img src='joinbottom.gif' width='18px' height='18px' align='absmiddle' />"); 210
Response.Write( "<img src='folder.gif' width='16px' height='16px' align='absmiddle' />"); 211
Response.Write( "<a target=\"mainFrame\" onmousemove='ChangeColora(this)' onmouseleave='ChangeColorb(this)' href='JumpPage.htm?page=" + TreeTable.Tables[0].Rows[i]["FuncUrl"].ToString().Trim() + "'>" + "<span class='stylespan'> " + currentname + "</span></a></div>"); 212
213
CreatTrees(current, TreeTable.Tables[0].Rows[i + 1]["ID"].ToString().Trim(), TreeTable.Tables[0].Rows[i + 1]["FuncName"].ToString().Trim(), i + 1, flag); 214
215
} 216
217
} 218
else if (current.Length < por.Length)//比他短,他出在上一及 219
{ 220
221
222
int j = (por.Length) / 2 - (current.Length) / 2; 223
while (j > 0) 224
{ 225
Response.Write( "</div>"); 226
this.depth--; 227
this.dep.RemoveAt(this.depth); 228
j--; 229
230
} 231
if (current.Length < nextnode.Length) //说名他也是一个父亲接点 232
{ 233
234
//Response.Write( "<div class='title" + depth.ToString() + "'onClick='ClickMenu(classa_" + i.ToString() + ",imgb_" + i.ToString() + ")' onmousemove='ChangeColora(b" + i.ToString() + ")' onmouseleave='ChangeColorb(b" + i.ToString() + ")'><img src='style/icons/folder.png' id='imgb_" + i.ToString() + "' /><a style='cursor: hand' id='b" + i.ToString() + "'>" + " " + currentname + "</a></div>"; // TreeTable.Tables[0].Rows[i]["FuncName"].ToString().Trim() 235
//Response.Write( "<div id='classa_" + i.ToString() + "' style='display: none'>"; 236
Response.Write( "<div class='stylediv'onClick=ClickMenu('div_" + i.ToString() + "','plus','" + i.ToString() + "')>"); 237
Response.Write( "<img src='empty.gif' width='18px' height='18px' align='absmiddle' />"); 238
flag = JudgeBrother(current, i); 239
for (int mm = depth; mm > 0; mm--) 240
{ 241
if (flag && mm == 1 && depth < 2) 242
{ 243
Response.Write("<img src='empty.gif' width='18px' height='18px' align='absmiddle' />"); 244
break; 245
} 246
Response.Write("<img src='line.gif' width='18px' height='18px' align='absmiddle' />"); 247
} 248
Response.Write( "<img id=plus" + i.ToString() + " src='plus.gif' width='18px' height='18px' align='absmiddle' />"); 249
Response.Write( "<img id=open" + i.ToString() + " src='open.gif'width='16px' height='16px' align='absmiddle' />"); 250
Response.Write( "<a onmousemove='ChangeColora(this)' onmouseleave='ChangeColorb(this)'>" + "<span class='stylespan'>" + TreeTable.Tables[0].Rows[i]["FuncName"].ToString().Trim() + "</SPAN></a></div>"); 251
Response.Write( "<div id='div_" + i.ToString() + "' style='display: none'>"); 252
253
this.depth++; 254
dep.Add(flag); 255





