⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 codetree.ascx.cs

📁 asp.net 2.0的教务管理软件源码
💻 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 + -