Namespace mytree.controls {/// /// Role: Rewriting Tree Control /// Writing Date: 2004-7-2 /// summary> /// public class tree: system.windows .forms .TreeView {private string [] _ParentFields; private string [] _DisplayFields; private string [] _ValueFields; private string [] _SortOrder; /// /// defined WebService /// summary> public XSTBD.BDWSCall. WebsrvQuery.WebsrvQuery WebsrvQuery; /// /// Define Properties DISPLAYFIELDS: Save Tree Node Displayed Field Name /// Summary> Public String [] DisplayFields {Get {Return this._displayfields;} set {ix (this._displayfields! = value) this._displayfields = value;}} /// /// Define Properties VALUEFIELDS: Save the tree node association data field, determine the relationship between the parentian node with the property ParentFields /// summary> public string [] valuefields {get {return this._valuefields;} set {if (this._valuefields! = value) this._Valuefields = value;}}
/// /// Define Properties ParentFields: Save the parent node association data subparagraph, with the property valuefields to determine the relationship between the parent-child node /// summary> public string [] parentfields {get {Return this. _Parentfields;} set {if (this._parentfields! = Value) this._parentfields = value;}} /// /// define attribute Sortorder: Tree layer Sort field /// summary> public string [] Sortorder {get {return {g (this._sortorder! = Value) this._sortorder = value;}} /// /// defaults to the default constructor /// summary> Public tree () {
} /// /// Add Node /// summary> /// Parent Name param> /// Parent Name param> /// Node information entity < / param> /// icon serial number param> /// Return Node index returns> public int address (Treenode pnode, treenodeinfo plannodeinfo, int imageindex) {Treenode Node = new TreeNode (); node.Text = planNodeInfo.nodeText; node.Tag = planNodeInfo; node.ImageIndex = imageIndex; node.SelectedImageIndex = node.ImageIndex; return PNode.Nodes.Add (node);} /// /// Modify node information /// summary> /// modified node param> /// Node information entity param> Public void updatenode (Treenode Node, Treenodeinfo) {node.text = plannodeinfo.tenodeText; node.tag = plannodeinfo;} /// /// refresh node icon /// summary> /// refreshed node param> /// icon ID param> public void RefurbishImage (TreeNode node, int imageIndex) {node.ImageIndex = imageIndex; node.SelectedImageIn DEX = node.imageIndex;} /// /// Remove node and all child nodes /// summary> /// Delete Node Name param> public void Delnode (Treenode node) {if (node == null) return; node.remove ();} /// /// display tree /// summary> /// The parent node can be empty.
If it is not empty, the tree will be displayed under its subtree; otherwise it is displayed as a new tree param> /// From the data set to get the node display data param> / // Layer of the tree to be loaded param> public void DrawTree (Treenode PNode, DataSet Data, INTHETIT) {if (pnode == null) {dataview dataview = new dataview (); DataView.Table = Data.Tables [0]; String RowFilter; RowFilter = this._valuefields [0] "> 1"; RowFilter = RowFilter "AND" THIS._VALUEFIELDS [1] "= 0"; DataView. RowFilter = rowfilter; for (int i = 0; i /// Show tree /// summary> /// < Param name = "PNODE"> The parent node can be empty.
If it is not empty, the tree will be displayed under its sub-tree; otherwise, as a new tree displays param> /// Data from the query string array to get the tree node displayed < / param> /// Layer number to be loaded param> public void drawtree (Treenode PNode, String [] selectStr, int Height) {if (pnode == null) {dataset dataset = webSrvQuery.GetQueryDataSetBySQLText (SelectStr [0]); foreach (DataRow dataRow in dataSet.Tables [0] .Rows) {TreeNode node = new TreeNode (); node.Text = dataRow [this._DisplayFields [0]] ToString (. ); TreeNodeInfo nodeInfo = new TreeNodeInfo (); nodeInfo.nodeText = node.Text; nodeInfo.dataValue = System.Convert .ToInt32 (dataRow [this._ValueFields [0]]); nodeInfo.level = ((TreeNodeInfo) PNode.Tag ) .lege 1; node.tag = nodeinfo; if ((TREENODEINFO) Node.tag) .level> = 3) node.IMageIndex = 3 System.convert .toint32 (DataRow ["Dattype_nr"]); else Node .IMageIndex = nodeinfo.LectedImageIndex = node.imageindex; this.nodes.add (node); DrawNodes (Node, Selectstr, 1, Heigh T-1);}} else {DrawNodes (PNode, SelectStr, 1, Height);}} /// /// Show tree /// summary> /// Parent node, you can empty param> /// query string param> /// Layer number to be loaded param> Public void drawtree (Treenode Pnode, String SelectStr, INT Height) {DataSet Data = WebsrvQuery.getQueryDataSetBysqltext (SELECTSTR); DrawTree (PNode, Data, HEIGHT);}
/// /// Display sub-tree node /// ///// Display the parent node of the subtree, can not be empty param> /// Data from the data set to the data param> /// The height of the current tree param> /// to be added Layer Param> Public Void DrawNodes (TREENODE PNODE, INTHETINT) {IF ((Height <= 0) || (TreeHeight> this._parentfields.length) {Return;} if (PNode .Nodes.count> 0) // node already exists {Forenode (Treenode Node in pnode.nodes) DrawNodes (Node, Data, TreeHeight 1, Height-1);} else {dataview data; new dataview (); dataview. Table = Data.Tables [0]; string rowFilter; rowFilter = this._ValueFields [TreeHeight - 1] "> 1"; if (TreeHeight <= 1) {rowFilter = rowFilter "and" this._ParentFields [TreeHeight - 1] "= 0";} if (! (("(! ((! ((! (!) .DataValue.equals (0)) {RowFilter = RowFilter " and " this._parentfields [TreeHeight - 1] " = " (TREENODEINFO) PNODE.TAG) .DataValue. Tostring ();} dataview.rowfilter = rowfilter; for (int i = 0; i
node.Tag = nodeInfo; node.ImageIndex = nodeInfo.level; node.SelectedImageIndex = node.ImageIndex; node.SelectedImageIndex = nodeInfo.level; PNode.Nodes.Add (node); DrawNodes (node, Data, TreeHeight 1, Height -1);
}}} /// /// Display sub-tree nodes /// summary> /// Display the parent node of the subtree, can not be empty param> // / Get tree node display data from query string array param> /// The height of the current tree param> //// Time to add the number of layers param> public void DrawNodes (Treenode Pnode, String [] SelectStr, INT TreeHeight, INT Height {IF ((Height <= 0) || (TreeHeight> this._parentfields.Length)) {Return;} f (pnode.nodes.count> 0) // node already exists {foreach (Treenode Node in pnode.nodes) DrawNodes (Node, SelectStr, Treeheight 1, Height - 1);} else {string wherestr = ""; If (! ("(!) .DataValue.equals (0)) {string fieldname = this._parentfields [treeHeight - 1]; if (FieldName.length> 0) WhereStr = WHERESTR " AND " fieldName "=" ((TreeNodeInfo) PNode.Tag) .dataValue .ToString ();} DataSet dataSet = webSrvQuery.GetQueryDataSetBySQLText (SelectStr [TreeHeight - 1] whereStr "Order By" SortOrder [TreeH EIGHT - 1]); Foreach (DATAROW DATAROW IN DATASET.TABLES [0 ].Rows) {Treenode Node = New Treenode (); Node.Text = DATAROW [THIS._DISPLAYFIELDS [TREEHEHT - 1]]. TOSTRING (); TreenodeInfo nodeInfo = new TreeNodeInfo (); nodeInfo.nodeText = node.Text; nodeInfo.dataValue = System.Convert .ToInt32 (dataRow [this._ValueFields [TreeHeight - 1]]); nodeInfo.level = ((TreeNodeInfo) PNode.Tag) level 1; node.tag = nodeinfo; if (this.name == "Plantree" &
& NodeInfo.level> = 3) node.ImageIndex = 3 System.Convert .ToInt32 (dataRow [ "DataType_NR"]); else node.ImageIndex = nodeInfo.level; node.SelectedImageIndex = node.ImageIndex; PNode.Nodes.Add (Node); DrawNodes (Node, SELECTSTR, TREEHEHT 1, HEIGHT - 1);
}}} /// /// Add a tree node under PNODE (subjected to sub-node information according to Query Strings SelectStr) /// summary> /// Parent Node < / param> /// Query string param> /// Node display text field param> /// node value field param> public void DrawNodes (TreeNode PNode, string SelectStr, string DisplayStr, string ValueText) {if (PNode.Nodes.Count> 0) return; DataSet dataSet = webSrvQuery.GetQueryDataSetBySQLText (SelectStr); foreach (DataRow dataRow in dataSet.Tables [0] .Rows) {TreeNode node = new TreeNode (); node.Text = dataRow [DisplayStr] .ToString (); TreeNodeInfo nodeInfo = new TreeNodeInfo (); nodeInfo.nodeText = node.Text; nodeInfo .dataValue = System.Convert .ToInt32 (dataRow [ValueText]); nodeInfo.level = ((TreeNodeInfo) PNode.Tag) .level 1; node.Tag = nodeInfo; node.ImageIndex = nodeInfo.level; node.SelectedImageIndex = Node.ImageIndex; pnode.nodes.add (node);}} /// /// Show sub-tree node /// summary> /// Displays the parent node of the subtree, cannot be empty param> /// data from the query string to get the node displayed param> /// The height of the current tree param> /// To add the number of layers param> public void DrawNodes (Treenode PNode, String SelectStr, Int TreeHeight, Int Height) { DataSet Data = WebsrvQuery.getQueryDataSetBysqltext (SelectStr); DrawNodes (PNode, Data, TreeHeight, Height);} /// /// Search Node /// summary>
/// Parent Name param> /// Search Node's tree path to each layer value param> /// Tree Nuevery Character strings) param> public void serchnode (Treenode PNode, Int [] Serchvalue, String [] selectStr) {if (Serchvalue.Length <= ((TreenodeIdeInfo) Pnode.tag) .level 1) RETURN; Forenode Node in pnode.nodes {ixode ((TreenodeIndeinfo) node.tag) .DataValue.equals (Serchvalue [(TreenodeIndeinfo) Node.tag) .level]) {this.selectedNode = Node SerchNode (Node, Serchvalue, SelectStr); Break;}}} /// /// Search Node /// summary> /// Search Node The tree path is located Layer value param> /// Tree layers Query string array param> public void serchnode (int [] serchvalue, string [] selectstr) {if (Serchvalue.Length <= 0) Return; Foreach (Treenode Node In this.nodes) {IF ((TREENODEINFO) Node.tag) .DataValue.equals (Serchvalue [(TreenodeInfo) Node.tag) .level]) {this.selectedNO DE = Node; SerchNode (Node, Serchvalue, SelectStr); Break;}}} /// /// load a layer of text node /// summary> /// The parent node to load the text node param> /// The text of the node set to load param> public void drawtextnodes (Treenode PNode, String [] TextStr) {If (pnode.nodes.count> 0) // node already exists {return;} int i = 0; Foreach (String text in textstr) {
TreeNode node = new TreeNode (); node.Text = text; TreeNodeInfo nodeInfo = new TreeNodeInfo (); nodeInfo.nodeText = node.Text; nodeInfo.dataValue = i; nodeInfo.level = ((TreeNodeInfo) pNode.Tag) .level 1; node.tag = nodeinfo; node.imageindex = i 2; node.selectedimageIndex = node.imageindex; pnode.nodes.add (node); i ;}
} /// /// Add subtree nodes (cross-layer acquisition associated DataValue) /// summary> /// Parent nodding on the sub-tree can not be empty parame> /// Read Database by querying string to get tree node display data param> /// The height of the current tree param> public void DrawNodesCross (TreeNode PNode, string [] SelectStr, int TreeHeight) {if (PNode.Nodes.Count> 0) // node already exists {return;} string whereStr = ""; string fieldName = this._ParentFields [TreeHeight - 1];
dataValue whereStr // take the parent node of the parent node = whereStr "and" fieldName "=" ((TreeNodeInfo) PNode.Parent.Tag) .dataValue .ToString (); DataSet dataSet = webSrvQuery.GetQueryDataSetBySQLText (SelectStr [ Treeheight - 1] WHERESTR "ORDER BY" Sortorder [TreeHeight - 1]); Foreach (DataRow DataRow In Dataset.tables [0] .ROWS) {Treenode Node = New Treenode (); Node.Text = DATAROW [THIS ._DisplayFields [TreeHeight - 1]] ToString ();. TreeNodeInfo nodeInfo = new TreeNodeInfo (); nodeInfo.nodeText = node.Text; nodeInfo.dataValue = System.Convert .ToInt32 (dataRow [this._ValueFields [TreeHeight - 1]] ); Nodeinfo.Level = (TREENODEINFO) pnode.tag) .levent 1; nodeinfo.nodetext = node.text; node.tag = nodeInfo; node.imageIndex = nodeinfo.Level - 1; // Because of the previous layer The icon is not with the same series of node.selectedimageIndex = node.imageindex; pnode.nodes.add (node);}}
}
}