1. 程式人生 > >Ext Net 1 x Ext Net TreeGrid-無限制樹形GUCD

Ext Net 1 x Ext Net TreeGrid-無限制樹形GUCD

               

HTML:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Source.aspx.cs" Inherits="DzPlatForm.CRM.Property.Source" %><%@ Register Assembly="Ext.Net" Namespace="Ext.Net" TagPrefix="ext" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"><head runat="server">    <title>來源配置</title>    <link rel="stylesheet" type="text/css" href="resources/css/main.css" />    <ext:ResourcePlaceHolder ID="ResourcePlaceHolder1" runat="server" Mode="Script" />    <ext:ResourcePlaceHolder
ID="ResourcePlaceHolder2" Mode="Style" runat="server">
        <script src="../../Scripts/am.js" type="text/javascript"></script>    </ext:ResourcePlaceHolder></head><body>    <form id="form1" runat="server">    <ext:ResourceManager ID="ResourceManager1" runat="server"
/>
    <ext:TreeGrid ID="TreeGrid1" runat="server" UseArrows="true" Animate="true" AutoHeight="true"        AutoScroll="true" ForceLayout="true" Collapsed="false">        <Columns>            <ext:TreeGridColumn Header="來源名稱" Width="300" DataIndex="Name">            </ext:TreeGridColumn>            <ext:TreeGridColumn Header="父節點" DataIndex="ParentId" Hidden="true" >            </ext:TreeGridColumn>        </Columns>        <TopBar>            <ext:Toolbar ID="Toolbar1" runat="server">                <Items>                    <ext:SplitButton ID="SplitButton1" runat="server" Text="新建來源" Icon="Add">                        <Menu>                            <ext:Menu ID="Menu1" runat="server">                                <Items>                                    <ext:MenuItem ID="menuAdd" runat="server" Text="新建頂層來源" Icon="Add">                                        <DirectEvents>                                            <Click OnEvent="Menu_Click">                                                <EventMask ShowMask="true" />                                                <ExtraParams>                                                    <ext:Parameter Name="Item" Value="menuAdd" Mode="Value" />                                                </ExtraParams>                                            </Click>                                        </DirectEvents>                                    </ext:MenuItem>                                    <ext:MenuItem ID="menuAddSubitem" runat="server" Text="新建當前選中子來源" Icon="DatabaseAdd">                                        <DirectEvents>                                            <Click OnEvent="Menu_Click">                                                <EventMask ShowMask="true" />                                                <ExtraParams>                                                    <ext:Parameter Name="Item" Value="menuAddSubitem" Mode="Value" />                                                </ExtraParams>                                            </Click>                                        </DirectEvents>                                    </ext:MenuItem>                                </Items>                            </ext:Menu>                        </Menu>                    </ext:SplitButton>                    <ext:Button ID="Button1" runat="server" Text="修改" Icon="DatabaseEdit">                        <DirectEvents>                            <Click OnEvent="Menu_Click">                                <EventMask ShowMask="true" Msg="修改..." MinDelay="500" />                                <ExtraParams>                                    <ext:Parameter Name="Item" Value="menuEdit" Mode="Value" />                                </ExtraParams>                            </Click>                        </DirectEvents>                    </ext:Button>                    <ext:Button ID="Button3" runat="server" Text="刪除" Icon="DatabaseDelete">                        <Listeners>                            <Click Handler="DeleteNodeForTree2(#{TreeGrid1},#{txtValue});" />                        </Listeners>                    </ext:Button>                </Items>            </ext:Toolbar>        </TopBar>        <Listeners>            <Click Handler="Ext.net.DirectMethods.ClickCurrentNode(node.attributes.Id+'|'+node.attributes.Name+'|'+node.attributes.ParentId)" />        </Listeners>    </ext:TreeGrid>    <ext:Window ID="winMenuAdd" runat="server" Icon="Table" Closable="true" Title=""        AutoHeight="true" Width="450" Resizable="false" BodyStyle="background-color:#fff;"        Padding="15" Layout="FormLayout" ForceLayout="true" Hidden="true" Modal="true">        <Items>            <ext:TextField ID="txt_Menu_Name_varchar2" runat="server" Width="220" FieldLabel="來源名稱"                LabelStyle="margin:5px 0 5 0;" StyleSpec="margin:5px 0 5 0;" />            <ext:TextField ID="txt_Menu_ParentID_number" runat="server" Enabled="false" Width="220"                FieldLabel="父節點編號" LabelStyle="margin:5px 0 5 0;" StyleSpec="margin:5px 0 5 0;"                Text="-1" Hidden="true" />            <ext:Hidden ID="txtValue" runat="server" Text="" />            <ext:Hidden ID="txtType" runat="server" Text="add" />        </Items>        <Buttons>            <ext:Button ID="btn_save" runat="server" Text="儲存" Icon="Disk">                <Listeners>                    <Click Handler="AddNodeForTree(#{TreeGrid1});" />                </Listeners>            </ext:Button>        </Buttons>    </ext:Window>    </form></body></html>
CS:
using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.UI;using System.Web.UI.WebControls;using Ext.Net;using DzPlatForm.Control;using System.Data;using DzPlatForm.DBUtility;namespace DzPlatForm.CRM.Property{    public partial class Source : System.Web.UI.Page    {        protected void Page_Load(object sender, EventArgs e)        {            if (!X.IsAjaxRequest)            {                Session["utype"] = 1;                this.BuildTree(TreeGrid1.Root);            }        }        /// <summary>        /// 初始化樹形列表        /// </summary>        /// <param name="nodes"></param>        /// <returns></returns>        private Ext.Net.TreeNodeCollection BuildTree(Ext.Net.TreeNodeCollection nodes)        {            if (Session["utype"] == null)            {                Response.Redirect("Login.aspx");                return null;            }            else            {                string sql = "SELECT  [Id],[ParentId],[Name] FROM [OA].[dbo].[CustomerSource] ";                TreeTableControl treeTable = new TreeTableControl();                DataTable dt = DbHelperSQL.ExecuteDT(sql, null);                Ext.Net.TreeNode tvn = treeTable.BindTableTree(dt);                nodes.Add(tvn);                return nodes;            }        }        /// <summary>        /// 重新整理樹形列表        /// </summary>        /// <returns></returns>        [DirectMethod]        public string RefreshMenu()        {            TreeGrid1.Root.Clear();            Ext.Net.TreeNodeCollection nodes = this.BuildTree(TreeGrid1.Root);            return nodes.ToJson();        }        /// <summary>        /// 操作集合        /// </summary>        /// <param name="sender"></param>        /// <param name="e"></param>        protected void Menu_Click(object sender, DirectEventArgs e)        {            string item = e.ExtraParams.GetParameter("Item").Value;            string[] strValue = txtValue.Text.Split('|');            switch (item)            {                case "menuAddSubitem":                    if (strValue.Length <= 1)                                           Notification.Show(new NotificationConfig                        {                            Title = "客戶來源管理",                            Icon = Icon.Information,                            Html = "未選擇記錄"                        });                    else                    {                        txt_Menu_Name_varchar2.Text = "";                        this.txt_Menu_ParentID_number.Text = strValue[0];                        txtType.Text = "add";                        this.winMenuAdd.Title = "新建子客戶來源";                        this.winMenuAdd.Show();                    }                    break;                case "menuAdd":                    txt_Menu_Name_varchar2.Text = "";                    this.txt_Menu_ParentID_number.Text = "-1";                    this.winMenuAdd.Title = "新建客戶來源";                    txtType.Text = "add";                    this.winMenuAdd.Show();                    break;                case "menuEdit":                    if (strValue.Length <= 1)                        Notification.Show(new NotificationConfig                        {                            Title = "客戶來源管理",                            Icon = Icon.Information,                            Html = "未選擇記錄"                        });                    else                    {                        txt_Menu_Name_varchar2.Text = strValue[1];                        this.txt_Menu_ParentID_number.Text = strValue[2];                        txtType.Text = "edit";                        this.winMenuAdd.Title = "選單修改";                        this.winMenuAdd.Show();                    }                    break;                case "menuDelete":                    if (strValue.Length <= 1)                    {                        Notification.Show(new NotificationConfig                        {                            Title = "客戶來源管理",                            Icon = Icon.Information,                            Html = "未選擇記錄"                        });                    }                    else                    {                        this.Delete();                    }                    break;            }        }        [DirectMethod]        public void ClickCurrentNode(string name)        {            txtValue.Text = name;        }        /// <summary>        /// 儲存        /// </summary>        /// <returns></returns>        [DirectMethod]        public string Save()        {            string name = this.txt_Menu_Name_varchar2.Text;            string pid = this.txt_Menu_ParentID_number.Text;            MenuInfo menu = new MenuInfo();            menu.Name = name;            menu.Pid = pid;            bool bl = false;            string sql = "";            if (txtType.Text == "add")            {                sql = "insert into [CustomerSource] (Name,ParentId) values ('" + menu.Name + "'," + menu.Pid + ")";                int res = DbHelperSQL.ExecuteSql(sql, null);                if (res > 0)                    bl = true;            }            else            {                string[] strValue = txtValue.Text.Split('|');                menu.Id = strValue[0];                sql = "update CustomerSource set Name='" + menu.Name + "' " + " where Id=" + menu.Id + " ";                int res = DbHelperSQL.ExecuteSql(sql, null);                if (res > 0)                    bl = true;            }            if (bl)            {                txt_Menu_Name_varchar2.Text = "";                Notification.Show(new NotificationConfig                {                    Title = "客戶來源管理",                    Icon = Icon.Information,                    Html = "儲存成功"                });                winMenuAdd.Hide();                string rtn = RefreshMenu();                return rtn;            }            else            {                Notification.Show(new NotificationConfig                {                    Title = "客戶來源管理",                    Icon = Icon.Information,                    Html = "儲存失敗"                });                return this.TreeGrid1.Root.ToJson();            }            this.txtValue.Text = "";        }        /// <summary>        /// 刪除        /// </summary>        /// <returns></returns>        [DirectMethod]        public string Delete()        {            string[] strValue = txtValue.Text.Split('|');            string id = strValue[0];            string ssql = "select Id from [CustomerSource] where ParentId=" + id + "";            DataTable dt = DbHelperSQL.ExecuteDT(ssql, null);            if (dt.Rows.Count > 0)            {                Notification.Show(new NotificationConfig                {                    Title = "客戶來源管理",                    Icon = Icon.Information,                    Html = "存在根節點,請先刪除下級!"                });            }            else            {                string sql = "delete from CustomerSource where Id=" + id + "";                int res = DbHelperSQL.ExecuteSql(sql, null);                bool success = false;                if (res > 0)                    success = true;                if (success)                {                    Notification.Show(new NotificationConfig                    {                        Title = "客戶來源管理",                        Icon = Icon.Information,                        Html = "刪除成功"                    });                }                else                {                    Notification.Show(new NotificationConfig                    {                        Title = "客戶來源管理",                        Icon = Icon.Information,                        Html = "刪除失敗"                    });                }                this.txtValue.Text = "";            }            return RefreshMenu();        }    }}

效果:

感謝心是走動的詞語的鼎力幫助和指導。