📄 codetree.ascx.cs
字号:
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
public partial class uctl_CodeTree : System.Web.UI.UserControl
{
public delegate void CodeSelectedEventHander(int selectedId);
private int chosedId = 0;
private int depth = 0;
private int rootID = 0; //根结点ID
private string rootIDs = "";
private string rootNames=""; //开始时显示哪些根结点的集合,形如:'name1','name2','name3'的字符串,一般只有一个
public event CodeSelectedEventHander CodeSelected;
private string tableName = "J_AllCode";
private string ac_Code = "ac_Code";
private string ac_Name = "ac_Name";
private string ac_ParentCode = "ac_ParentCode";
protected void Page_Load(object sender, EventArgs e)
{
// tree(null,1);
// CodeTree.Nodes.Clear();
}
//返回结点路径
public String TableName
{
get
{ return tableName; }
set
{ tableName = value; }
}
public String IdColumn
{
get { return ac_Code; }
set { ac_Code = value; }
}
public string NameColumn
{
get { return ac_Name; }
set { ac_Name = value; }
}
public string ParentIdColumn
{
get { return ac_ParentCode; }
set { ac_ParentCode = value; }
}
public String Path
{
get
{
String path = "";
if (CodeTree.SelectedNode != null)
{
path = CodeTree.SelectedNode.ValuePath;
}
else
{
if (CodeTree.Nodes.Count > 0)
{
path = CodeTree.Nodes[0].ValuePath;
}
}
path = path.Replace('/', ',');
string sql = "SELECT " + ac_Name + " FROM " + tableName + " WHERE " + ac_Code + " IN (" + path + ")";
DataTable dt = DBExec.ExecDataTable(sql);
path = "";
int i = 0;
foreach (DataRow row in dt.Rows)
{
if (i > 0) path += " -> ";
path += row[0].ToString();
i++;
}
return path;
}
}
//得到根结点ID号
public string RootIDs
{
get { return rootIDs; }
set { rootIDs = value; ReDraw(); }
}
public String Text
{
get
{
if (CodeTree.SelectedNode != null)
return CodeTree.SelectedNode.Text;
else return "";
}
}
public int Value
{
get
{
int id = 0;
if (CodeTree.SelectedValue.Trim() == "")
{
if (CodeTree.Nodes.Count > 0)
{
id = Convert.ToInt32(CodeTree.Nodes[0].Value);
rootID = id;
}
}
else
{
id = Convert.ToInt32(CodeTree.SelectedValue);
}
chosedId = id;
return chosedId;
}
set
{
chosedId = value;
ReDraw();
}
}
//根结点的Name,可以指定不止一个根结点
public String RootNames
{
get
{
return rootNames;
}
set
{
rootNames = value;
ReDraw();
}
}
public void ReDraw()
{
string sql = "SELECT " + ac_Code + "," + ac_Name + " FrOM " + tableName + " WHERE " + ac_Name + " in (" + rootNames + ")";
if (rootNames == "") sql = "SELECT " + ac_Code + "," + ac_Name + " FROM " + tableName + " WHERE " + ac_Code + " in (" + rootIDs + ")";
DataTable dt = DBExec.ExecDataTable(sql);
CodeTree.Nodes.Clear();
foreach (DataRow dr in dt.Rows)
{
int tempd = depth;
tree(null, Convert.ToInt32(dr[0]));
depth = tempd;
}
}
private void tree(TreeNode parentNode, int ID)
{
string classname;
DataRow sdr;
string sql = "SELECT " + ac_Code + "," + ac_Name + " FROM " + tableName + " where " + ac_Code + "=" + ID.ToString();
DataTable dt = DBExec.ExecDataTable(sql);
if (dt.Rows.Count != 0)
{
sdr = dt.Rows[0];
classname = sdr[1].ToString();
}
else
{
classname = ID.ToString() + "无效";
}
sql = "SELECT " + ac_Code + "," + ac_Name + " FROM " + tableName + " where " + ac_ParentCode + "=" + ID.ToString();
dt = DBExec.ExecDataTable(sql);
TreeNode newNode = new TreeNode(classname.Trim(), ID.ToString());
newNode.SelectAction = TreeNodeSelectAction.Select;
if (parentNode == null)
{ CodeTree.Nodes.Add(newNode); }
else
{ parentNode.ChildNodes.Add(newNode); }
newNode.Selected = (ID == chosedId);
if (newNode.Selected || depth < 2)
{ newNode.Expand(); }
else
{ newNode.Collapse(); }
foreach (DataRow dr in dt.Rows)
{
int tempd = depth;
tree(newNode, Convert.ToInt32(dr[0]));
depth = tempd;
}
dt.DataSet.Dispose();
}
protected void CodeTree_SelectedNodeChanged(object sender, EventArgs e)
{
chosedId = Value;
CodeSelected(chosedId);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -