温馨提示:代码在线浏览功能只能做为源码浏览参考,如果想更进一步了解该代码请下载:ExtenTree无限级树源码
当前文件:
ExtenTree/DefaultTree.aspx.cs[22K,2009-6-12 11:42:10],打开代码结构图
ExtenTree/DefaultTree.aspx.cs[22K,2009-6-12 11:42:10],打开代码结构图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
public partial class DefaultTree : System.Web.UI.Page 16
{ 17
18
19
SqlDataAdapter da = null; 20
SqlConnection con = new SqlConnection("server=(local);database=GHRQ;uid=sa;pwd=sa"); 21
ArrayList dep = new ArrayList(); 22
DataSet TreeTable = new DataSet(); 23
24
25
int j = 0; 26
int count = 0; 27
int depth = 0; 28
29
30
string none = "none"; //------------none 默认树全部认合上 blcok 全部展开 31
string plus = "plus.gif"; 32
bool checkBox = true; 33
//------------无checkbox 就为false 有的话就为true 34
35
36
protected void Page_Load(object sender, EventArgs e) 37
{ 38
39
//none = "blcok"; 40
//plus = "minus.gif"; 41
42
//checkBox = false; 43
GetTreeInformation("admin"); 44
45
} 46
47
//判断父亲接点是否还有兄弟 48
49
public bool JudgeBrother(string current, int i) 50
{ 51
string nextnode; 52
bool flag =true; 53
while (true) 54
{ 55
i++; 56
if (i == count - 1) 57
{ 58
break; 59
} 60
nextnode = TreeTable.Tables[0].Rows[i]["ID"].ToString().Trim(); 61
if (nextnode.Length > current.Length) //比他长可能是叶子,在下一级 62
{ 63
continue; 64
} 65
else if (nextnode.Length < current.Length) 66
{ 67
break; 68
} 69
else //有兄弟 70
{ 71
flag = false; 72
break; 73
} 74
75
} 76
return flag; 77
78
} 79
80
//有兄弟是false; 81
82
public void GetTreeInformation(string username) 83
{ 84
int i = 1; 85
da = new SqlDataAdapter("select * from MenuFunc123 order by ID", con); 86
da.Fill(TreeTable); 87
this.count = TreeTable.Tables[0].Rows.Count; 88
89
Response.Write( "<div class='stylediv'>"); 90
Response.Write( "<img id=nolines0 src='minus_nolines.gif' width='18px' height='18px' onClick=ClickMenu('maindiv','nolines','0') align='absmiddle' />"); 91
if (checkBox) 92
{ 93
Response.Write("<input id='Checkbox0' onClick=SelectBox('maindiv',this) type='checkbox' />"); 94
} 95
Response.Write( "<img id=open0 src='open.gif' width='16px' height='16px' align='absmiddle' />"); 96
Response.Write( "<a onmousemove='ChangeColora(this)' onmouseleave='ChangeColorb(this)'><span class='stylespan' id='span_0' > 港华燃气</span></a></div>"); 97
Response.Write("<div id='maindiv' belongCheckbox='Checkbox0' >"); //belongCheckbox='Checkbox0' 属于这个div 的checkbox 98
99
Response.Write( "<div class='stylediv'>"); 100
Response.Write( "<img src='empty.gif' width='18px' height='18px' align='absmiddle' />"); 101
for (int mm = depth; mm >0; mm--) //计算横向深度 添加竖线 102
{ 103
Response.Write("<img src='line.gif' width='18px' height='18px' align='absmiddle' />"); 104
} 105
Response.Write("<img id=plus" + i.ToString() + " src='" + plus + "' width='18px' height='18px' onClick=ClickMenu('div_" + i.ToString() + "','plus','" + i.ToString() + "') align='absmiddle' />"); 106
if (checkBox) 107
{ 108
Response.Write("<input id='Checkbox" + i.ToString() + "' onClick=SelectBox('div_" + i.ToString() + "',this) type='checkbox' />"); 109
//---------checkbox 上嵌套两个div ,最上方的div 保存了 checkbox 的 id 就是(belongCheckbox) 110
} 111
Response.Write( "<img id=open" + i.ToString() + " src='open.gif' width='16px' height='16px' align='absmiddle' />"); 112
Response.Write("<a onmousemove='ChangeColora(this)' onmouseleave='ChangeColorb(this)'>" + "<span class='stylespan' id='span_" + i.ToString() + "'> " + TreeTable.Tables[0].Rows[i]["FuncName"].ToString() + "</SPAN></a></div>"); 113
Response.Write("<div id='div_" + i.ToString() + "' belongCheckbox='Checkbox" + i.ToString() + "' style='display: " + none + "'>"); 114
this.depth++; //-----------------------------------第一级------------------------------ 115
116
dep.Add(false); 117
118
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); 119
Response.Write( "</div>"); 120
Response.Write( "</div>"); 121
} 122
123
//flag=true 表示无兄弟 124
void CreatTrees(string por, string current, string currentname, int i,bool flag) //i的位置跟current 一样 125
{ 126
if (i == count - 1) //说名是最后一个 127
{ 128
Response.Write( "<div class='stylediv'>"); 129
Response.Write("<img src='empty.gif' width='18px' height='18px' align='absmiddle' />"); 130
for (int mm = depth; mm > 0; mm--) 131
{ 132
if (flag && mm == 1 && depth < 2) 133
{ 134
Response.Write("<img src='empty.gif' width='18px' height='18px' align='absmiddle' />"); 135
break; 136
} 137
Response.Write("<img src='line.gif' width='18px' height='18px' align='absmiddle' />"); 138
} 139
Response.Write( "<img src='joinbottom.gif' width='18px' height='18px' align='absmiddle' />"); 140
if (checkBox) 141
{ 142
Response.Write("<input id='Checkbox" + i.ToString() + "' onClick=SelectBox('div_" + i.ToString() + "',this) type='checkbox' />"); 143
144
} 145
Response.Write( "<img src='folder.gif' width='16px' height='16px' align='absmiddle' />"); 146
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' id='span_" + i.ToString() + "'> " + currentname + "</span></a></div>"); 147
} 148
else 149
{ 150
string nextnode = TreeTable.Tables[0].Rows[i + 1]["ID"].ToString().Trim(); 151
if (current.Length > por.Length) //比他长可能是叶子,在下一级 152
{ 153
154
if (current.Length < nextnode.Length) //说名他也是一个父亲接点 155
{ 156
157
Response.Write( "<div class='stylediv'>"); 158
Response.Write( "<img src='empty.gif' width='18px' height='18px' align='absmiddle' />"); 159
flag=JudgeBrother(current, i); 160
161
for (int mm = depth; mm > 0; mm--) 162
{ 163
if (flag&&mm==1&&depth<2) 164
{ 165
Response.Write("<img src='empty.gif' width='18px' height='18px' align='absmiddle' />"); 166
break; 167
} 168
Response.Write("<img src='line.gif' width='18px' height='18px' align='absmiddle' />"); 169
} 170
Response.Write("<img id=plus" + i.ToString() + " src='" + plus + "' width='18px' height='18px' onClick=ClickMenu('div_" + i.ToString() + "','plus','" + i.ToString() + "') align='absmiddle' />"); 171
if (checkBox) 172
{ 173
Response.Write("<input id='Checkbox" + i.ToString() + "' onClick=SelectBox('div_" + i.ToString() + "',this) type='checkbox' />"); 174
175
} 176
Response.Write( "<img id=open" + i.ToString() + " src='open.gif' width='16px' height='16px' align='absmiddle' />"); 177
Response.Write("<a onmousemove='ChangeColora(this)' onmouseleave='ChangeColorb(this)'>" + "<span class='stylespan' id='span_" + i.ToString() + "'> " + TreeTable.Tables[0].Rows[i]["FuncName"].ToString().Trim() + "</SPAN></a></div>"); 178
Response.Write("<div id='div_" + i.ToString() + "' belongCheckbox='Checkbox" + i.ToString() + "' style='display: " + none + "'>"); 179
180
this.depth++; 181
dep.Add(flag); 182
CreatTrees(current, TreeTable.Tables[0].Rows[i + 1]["ID"].ToString().Trim(), TreeTable.Tables[0].Rows[i + 1]["FuncName"].ToString().Trim(), i + 1,flag); 183
184
} 185
else if (current.Length == nextnode.Length)//--------------------他就是叶子------------ 186
{ 187
188
Response.Write( "<div class='stylediv'>"); 189
Response.Write( "<img src='empty.gif' width='18px' height='18px' align='absmiddle' />"); 190
191
int nn = 0; 192
for (int mm = depth; mm > 0; mm--) 193
{ 194
195
if (flag && mm == 1) 196
{ 197
Response.Write("<img src='empty.gif' width='18px' height='18px' align='absmiddle' />"); 198
break; 199
} 200
if (dep[nn].ToString() == "False") 201
Response.Write("<img src='line.gif' width='18px' height='18px' align='absmiddle' />"); 202
if (dep[nn++].ToString() == "True") 203
Response.Write("<img src='empty.gif' width='18px' height='18px' align='absmiddle' />"); 204
} 205
Response.Write( "<img src='join.gif' width='18px' height='18px' align='absmiddle' />"); 206
if (checkBox) 207
{ 208
Response.Write("<input id='Checkbox" + i.ToString() + "' onClick=SelectBox('div_" + i.ToString() + "',this) type='checkbox' />"); 209
210
} 211
Response.Write( "<img src='folder.gif' width='16px' height='16px' align='absmiddle' />"); 212
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' id='span_" + i.ToString() + "'> " + currentname + "</span></a></div>"); 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
else //长度比下一个大,下一个在上级,又是叶子。 216
{ 217
218
Response.Write( "<div class='stylediv'>"); 219
Response.Write( "<img src='empty.gif' width='18px' height='18px' align='absmiddle' />"); 220
221
for (int mm = depth; mm > 0; mm--) 222
{ 223
if (flag && mm == 1) 224
{ 225
Response.Write("<img src='empty.gif' width='18px' height='18px' align='absmiddle' />"); 226
break; 227
} 228
Response.Write("<img src='line.gif' width='18px' height='18px' align='absmiddle' />"); 229
} 230
Response.Write( "<img src='joinbottom.gif' width='18px' height='18px' align='absmiddle' />"); 231
if (checkBox) 232
{ 233
Response.Write("<input id='Checkbox" + i.ToString() + "' onClick=SelectBox('div_" + i.ToString() + "',this) type='checkbox' />"); 234
235
} 236
Response.Write( "<img src='folder.gif' width='16px' height='16px' align='absmiddle' />"); 237
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' id='span_" + i.ToString() + "'> " + currentname + "</span></a></div>"); 238
239
CreatTrees(current, TreeTable.Tables[0].Rows[i + 1]["ID"].ToString().Trim(), TreeTable.Tables[0].Rows[i + 1]["FuncName"].ToString().Trim(), i + 1, flag); 240
241
} 242
243
} 244
else if (current.Length < por.Length)//比他短,他出在上一及 245
{ 246
247
248
int j = (por.Length) / 2 - (current.Length) / 2; 249
while (j > 0) 250
{ 251
Response.Write( "</div>"); 252
this.depth--; 253
this.dep.RemoveAt(this.depth); 254
j--; 255
256
} 257
if (current.Length < nextnode.Length) //说名他也是一个父亲接点 258
{ 259
260
261
Response.Write( "<div class='stylediv'>"); 262
Response.Write( "<img src='empty.gif' width='18px' height='18px' align='absmiddle' />"); 263
flag = JudgeBrother(current, i); 264
for (int mm = depth; mm > 0; mm--) 265
{ 266
if (flag && mm == 1 && depth < 2) 267
{ 268
Response.Write("<img src='empty.gif' width='18px' height='18px' align='absmiddle' />"); 269
break; 270
} 271
Response.Write("<img src='line.gif' width='18px' height='18px' align='absmiddle' />"); 272
} 273
Response.Write("<img id=plus" + i.ToString() + " src='" + plus + "' width='18px' height='18px' onClick=ClickMenu('div_" + i.ToString() + "','plus','" + i.ToString() + "') align='absmiddle' />"); 274
if (checkBox) 275
{ 276
Response.Write("<input id='Checkbox" + i.ToString() + "' onClick=SelectBox('div_" + i.ToString() + "',this) type='checkbox' />"); 277
} 278
Response.Write( "<img id=open" + i.ToString() + " src='open.gif'width='16px' height='16px' align='absmiddle' />"); 279
Response.Write("<a onmousemove='ChangeColora(this)' onmouseleave='ChangeColorb(this)'>" + "<span class='stylespan' id='span_" + i.ToString() + "'> " + TreeTable.Tables[0].Rows[i]["FuncName"].ToString().Trim() + "</SPAN></a></div>"); 280
Response.Write("<div id='div_" + i.ToString() + "' belongCheckbox='Checkbox" + i.ToString() + "' style='display: " + none + "'>"); 281
282
this.depth++; 283
dep.Add(flag); 284
CreatTrees(current, TreeTable.Tables[0].Rows[i + 1]["ID"].ToString().Trim(), TreeTable.Tables[0].Rows[i + 1]["FuncName"].ToString().Trim(), i + 1, flag); 285
286
287
} 288
else if (current.Length == nextnode.Length)//他就是叶子 289
{ 290
291
292
Response.Write( "<div class='stylediv'>"); 293
Response.Write( "<img src='empty.gif' width='18px' height='18px' align='absmiddle' />"); 294
295
for (int mm = depth; mm > 0; mm--) 296
{ 297
298
Response.Write("<img src='line.gif' width='18px' height='18px' align='absmiddle' />"); 299
} 300
Response.Write( "<img src='join.gif' width='18px' height='18px' align='absmiddle' />"); 301
if (checkBox) 302
{ 303
Response.Write("<input id='Checkbox" + i.ToString() + "' onClick=SelectBox('div_" + i.ToString() + "',this) type='checkbox' />"); 304
305
} 306
Response.Write( "<img src='folder.gif' width='16px' height='16px' align='absmiddle' />"); 307
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' id='span_" + i.ToString() + "'> " + currentname + "</span></a></div>"); 308
309
CreatTrees(current, TreeTable.Tables[0].Rows[i + 1]["ID"].ToString().Trim(), TreeTable.Tables[0].Rows[i + 1]["FuncName"].ToString().Trim(), i + 1, flag); 310
} 311
else //长度比下一个大,下一个在上级 312
{ 313
314
315
Response.Write( "<div class='stylediv'>"); 316
Response.Write( "<img src='empty.gif' width='18px' height='18px' align='absmiddle' />"); 317
int nn = 0; 318
for (int mm = depth; mm > 0; mm--) 319
{ 320
321
if (dep[nn].ToString() == "False") 322
Response.Write("<img src='line.gif' width='18px' height='18px' align='absmiddle' />"); 323
if (dep[nn++].ToString() == "True") 324
Response.Write("<img src='empty.gif' width='18px' height='18px' align='absmiddle' />"); 325
} 326
Response.Write( "<img src='joinbottom.gif' width='18px' height='18px' align='absmiddle' />"); 327
if (checkBox) 328
{ 329
Response.Write("<input id='Checkbox" + i.ToString() + "' onClick=SelectBox('div_" + i.ToString() + "',this) type='checkbox' />"); 330
331
} 332
Response.Write( "<img src='folder.gif' width='16px' height='16px' align='absmiddle' />"); 333
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' id='span_" + i.ToString() + "'> " + currentname + "</span></a></div>"); 334
335
CreatTrees(current, TreeTable.Tables[0].Rows[i + 1]["ID"].ToString().Trim(), TreeTable.Tables[0].Rows[i + 1]["FuncName"].ToString().Trim(), i + 1, flag); 336
337
} 338
339
340
} 341
else if (current.Length == por.Length) //处在同一及 342
{ 343
if (current.Length < nextnode.Length) //--------父亲------------------ 344
{ 345
346
Response.Write( "<div class='stylediv'>"); 347
Response.Write( "<img src='empty.gif' width='18px' height='18px' align='absmiddle' />"); 348
flag = JudgeBrother(current, i); 349
int nn=0; 350
for (int mm = depth; mm > 0; mm--) 351
{ 352
353
if (dep[nn].ToString()=="False") 354
Response.Write("<img src='line.gif' width='18px' height='18px' align='absmiddle' />"); 355
if (dep[nn++].ToString()=="True") 356
Response.Write("<img src='empty.gif' width='18px' height='18px' align='absmiddle' />"); 357
} 358
Response.Write("<img id=plus" + i.ToString() + " src='" + plus + "' width='18px' height='18px' onClick=ClickMenu('div_" + i.ToString() + "','plus','" + i.ToString() + "') align='absmiddle' />"); 359
if (checkBox) 360
{ 361
Response.Write("<input id='Checkbox" + i.ToString() + "' onClick=SelectBox('div_" + i.ToString() + "',this) type='checkbox' />"); 362
} 363
Response.Write( "<img id=open" + i.ToString() + " src='open.gif' width='16px' height='16px' align='absmiddle' />"); 364
Response.Write( "<a onmousemove='ChangeColora(this)' onmouseleave='ChangeColorb(this)'>" + "<span class='stylespan' id='span_" + i.ToString() + "'> " + TreeTable.Tables[0].Rows[i]["FuncName"].ToString().Trim() + "</SPAN></a></div>"); 365
Response.Write( "<div id='div_" + i.ToString() + "' belongCheckbox='Checkbox" + i.ToString() + "' style='display: " + none + "'>"); 366
367
this.depth++; 368
dep.Add(flag); 369
CreatTrees(current, TreeTable.Tables[0].Rows[i + 1]["ID"].ToString().Trim(), TreeTable.Tables[0].Rows[i + 1]["FuncName"].ToString().Trim(), i + 1, flag); 370
371
} 372
else if (current.Length >= nextnode.Length) //叶子 373
{ 374
375
376
Response.Write( "<div class='stylediv'>"); 377
Response.Write( "<img src='empty.gif' width='18px' height='18px' align='absmiddle' />"); 378
379
if (current.Length == nextnode.Length)//说明是下一个是父亲 380
flag=JudgeBrother(current, i); 381
int nn = 0; 382
for (int mm = depth; mm > 0; mm--) 383
{ 384
if (flag && mm == 1) 385
{ 386
Response.Write("<img src='empty.gif' width='18px' height='18px' align='absmiddle' />"); 387
break; 388
} 389
if (dep[nn].ToString() == "False") 390
Response.Write("<img src='line.gif' width='18px' height='18px' align='absmiddle' />"); 391
if (dep[nn++].ToString() == "True") 392
Response.Write("<img src='empty.gif' width='18px' height='18px' align='absmiddle' />"); 393
} 394
if (current.Length == nextnode.Length) 395
Response.Write( "<img src='join.gif' width='18px' height='18px' align='absmiddle' />"); 396
else 397
Response.Write( "<img src='joinbottom.gif' width='18px' height='18px' align='absmiddle' />"); 398
if (checkBox) 399
{ 400
Response.Write("<input id='Checkbox" + i.ToString() + "' onClick=SelectBox('div_" + i.ToString() + "',this) type='checkbox' />"); 401
402
} 403
Response.Write( "<img src='folder.gif' width='16px' height='16px' align='absmiddle' />"); 404
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' id='span_" + i.ToString() + "'> " + currentname + "</span></a></div>"); 405
CreatTrees(current, TreeTable.Tables[0].Rows[i + 1]["ID"].ToString().Trim(), TreeTable.Tables[0].Rows[i + 1]["FuncName"].ToString().Trim(), i + 1,flag); 406
} 407
408
409
} 410
411
} 412
413
} 414
415
} 416






}
}