Public formtemplatemanager ()
{
Initializecomponent (); // ietd_file_template_v
This. maximizebox = false;
This. comboboxstructuretype. Treeview. nodes. Clear ();
String SQL = "select * From ietd_system_structure t ";
System. Data. datatable dt = dbhelperora. Query (SQL). Tables [0];
If (Dt. Rows. Count> 0)
{
Treenode root = new treenode ("document category Tree", 1, 2 );
Createtreeviewrecursive (root. nodes, DT, DT. Select ("parent_node_id = '-1'") [0] ["ID"]. tostring ());
Comboboxstructuretype. Treeview. nodes. Add (Root );
}
}
/// Recursive query
/// </Summary>
/// <Param name = "nodes"> node set of the Treeview </param>
/// <Param name = "datasource"> data source </param>
/// <Param name = "parentid"> </param>
Private void createtreeviewrecursive (treenodecollection nodes, datatable datasource, string ID)
{
String filter;
Filter = string. Format ("parent_node_id = '" + ID + "'");
Datarow [] drarr = datasource. Select (filter );
Treenode node;
Foreach (datarow DR in drarr)
{
Node = new treenode ();
Node. Text = (string) Dr ["node_name"];
Node. Tag = (string) Dr ["ID"];
Nodes. Add (node );
Createtreeviewnodes (node. nodes, datasource, (string) node. Tag );
}
}
Private void createtreeviewnodes (treenodecollection nodes, datatable datasource, string ID)
{
String filter;
Filter = string. Format ("parent_node_id = '" + ID + "'");
Datarow [] drarr = datasource. Select (filter );
Treenode node;
Foreach (datarow DR in drarr)
{
Node = new treenode ();
Node. Text = (string) Dr ["node_name"];
Node. Tag = (string) Dr ["ID"];
Nodes. Add (node );
Createtreeviewnodes (node. nodes, datasource, (string) node. Tag );
}
}
Namespace ietd. Forms
{
Class comboboxtreeview: ComboBox
{
Private const int wm_lbuttondown = 0x201, wm_lbuttondblclk = 0x203;
Toolstripcontrolhost treeviewhost;
Toolstripdropdown dropdown;
Public comboboxtreeview ()
{
Treeview = new Treeview ();
Treeview. afterselect + = new treevieweventhandler (treeview_afterselect );
Treeview. borderstyle = borderstyle. None;
Treeviewhost = new toolstripcontrolhost (Treeview );
Dropdown = new toolstripdropdown ();
Dropdown. width = This. width;
Dropdown. Items. Add (treeviewhost );
}
Public void treeview_afterselect (Object sender, treevieweventargs E)
{
If (Treeview. selectednode. nodes. Count> 0)
{
MessageBox. Show ("select a leaf node! ");
This. Text = "";
}
Else
{
This. Text = Treeview. selectednode. text;
Dropdown. Close ();
}
}
Public Treeview
{
Get {return treeviewhost. Control as Treeview ;}
}
Private void showdropdown ()
{
If (dropdown! = NULL)
{
Treeviewhost. size = new size (dropdownwidth-2, dropdownheight );
Dropdown. Show (this, 0, this. Height );
}
}
Protected override void wndproc (ref message m)
{
If (M. MSG = wm_lbuttondblclk | M. MSG = wm_lbuttondown)
{
Showdropdown ();
Return;
}
Base. wndproc (ref m );
}
Protected override void dispose (bool disposing)
{
If (disposing)
{
If (dropdown! = NULL)
{
Dropdown. Dispose ();
Dropdown = NULL;
}
}
Base. Dispose (disposing );
}
}
}