ASP.NET实现无限类下拉选择
ASP.NET无限类下拉选择实现效果图
实现方法:
.aspx文件内容
<asp:Label ID="GroupIdlab" runat="server"></asp:Label>
.aspx.cs文件内容
using System;
using System.Data;
using NetOA.Penson;
//主要代码:
string _gid = function.getRequest("gid");
string _GroupTree = string.Empty;
string _sql = "";
SqlConnection conn = SqlHelper.dbconn();
conn.Open();
_sql = "select * from DyjGroup";
DataTable dt = SqlHelper.ExecuteProDataTable(conn, CommandType.Text, _sql, null);
Penson ps = new Penson();
ps.datatable = dt;
ps.gid = 0;
ps.groupid =Convert.ToInt32(_gid);
_GroupTree = "<select name=GroupId id=GroupId>";
_GroupTree += ps.Trees;
_GroupTree += "</select>";
GroupIdlab.Text = _GroupTree;
dt.Clear();
dt.Dispose();
this.JobBind("",conn);
conn.Close();
conn.Dispose();
Penson类:
namespace NetOA.Penson
{
/// <summary>
/// Penson 的摘要说明
/// </summary>
public class Penson
{
private string _Trees;
private static string _TreeList; //静态数据
private DataTable _dt;
private int _gid;
private int _groupid;
/// <summary>
/// 数据结果
/// </summary>
public string Trees
{
get
{
_Trees = this.Tree(_dt, _gid);
_TreeList = string.Empty;
return _Trees;
}
set
{
_Trees = value;
}
}
/// <summary>
/// Datatable内存表
/// </summary>
public DataTable datatable
{
get
{
return _dt;
}
set
{
_dt = value;
}
}
/// <summary>
/// 父编号
/// </summary>
public int gid
{
get
{
return _gid;
}
set
{
_gid = value;
}
}
/// <summary>
/// 组编号
/// </summary>
public int groupid
{
get
{
return _groupid;
}
set
{
_groupid = value;
}
}
#region 数据绑定
private string Tree(DataTable dt, int _gid)
{
string _Select = string.Empty;
string _toGroupName = string.Empty;
int _togid = 0;
int _tolayer = 0;
DataRow[] _TreeDr = dt.Select("[parent]=" + _gid);
for (int i = 0; i < _TreeDr.Length; i++)
{
_toGroupName = _TreeDr[i]["GroupName"].ToString();
_togid = (int)_TreeDr[i]["GroupId"];
_tolayer = (int)_TreeDr[i]["layer"]; //下一层
if (_togid == _groupid)
_Select = "selected='selected'";
else
_Select = "";
//是否有下级
if (dt.Select("[parent]=" + _togid).Length > 0)
{
_TreeList += "<option value='" + _togid + "' "+_Select+">" + MakeFelgefu(_tolayer) + _toGroupName + "</option>";
Tree(dt, _togid);
}
else
{
//j++;
_TreeList += "<option value='" + _togid + "' " + _Select + ">" + MakeFelgefu(_tolayer) + _toGroupName+ "</option>";
}
}
return _TreeList;
}
#endregion 数据绑定
/// <summary>
/// Make分隔符
/// </summary>
/// <param name="count"></param>
/// <returns></returns>
private string MakeFelgefu(int count)
{
string Returnwords = string.Empty;
if (count == 0)
{
Returnwords = "";
}
else
{
Returnwords = ("├").PadLeft(count, ' ');
}
return Returnwords;
}
}
}