asp. net Realizes the Infinitesimal Classification Directory Tree of DropDownList TreeView and ListBox

  • 2021-07-24 10:46:33
  • OfStack

In this paper, an example of asp. net to achieve DropDownList, TreeView, ListBox infinitesimal classification directory tree. Share it for your reference, as follows:


#region DropDownList Infinite recursive display hierarchical relationship 
/// <summary>
///  Create an unlimited hierarchical drop-down list box 
/// </summary>
/// <param name="ddlst"> Drop-down control </param>
/// <param name="dt"> Source DataTable</param>
/// <param name="text">text Field </param>
/// <param name="value">value Field </param>
/// <param name="parentid"> Depth field   For example parentid</param>
public static void CreateLevelDropDown(DropDownList ddlst, DataTable dt, string text, string value, string parentid)
{
  ArrayList allItems = new ArrayList();
  DataRow[] rows = dt.Select(parentid + "=0");
  foreach (DataRow row in rows)
    CreateLevelDropDownAssistant(dt, ref  allItems, row, string.Empty, text, value, parentid);
  ListItem[] items = new ListItem[allItems.Count];
  allItems.CopyTo(items);
  ddlst.Items.AddRange(items);
}
/// <summary>
///  Recursively bound child nodes 
/// </summary>
/// <param name="dt"> Source DataTable</param>
/// <param name="items"> Array </param>
/// <param name="parentRow"> Current node </param>
/// <param name="curHeader"> Prefix </param>
/// <param name="text">text Field </param>
/// <param name="value">value Field </param>
/// <param name="parentid"> Depth field   For example parentid</param>
private static void CreateLevelDropDownAssistant(DataTable dt, ref  ArrayList items, DataRow parentRow, string curHeader, string text, string value, string parentid)
{
  ListItem newItem = new ListItem(curHeader + Until.CutString(parentRow[text].ToString(), 18, true), parentRow[value].ToString());
  items.Add(newItem);
  DataRow[] rows = dt.Select(parentid + "=" + newItem.Value);
  for (int i = 0; i < rows.Length - 1; i++)
    CreateLevelDropDownAssistant(dt, ref  items, rows[i], curHeader.Replace(" Us ", " INTERVIEW ").Replace(" STUDY ", " Us ") + " Us ", text, value, parentid);
  if (rows.Length > 0)
    CreateLevelDropDownAssistant(dt, ref  items, rows[rows.Length - 1], curHeader.Replace(" Us ", " INTERVIEW ").Replace(" STUDY ", " Us ") + " STUDY ", text, value, parentid);
}
#endregion
#region TreeView  Infinite recursive display hierarchical directory tree 
/// <summary>
///  Create an infinite hierarchical directory tree TreeView
/// </summary>
/// <param name="treeview">TreeView Space </param>
/// <param name="dt"> Data source DataTable</param>
/// <param name="text">text Field </param>
/// <param name="value">value Field </param>
/// <param name="parentid"> Depth field   For example parentid</param>
public static void CreateLevelTreeView(TreeView treeview, DataTable dt, string text, string value, string parentid)
{
  DataView dv = dt.DefaultView;
  dv.RowFilter = parentid + "=0";
  foreach (DataRowView drv in dv)
  {
    TreeNode node = new TreeNode();
    node.Text = drv[text].ToString();
    node.Value = drv[value].ToString();
    node.Expanded = false;
    treeview.Nodes.Add(node);
    CreatTreeViewChildNode(dv, node, text, value, parentid);
  }
}
/// <summary>
///  Recursively bound child nodes 
/// </summary>
/// <param name="dv"> Source DataView</param>
/// <param name="parentNode"> Current node </param>
/// <param name="text">text Field </param>
/// <param name="value">value Field </param>
/// <param name="parentid"> Depth field   For example parentid</param>
private static void CreatTreeViewChildNode(DataView dv, TreeNode parentNode, string text, string value, string parentid)
{
  dv.RowFilter = parentid + "=" + parentNode.Value;
  foreach (DataRowView row in dv)
  {
    TreeNode replyNode = new TreeNode();
    replyNode.Text = row[text].ToString();
    replyNode.Value = row[value].ToString();
    replyNode.Expanded = false;
    parentNode.ChildNodes.Add(replyNode);
    CreatTreeViewChildNode(dv, replyNode, text, value, parentid);
  }
}
/// <summary>
///  Create an infinite hierarchical directory tree TreeView
/// </summary>
/// <param name="treeview">TreeView Space </param>
/// <param name="dt"> Data source DataTable</param>
/// <param name="text">text Field </param>
/// <param name="value">value Field </param>
/// <param name="url">url Field </param>
/// <param name="parentid"> Depth field   For example parentid</param>
public static void CreateLevelTreeView(TreeView treeview, DataTable dt, string text, string value, string url, string parentid)
{
  DataView dv = dt.DefaultView;
  dv.RowFilter = parentid + "=0";
  foreach (DataRowView drv in dv)
  {
    TreeNode node = new TreeNode();
    node.Text = drv[text].ToString();
    node.Value = drv[value].ToString();
    node.NavigateUrl = drv[url].ToString();
    node.Expanded = false;
    treeview.Nodes.Add(node);
    CreatTreeViewChildNode(dv, node, text, value, url, parentid);
  }
}
/// <summary>
///  Recursively bound child nodes 
/// </summary>
/// <param name="dv"> Source DataView</param>
/// <param name="parentNode"> Current node </param>
/// <param name="text">text Field </param>
/// <param name="value">value Field </param>
/// <param name="url">url Field </param>
/// <param name="parentid"> Depth field   For example parentid</param>
private static void CreatTreeViewChildNode(DataView dv, TreeNode parentNode, string text, string value, string url, string parentid)
{
  dv.RowFilter = parentid + "=" + parentNode.Value;
  foreach (DataRowView row in dv)
  {
    TreeNode replyNode = new TreeNode();
    replyNode.Text = row[text].ToString();
    replyNode.Value = row[value].ToString();
    replyNode.NavigateUrl = row[url].ToString();
    replyNode.Expanded = false;
    parentNode.ChildNodes.Add(replyNode);
    CreatTreeViewChildNode(dv, replyNode, text, value, url, parentid);
  }
}
#endregion
#region  Create an infinite rating ListBox
/// <summary>
///  Create an infinite rating ListBox
/// </summary>
/// <param name="ddlst">ListBox Control </param>
/// <param name="dt"> Source DataTable</param>
/// <param name="text">text Field </param>
/// <param name="value">value Field </param>
/// <param name="parentid"> Depth field   For example parentid</param>
public static void CreateLevelListBox(ListBox ddlst, DataTable dt, string text, string value, string parentid)
{
  ArrayList allItems = new ArrayList();
  DataRow[] rows = dt.Select(parentid + "=0");
  foreach (DataRow row in rows)
    CreateLevelListBoxAssistant(dt, ref  allItems, row, string.Empty, text, value, parentid);
  ListItem[] items = new ListItem[allItems.Count];
  allItems.CopyTo(items);
  ddlst.Items.AddRange(items);
}
/// <summary>
///  Recursively bound child nodes 
/// </summary>
/// <param name="dt"> Source DataTable</param>
/// <param name="items"> Array </param>
/// <param name="parentRow"> Current node </param>
/// <param name="curHeader"> Prefix </param>
/// <param name="text">text Field </param>
/// <param name="value">value Field </param>
/// <param name="parentid"> Depth field   For example parentid</param>
private static void CreateLevelListBoxAssistant(DataTable dt, ref  ArrayList items, DataRow parentRow, string curHeader, string text, string value, string parentid)
{
  ListItem newItem = new ListItem(curHeader + Until.CutString(parentRow[text].ToString(), 18, true), parentRow[value].ToString());
  items.Add(newItem);
  DataRow[] rows = dt.Select(parentid + "=" + newItem.Value);
  for (int i = 0; i < rows.Length - 1; i++)
    CreateLevelListBoxAssistant(dt, ref  items, rows[i], curHeader.Replace(" Us ", " INTERVIEW ").Replace(" STUDY ", " Us ") + " Us ", text, value, parentid);
  if (rows.Length > 0)
    CreateLevelListBoxAssistant(dt, ref  items, rows[rows.Length - 1], curHeader.Replace(" Us ", " INTERVIEW ").Replace(" STUDY ", " Us ") + " STUDY ", text, value, parentid);
}
#endregion

For more readers interested in asp. net, please check the topics of this site: "Summary of asp. net Operation json Skills", "Summary of asp. net String Operation Skills", "Summary of asp. net Operation XML Skills", "Summary of asp. net File Operation Skills", "Summary of asp. net ajax Skills" and "Summary of asp. net Cache Operation Skills".

I hope this article is helpful to everyone's asp. net programming.


Related articles: