1. 程式人生 > >asp.netWeb開發中ztree實現無極限增刪改查連線資料同步資料庫操作

asp.netWeb開發中ztree實現無極限增刪改查連線資料同步資料庫操作

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Data.Sql;
using System.Data.SqlClient;
using System.Text;
using System.Configuration;
using Boss.DAL;


public partial class System_Sys_TreeList : System.Web.UI.Page
{
    public string tree, TopClass;
    protected void Page_Load(object sender, EventArgs e)
    {


        //取得傳過來的TopClassid從而判斷要讀取哪些功能選單




        //TopClass = Request.QueryString["id"].ToString();
        //TopClass = "0";

        if (!IsPostBack)
        {
            bindMenu();//獲取父級ID           
        }


        //  getStrXml();
        _GetXml();


    }


    #region 獲取父級選單
    /// <summary>
    /// 讀取一級選單
    /// </summary>
    private void bindMenu()
    {
        //" + TopClass + "
        SysDataAndSQLClass ds = new SysDataAndSQLClass();//讀取一級選單
        DataTable dt = ds.ExecSQLDataTable("select id,title from Sys_Tree WHERE pid=0  And IsValid=1 ORDER BY id ASC", "default");
        ddlMenuF.Items.Clear();
        ddlMenuF.Items.Add(new ListItem("-頂級-", "0"));
        for (int i = 0; i < dt.Rows.Count; i++)
        {
            ddlMenuF.Items.Add(new ListItem(dt.Rows[i]["title"].ToString(), dt.Rows[i]["ID"].ToString()));
        }
        ddlMenuT.Items.Add(new ListItem("請選擇", "0"));
        ddlMenuTh.Items.Add(new ListItem("請選擇", "0"));
    }
    /// <summary>
    /// ///讀取二級選單
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    protected void ddlMenuF_SelectedIndexChanged(object sender, EventArgs e)
    {
        string id = ddlMenuF.SelectedValue;
        ddlMenuT.Items.Clear();
        ddlMenuTh.Items.Clear();
        ddlMenuT.Items.Add(new ListItem("請選擇", "0"));
        ddlMenuTh.Items.Add(new ListItem("請選擇", "0"));
        if (id != "0")
        {
            SysDataAndSQLClass ds = new SysDataAndSQLClass();//讀取二級選單
            DataTable dt = ds.ExecSQLDataTable("select id,title from Sys_Tree WHERE pid=" + id + "  And IsValid=1 ORDER BY id ASC", "default");


            for (int i = 0; i < dt.Rows.Count; i++)
            {
                ddlMenuT.Items.Add(new ListItem(dt.Rows[i]["title"].ToString(), dt.Rows[i]["ID"].ToString()));
            }
        }
        ddlMenuTh.Visible = true;
    }
    /// <summary>
    /// //讀取三級選單;
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    protected void ddlMenuT_SelectedIndexChanged(object sender, EventArgs e)
    {
        string id = ddlMenuT.SelectedValue;
        ddlMenuTh.Items.Clear();
        ddlMenuTh.Items.Add(new ListItem("請選擇", "0"));
        if (id != "0")
        {
            SysDataAndSQLClass ds = new SysDataAndSQLClass();
            DataTable dt = ds.ExecSQLDataTable("select id,title from Sys_Tree WHERE pid=" + id + "  And IsValid=1 ORDER BY id ASC", "default");
            for (int i = 0; i < dt.Rows.Count; i++)
            {
                ddlMenuTh.Items.Add(new ListItem(dt.Rows[i]["title"].ToString(), dt.Rows[i]["ID"].ToString()));
            }
            if (dt.Rows.Count == 0)
            {
                ddlMenuTh.Visible = false;
            }
            else
            {
                ddlMenuTh.Visible = true;
            }
        }
    }


    #endregion


    #region 獲取選單樹


    protected void _GetXml()
    {
        //" + TopClass + " 
        string _xml = "";
        string _tag = "";
        SysDataAndSQLClass ds = new SysDataAndSQLClass();
        string sqlstr = "select id,pid,title,url from  Sys_Tree where pid=0 And IsValid=1 ORDER BY id ASC ";
        DataTable dt = ds.ExecSQLDataTable(sqlstr, "default");
        if (dt.Rows.Count > 0)
        {
            for (int i = 0; i < dt.Rows.Count; i++)
            {
                _xml += "{\nid:\"" + dt.Rows[i]["ID"].ToString() + "\",pId:\"" + dt.Rows[i]["PID"].ToString() + "\", name: \"" + dt.Rows[i]["title"].ToString() + "\", open: true,\n";
                _xml += "children: [\n";
                _tag = _GetTag(dt.Rows[i]["id"].ToString()).ToString();
                _xml += _tag + "  \n ]\n},";
            }
            _xml += "";
            tree = _xml;
        }
    }


    protected string _GetTag(string _mid)
    {
        string _xml = "";
        SysDataAndSQLClass ds = new SysDataAndSQLClass();
        string sqlstr = "select id,pid,title,url from  Sys_Tree where pid=" + _mid + "  And IsValid=1 ORDER BY id ASC ";
        DataTable dt = ds.ExecSQLDataTable(sqlstr, "default");
        if (dt.Rows.Count > 0)
        {
            for (int i = 0; i < dt.Rows.Count; i++)
            {
                string sql = "select id,title,url from  Sys_Tree where pid=" + dt.Rows[i]["id"].ToString() + "  And IsValid=1 ORDER BY id ASC ";
                DataTable dt_sql = ds.ExecSQLDataTable(sql, "default");
                if (dt_sql.Rows.Count > 0)
                {
                    _xml += "{\nid:\"" + dt.Rows[i]["ID"].ToString() + "\",pId:\"" + dt.Rows[i]["PID"].ToString() + "\", name: \"" + dt.Rows[i]["title"].ToString() + "\", open: true,\n";
                    _xml += "children: [\n";
                    _xml += _GetTag(dt.Rows[i]["id"].ToString()).ToString() + "  \n ]\n},";
                }
                else
                {
                    _xml += " { id:\"" + dt.Rows[i]["ID"].ToString() + "\",pId:\"" + dt.Rows[i]["PID"].ToString() + "\",name:\"" + dt.Rows[i]["title"].ToString() + "\"},";//新方法
                }
            }
        }
        return _xml;
    }
    #endregion


    /// <summary>
    /// 新增樹
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    protected void ButtonAddSys_IBmenuTree_Click(object sender, EventArgs e)
    {
        string PID = ddlMenuF.Text;
        if (ddlMenuTh.SelectedValue != "0")//第三項不為空時,父級選單ID為三級選單的ID
        {
            PID = ddlMenuTh.Text;
        }
        else
        {
            if (ddlMenuT.SelectedValue != "0")//第三項不為空時且第二項不為空時,父級選單ID為二級選單的ID
            {
                PID = ddlMenuT.Text;
            }
            else
            {
                PID = ddlMenuF.Text;//第三項不為空時且第二項為空時,父級選單ID為一級或頂級選單的ID
            }
        }
        if (PID == "0")
        {
            PID = TopClass.ToString();
        }
        string title = txttitle.Text;
        string URL = txtURL.Text;
        string OrderBy = txtOrderBy.Text;
        string SysbrandID = "";
        string CreateLoginId = Session["UserName"].ToString();
        //為儲存過程呼叫準備引數
        string tabName = "Sys_Tree";
        string columns = "PID,title,URL,SysbrandID";//(父表主鍵),Pid  
        string values = "'" + PID + "','" + title + "','" + URL + "','" + SysbrandID + "'";//(父表主鍵值),'" + Pid + "'
        //執行儲存過程呼叫類
        int i = Boss.DAL.SysDataAndSQLClass.Sys_IB_Insert(tabName, columns, values, "default");
        if (i == 0)
        {
            //寫日誌
            int ilog = Convert.ToInt32(SysCommonClass.InsertSysLog("Insert", "TableName:" + tabName, "Columns:" + columns + " |Values:" + values).ToString());
            //呼叫執行寫系統日誌
            AddMSN.Text = "新增成功!";
            _GetXml();
        }
    }


}