ASP.NET C # generates a drop-down list tree


Renderings:

Code:

[csharp]  

using System.Data;  

using System.Web.UI.WebControls;  

  

/// <summary>  

/// The drop-down list tree generated DataTable  

/// </summary>  

public class DropDownListHelp  

{  

    private string gridline;  

    private DataTable dt;  

    public DropDownListHelp()  

    {  

        //  

        // TODO: Add constructor logic here  

        //  

    }  

    /// <summary>  

    /// The drop-down menu tree generated Datatable  

    /// </summary>  

    /// <param name="datatable"></param>  

    Key Field /// <param name = "parentKeyField"> upper node </ param>  

    /// <name = "parentKey" param> upper node value </ param>  

    /// key field <param name = "keyField"> node </ param>  

    /// <param name = "sortString"> sorted string </ param>  

    /// <param name="ddl">DownList</param>  

    public void createDropDownTree(DataTable datatable, string parentKeyField, string parentKey, string keyField, string textField, string sortString, DropDownList ddl)  

    {  

        dt = datatable;  

        ddl.Items.Add(new ListItem("", ""));  

        addChildItems(parentKeyField, parentKey, keyField, textField, sortString, ddl);  

    }  

    /// <summary>  

    /// spanning tree node Recursion  

    /// </summary>  

    Key Field /// <param name = "parentKeyField"> upper node </ param>  

    /// <name = "parentKey" param> upper node value </ param>  

    /// key field <param name = "keyField"> node </ param>  

    /// <param name = "sortString"> sorted string </ param>  

    /// <param name="ddl">DownList控件</param>  

    /// <returns></returns>  

    private void addChildItems(string parentKeyField, string parentKey, string keyField, string textField, string sortString, DropDownList ddl)  

    {  

        DataView dv = new DataView(dt, parentKeyField + "='" + parentKey + "'", sortString, DataViewRowState.CurrentRows);  

        int a = dv.Count;  

        if (dv.Count == 0)  

        {  

            return;  

        }  

        for (int i = 0; i < a; i++)  

        {  

            gridline = "";  

            dv.RowFilter = parentKeyField + "='" + parentKey + "'";  

            dv.Sort = sortString;  

            getTreeLine(parentKeyField, dv[i][parentKeyField].ToString(), keyField, dv[i][keyField].ToString(), sortString);  

            dv.RowFilter = parentKeyField + "='" + parentKey + "'";  

            dv.Sort = sortString;  

            ddl.Items.Add(new ListItem(gridline + (i == a - 1 ? "┗" : "┣") + dv[i][textField].ToString(), dv[i][keyField].ToString()));  

            addChildItems(parentKeyField, dv[i][keyField].ToString(), keyField, textField, sortString, ddl);  

        }  

        dv.Dispose();  

    }  

  

    /// <summary>  

    /// spanning back connection lines  

    /// </summary>  

    Key Field /// <param name = "parentKeyField"> upper node </ param>  

    /// <name = "parentKey" param> upper node value </ param>  

    /// key field <param name = "keyField"> node </ param>  

    /// <param name = "nodeKey"> node value </ param>  

    /// <param name = "sortString"> sorted string </ param>  

    /// <returns></returns>  

    private void getTreeLine(string parentKeyField, string parentKey, string keyField, string nodeKey, string sortString)  

    {  

        // Select Parent node  

        DataView dv = new DataView(dt, keyField + "='" + parentKey + "'", sortString, DataViewRowState.CurrentRows);  

        if (dv.Count > 0)  

        {  

            // Select the parent node siblings  

            dv.RowFilter = parentKeyField + "='" + dv[0][parentKeyField].ToString() + "'";  

            dv.Sort = sortString;  

            for (int j = 0; j < dv.Count; j++)  

            {  

                if (dv[j][keyField].ToString() == parentKey)  

                {  

                    if (j == dv.Count - 1)  

                    {  

                        gridline = " " + gridline;  

                    }  

                    else  

                    {  

                        gridline = "┃" + gridline;  

                    }  

                }  

            }  

            getTreeLine(parentKeyField, dv[0][parentKeyField].ToString(), keyField, dv[0][keyField].ToString(), sortString);  

        }  

        dv.Dispose();  

    }  

}  

 

transfer:

[csharp]  

DropDownListHelp ddlHelper = new DropDownListHelp();  

ddlHelper.createDropDownTree(dt, "parentID", "1", "ID","Text", "Text asc", DropDownList1);  

Guess you like

Origin www.cnblogs.com/ljs-13/p/12108634.html