Ext.Net 1.x_Ext.Net.Dropdownlist结合TreePanel

今天在学习布局的过程中,有个申请部门。就想到Dropdownlist+TreePanel,看DEMO有这样的,但是后台如何搞呢?

请教DB后终于搞定了。

前台:

                                   <ext:DropDownField ID="ddldepartment" runat="server" Editable="false" FieldLabel="申请单位" AnchorHorizontal="100%" >
                                     <Component>
                                        <ext:TreePanel ID="TreePanel1" runat="server"  Icon="ApplicationHome" Height="300"
                                            Shadow="None" UseArrows="true" AutoScroll="true" Animate="true" EnableDD="true"
                                            ContainerScroll="true" RootVisible="false">
                                            <Buttons>
                                                <ext:Button ID="btnclose" runat="server" Text="关闭">
                                                    <Listeners>
                                                        <Click Handler="#{ddldepartment}.collapse();" />
                                                    </Listeners>
                                                </ext:Button>
                                            </Buttons>
                                            <Root>
                                            </Root>
                                            <Listeners>
                                                <CheckChange Handler="this.dropDownField.setValue(getTasks(this), false);" />
                                            </Listeners>
                                        </ext:TreePanel>
                                     </Component>
                                        <Listeners>
                                            <Expand Handler="this.component.getRootNode().expand(true);" Single="true" Delay="10" />
                                        </Listeners>
                                    </ext:DropDownField>


后台:

protected void Page_Load(object sender, EventArgs e)
    {
        if (!X.IsAjaxRequest)
        {
            string strsql = "select * from Framework";
            DABaseAccess db = new DABaseAccess("OA");
            DataTable dt = new DataTable();
            dt = db.Query(strsql.ToString());
            if (dt.Rows.Count > 0)
            {
                this.BuildTree(this.TreePanel1.Root, dt);
            }
            else
            {
                JScript.Alert("没有取得数据", this.Page);
            }
        }
    }
    /// <summary>
    /// TreePanel
    /// </summary>
    /// <param name="allData"></param>
    /// <returns></returns>
    public TreeNode BindTreePanel(DataTable allData)
    {
        TreeNode topNode = new TreeNode();
        topNode.NodeID = "0";
        topNode.Text = "Root";

        if (allData != null && allData.Rows.Count > 0)
        {
            DataRow[] items = allData.Select("FParentID=-1");
            if (items != null && items.Length > 0)
            {
                DataSet ds = new DataSet();
                ds.Merge(items);
                DataTable SourseTable = ds.Tables[0];

                for (int i = 0; i < SourseTable.Rows.Count; i++)
                {
                    TreeNode Tvn = new TreeNode();
                    Tvn.Expandable = ThreeStateBool.True;
                    Tvn.NodeID = SourseTable.Rows[i]["FID"].ToString();
                    Tvn.Text = SourseTable.Rows[i]["FNAME"].ToString();
                    DataRow[] isChildNode = allData.Select("fparentid=" + SourseTable.Rows[i]["FID"].ToString());
                    if (isChildNode.Length <= 0)
                    {
                        Tvn.Leaf = true;
                        Tvn.Checked = Ext.Net.ThreeStateBool.False;
                    }
                    if (isChildNode.Length > 0) Tvn.Icon = Icon.FolderGo;
                    else Tvn.Icon = Icon.Table;

                    BindSubTreePanel(Tvn, allData, SourseTable.Rows[i]["FID"].ToString());
                    topNode.Nodes.Add(Tvn);

                }
            }
        }
        return topNode;
    }
    private void BindSubTreePanel(TreeNode TrNode, DataTable allData, string parentID)
    {
        DataRow[] items = allData.Select("FParentID=" + parentID);

        if (items != null && items.Length > 0)
        {
            DataSet ds = new DataSet();
            ds.Merge(items);
            DataTable dt = ds.Tables[0];
            for (int i = 0; i < dt.Rows.Count; i++)
            {
                TreeNode Tvn = new TreeNode();
                Tvn.Icon = Icon.Note;
                Tvn.NodeID = dt.Rows[i]["FID"].ToString();
                Tvn.Text = dt.Rows[i]["FNAME"].ToString();
                DataRow[] isChildNode = allData.Select("fparentid=" + dt.Rows[i]["FID"].ToString());
                if (isChildNode.Length <= 0)
                {
                    Tvn.Leaf = true;
                    Tvn.Checked = Ext.Net.ThreeStateBool.False;
                }
                if (isChildNode.Length > 0) Tvn.Icon = Icon.FolderGo;
                else Tvn.Icon = Icon.Table;

                BindSubTreePanel(Tvn, allData, dt.Rows[i]["FID"].ToString());
                TrNode.Nodes.Add(Tvn);
            }
        }

    }
    private Ext.Net.TreeNodeCollection BuildTree(Ext.Net.TreeNodeCollection root, DataTable dt)
    {
        root.Add(this.BindTreePanel(dt));
        return root;
    }


Ext.Net 1.x_Ext.Net.Dropdownlist结合TreePanel_第1张图片

你可能感兴趣的:(server,String,null,button,dataset)