public tree_node generate_tree(int depth, int branch_factor, float chance_to_branch) { System.Random rnd = new System.Random(); tree_node root = new tree_node(null, new List <tree_node>(), rnd.Next(1, 100000).ToString()); List <tree_node> this_level = new List <tree_node>(); List <tree_node> next_level = new List <tree_node>(); this_level.Add(root); for (int c = 0; c < depth; c++) // do c times: { for (int i = 0; i < this_level.Count; i++) // for each current level: { for (int j = 0; j < branch_factor; j++) { if (rnd.NextDouble() < chance_to_branch) // if can branch: { tree_node next = new tree_node(this_level[i], new List <tree_node>(), rnd.Next(1, 100000).ToString()); // might want to find a better way to name nodes. this_level[i].children.Add(next); next_level.Add(next); } } } this_level = next_level; next_level = new List <tree_node>(); } return(root); }
override public System.Web.UI.WebControls.TreeNode AddNode( System.Web.UI.WebControls.TreeNodeCollection Nodes, System.Web.UI.WebControls.TreeNode NewNode, tree_node T_N) { if (Nodes.Equals(tree.Nodes) && (T_N != null)) { //searches the right node into which do the additon DataRow R = T_N.Row; int skind = Convert.ToInt32(R["flag"]); string kind; if ((skind & 1) == 1) { kind = "S"; } else { kind = "E"; } foreach (System.Web.UI.WebControls.TreeNode N in Nodes) { if (N.Text == kind) { return(base.AddNode(N.ChildNodes, NewNode, T_N)); } } } return(base.AddNode(Nodes, NewNode, T_N)); }
public override void FillNodes() { base.FillNodes(); AutoEventsEnabled = false; System.Web.UI.WebControls.TreeNode[] newroot = new System.Web.UI.WebControls.TreeNode[1]; newroot[0] = new System.Web.UI.WebControls.TreeNode("Classificazione"); tree.Nodes.Add(newroot[0]); if (tree.Nodes.Count > 0) { System.Web.UI.WebControls.TreeNode TN = tree.Nodes[0] as System.Web.UI.WebControls.TreeNode; if (GetTag(TN) == null) { return; } } while (tree.Nodes.Count > 1) { System.Web.UI.WebControls.TreeNode X = tree.Nodes[0]; tree_node TN = GetTag(X); if (TN == null) { tree.Nodes.RemoveAt(0); continue; } MovSubTree(tree.Nodes, 0, newroot[0]); } newroot[0].Expand(); AutoEventsEnabled = true; }
public override void treeview_BeforeSelect(object sender, TreeViewCancelEventArgs e) { System.Windows.Forms.TreeNode N = e.Node; if (N.Tag != null) { tree_node TN = (tree_node)N.Tag; DataRow r = TN.Row; if (maxlevel > 0 && CfgFn.GetNoNullInt32(r["nlevel"]) >= maxlevel) { N.Nodes.Clear(); return; } } base.treeview_BeforeSelect(sender, e); }
override public System.Web.UI.WebControls.TreeNode AddNode( System.Web.UI.WebControls.TreeNodeCollection Nodes, System.Web.UI.WebControls.TreeNode NewNode, tree_node T_N) { if (Nodes.Equals(tree.Nodes) && (T_N != null)) { //searches the right node into which do the additon DataRow R = T_N.Row; string kind = R["finpart"].ToString(); foreach (System.Web.UI.WebControls.TreeNode N in Nodes) { if (N.Text == kind) { return(base.AddNode(N.ChildNodes, NewNode, T_N)); } } } return(base.AddNode(Nodes, NewNode, T_N)); }
public override void treeview_BeforeSelect(System.Web.UI.WebControls.TreeNode N) { if (N == null) { return; } if (GetTag(N) == null) { return; } tree_node TN = GetTag(N); DataRow r = TN.Row; if (maxlevel > 0 && CfgFn.GetNoNullInt32(r["nlevel"]) >= maxlevel) { N.ChildNodes.Clear(); return; } base.treeview_BeforeSelect(N); }
public override void FillNodes() { base.FillNodes(); AutoEventsEnabled = false; if (tree.Nodes.Count > 0) { System.Web.UI.WebControls.TreeNode TN = tree.Nodes[0] as System.Web.UI.WebControls.TreeNode; if (GetTag(TN) == null) { return; } //if (tree.Nodes[0].Tag == null) return; } System.Web.UI.WebControls.TreeNode newroot = new System.Web.UI.WebControls.TreeNode("Causale"); tree.Nodes.Add(newroot); while (tree.Nodes.Count > 1) { System.Web.UI.WebControls.TreeNode X = tree.Nodes[0] as System.Web.UI.WebControls.TreeNode; tree_node X_TAG = GetTag(X); if (X_TAG == null) { tree.Nodes.RemoveAt(0); continue; } MovSubTree(tree.Nodes, 0, newroot); } //tree.Nodes.Add(newroot); if (newroot.ChildNodes.Count > 0) { newroot.Expand(); } AutoEventsEnabled = true; }
public override void FillNodes() { base.FillNodes(); AutoEventsEnabled = false; System.Web.UI.WebControls.TreeNode[] newroot = new System.Web.UI.WebControls.TreeNode[kind.Length]; int n_root = newroot.Length; for (int i = 0; i < kind.Length; i++) { newroot[i] = new System.Web.UI.WebControls.TreeNode(kind.Substring(i, 1)); tree.Nodes.Add(newroot[i]); } if (tree.Nodes.Count > 0) { System.Web.UI.WebControls.TreeNode TN = tree.Nodes[0] as System.Web.UI.WebControls.TreeNode; if (GetTag(TN) == null) { return; } } while (tree.Nodes.Count > n_root) { System.Web.UI.WebControls.TreeNode X = tree.Nodes[0] as System.Web.UI.WebControls.TreeNode; tree_node X_TAG = GetTag(X); if (X_TAG == null) { tree.Nodes.RemoveAt(0); continue; } DataRow R = X_TAG.Row; for (int i = 0; i < kind.Length; i++) { int skind = Convert.ToInt32(R["flag"]); string akind; if ((skind & 1) == 1) { akind = "S"; } else { akind = "E"; } if (akind == kind.Substring(i, 1)) { MovSubTree(tree.Nodes, 0, newroot[i]); break; } } } int j = 0; for (int i = 0; i < kind.Length; i++) { if (newroot[j].ChildNodes.Count > 0) { newroot[j].Expand(); j++; } else { tree.Nodes.RemoveAt(j); } } AutoEventsEnabled = true; }
/// <summary> /// Gets current row from ComboBox, Grids and tree-views, return false on errors /// </summary> /// <param name="C">Control to analyze</param> /// <param name="T">Table containing rows</param> /// <param name="R">Current selected row (null if none)</param> /// <returns>false on errors</returns> public static bool GetCurrentRow(DataSet DS, Control C, out DataTable T, out DataRow R) { R = null; //in case of errors, always return a value T = null; if (typeof(ComboBox).IsAssignableFrom(C.GetType())) { ComboBox CParent = (ComboBox)C; if (CParent.DataSource == null) { return(false); } T = DS.Tables[((DataTable)(CParent.DataSource)).TableName]; if (CParent.SelectedIndex <= 0) //index 0 is used for blank row { R = null; return(true); } DataRowView RV = ((DataRowView)((ComboBox)C).Items[CParent.SelectedIndex]); if (RV == null) { return(true); } R = RV.Row; if (R.Table == T) { return(true); } R = FindExternalRow(T, R); return(true); } //T is taken from DS, using TAG Table //Row is taken from T, using a filter using current grid row if (typeof(DataGrid).IsAssignableFrom(C.GetType())) { if (C.Tag == null) { return(false); } string tablename = HelpForm.GetField(C.Tag.ToString(), 0); if (tablename == null) { return(false); } T = DS.Tables[tablename]; DataGrid GParent = (DataGrid)C; DataSet DSV = (DataSet)GParent.DataSource; if (DSV == null) { return(false); } DataTable TV = DSV.Tables[GParent.DataMember]; if (TV == null) { return(false); } if (TV.Rows.Count == 0) { return(true); } DataRowView DV = null; try { DV = (DataRowView)GParent.BindingContext[DSV, TV.TableName].Current; } catch { DV = null; } if (DV == null) { return(true); } R = DV.Row; if (TV.Equals(T)) { return(true); } R = FindExternalRow(T, R); return(true); } if (typeof(TreeView).IsAssignableFrom(C.GetType())) { TreeView TParent = (TreeView)C; string tablename = HelpForm.GetField(TParent.Tag.ToString(), 0); if (tablename == null) { return(false); } T = DS.Tables[tablename]; TreeNode N = (TreeNode)TParent.SelectedNode; try { tree_node treenode = (tree_node)(N.Tag); T = treenode.Row.Table; R = treenode.Row; return(true); } catch { return(true); } } return(false); }
override public System.Web.UI.WebControls.TreeNode AddNode(System.Web.UI.WebControls.TreeNodeCollection Nodes, System.Web.UI.WebControls.TreeNode NewNode, tree_node T_N) { if (Nodes.Equals(tree.Nodes) && (T_N != null)) { foreach (System.Web.UI.WebControls.TreeNode N in Nodes) { if (N.Text == "Causale") { return(base.AddNode(N.ChildNodes, NewNode, T_N)); } } } return(base.AddNode(Nodes, NewNode, T_N)); }
public tree_node(tree_node parent, List <tree_node> children, string name) { this.parent = parent; this.children = children; this.name = name; }
public override System.Web.UI.WebControls.TreeNode AddNode(System.Web.UI.WebControls.TreeNodeCollection Nodes, System.Web.UI.WebControls.TreeNode NewNode, tree_node T_N) { if (Nodes.Equals(tree.Nodes) && (T_N != null) && (tree.Nodes.Count > 0)) { if (GetTag(tree.Nodes[0]) == null) { return(base.AddNode(tree.Nodes[0].ChildNodes, NewNode, T_N)); } } return(base.AddNode(Nodes, NewNode, T_N)); }