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("文档分类树", 1, 2);
CreateTreeViewRecursive(root.Nodes, dt, dt.Select("PARENT_NODE_ID='-1'")[0]["ID"].ToString());
comboBoxStructureType.TreeView.Nodes.Add(root);
}
}
/// 递归查询
/// </summary>
/// <param name="nodes">TreeView的节点集合</param>
/// <param name="dataSource">数据源</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 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("请选择叶子节点!");
this.Text = "";
}
else
{
this.Text = TreeView.SelectedNode.Text;
dropDown.Close();
}
}
public TreeView 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);
}
}
}