关于树形控件

时间:2022-09-06 16:02:21
最近一段时间一直在围绕树形控件在做东西
在最开始的一段时间里由于开始所用的数据类型是用数据组实现的
造成在后期的树形控件的节点的添加困难
最终还是取消了用数组来实现,而用了DataSet
主要相关代码:
关于树形控件private   void  treeView1_AfterSelect( object  sender, System.Windows.Forms.TreeViewEventArgs e)
关于树形控件关于树形控件        
{
关于树形控件            
try
关于树形控件关于树形控件            
{
关于树形控件                
//节点为根节点
关于树形控件
                if(this.treeView1.SelectedNode.Parent ==null)
关于树形控件关于树形控件                
{
关于树形控件                    flagIOServer 
=true;
关于树形控件                    
this.tabControl1.SelectedIndex =0;
关于树形控件                    
this.menuItem_AddIOServer.Enabled=true;
关于树形控件                    
this.menuItem_AddSubSystem.Enabled=false;
关于树形控件                    
this.menuItem_AddSystem.Enabled=false;
关于树形控件                    
this.menuItem_AddTag.Enabled=false;
关于树形控件                    
this.menuItem_DeleteSubSystem.Enabled=false;
关于树形控件                    
this.menuItem_DeleteSystem.Enabled=false;
关于树形控件                    
this.menuItem_UpdateTag.Enabled=false;
关于树形控件                    ds.Tables.Clear();
关于树形控件                    comm.CommandText 
="select TagID 列表ID ,AutoSubSysID 子系统ID,TagCode 节点编码,TagName 节点名称,TagType 节点类型,TagValueType 数据类型,TagMaxValue 最大值,TagMinValue 最小值,TagAlartMax 报警最大值 ,TagAlartMin 报警最小值,TagSaveInterval 存储时间间隔,TagSaveIgBand 存储变化盲区,CreateTime 创建时间,TimeStampMode 时戳确定方式,TagAlartPos 报警点,TagAlartPosDes 报警点描述,Description 描述 from TagInfo";
关于树形控件                    da 
= new OracleDataAdapter(comm.CommandText,conn);
关于树形控件                    
if(conn.State.ToString()=="Open")
关于树形控件关于树形控件                    
{
关于树形控件                        da.Fill(ds,
"TagInfo");
关于树形控件                        conn.Close();
关于树形控件                        takeHideValue(
"TagInfo");
关于树形控件                        
this.dataGrid1.DataSource =ds.Tables["TagInfo"];
关于树形控件                    }

关于树形控件                    
else
关于树形控件关于树形控件                    
{
关于树形控件                        conn.Open();
关于树形控件                        da.Fill(ds,
"TagInfo");
关于树形控件                        conn.Close();
关于树形控件                        takeHideValue(
"TagInfo");
关于树形控件                        
this.dataGrid1.DataSource=ds.Tables["TagInfo"];
关于树形控件                    }

关于树形控件                }

关于树形控件                    
//节点为IOServer节点
关于树形控件
                else if(this.treeView1.SelectedNode.Parent.Parent ==null)
关于树形控件关于树形控件                
{
关于树形控件                    flagSystem 
=true;
关于树形控件                    flagIOServer 
=false;
关于树形控件                    selectNode 
=this.treeView1.SelectedNode;
关于树形控件                    
this.tabControl1.SelectedIndex =2;
关于树形控件                    
this.menuItem_AddIOServer.Enabled=true;
关于树形控件                    
this.menuItem_AddSubSystem.Enabled=false;
关于树形控件                    
this.menuItem_AddSystem.Enabled=true;
关于树形控件                    
this.menuItem_AddTag.Enabled=false;
关于树形控件                    
this.menuItem_DeleteSubSystem.Enabled=false;
关于树形控件                    
this.menuItem_DeleteSystem.Enabled=false;
关于树形控件                    
this.menuItem_UpdateTag.Enabled=false;
关于树形控件                    
string ID =this.treeView1.SelectedNode.Text.ToString().Trim().Substring(0,10);
关于树形控件                    comm.CommandText
="select * from IOServerInfo where IOServerID =";
关于树形控件                    comm.CommandText
+="'"+ID+"'";
关于树形控件                    da 
= new OracleDataAdapter(comm.CommandText,conn);
关于树形控件                    
if(conn.State.ToString()=="Open")
关于树形控件关于树形控件                    
{
关于树形控件                        da.Fill(ds,
"tab_IO");
关于树形控件                        conn.Close();
关于树形控件                    }

关于树形控件                    
else
关于树形控件关于树形控件                    
{
关于树形控件                        conn.Open();
关于树形控件                        da.Fill(ds,
"tab_IO");
关于树形控件                        conn.Close();
关于树形控件                    }

关于树形控件                    
foreach(DataRow RowIO in ds.Tables["tab_IO"].Rows)
关于树形控件关于树形控件                    
{
关于树形控件                        
this.txt_IOServerCode.Text =RowIO[1].ToString().Trim();
关于树形控件                        
this.txt_IOServerName.Text=RowIO[2].ToString().Trim();
关于树形控件                        
this.rtxt_IOServer.Text=RowIO[4].ToString().Trim();
关于树形控件                    }

关于树形控件                    ds.Tables.Clear();
关于树形控件                    comm.CommandText
="select TagID 列表ID ,TagInfo.AutoSubSysID 子系统ID,TagCode 节点编码,TagName 节点名称,TagType 节点类型,TagValueType 数据类型 ,TagMaxValue 最大值,TagMinValue 最小值,TagAlartMax 报警最大值 ,TagAlartMin 报警最小值,TagSaveInterval 存储时间间隔,TagSaveIgBand 存储变化盲区,TagInfo.CreateTime 创建时间,TagInfo.TimeStampMode 时戳确定方式,TagAlartPos 报警点,TagAlartPosDes 报警点描述,TagInfo.Description 描述 from TagInfo where AutoSubSysID in (select AutoSubSysID from ";
关于树形控件                    comm.CommandText
+="AutoSubSystemInfo where AutoSysID in (select AutoSysID from AutoSystemInfo where IOServerID";
关于树形控件                    comm.CommandText
+=" in(select IOServerID from IOServerInfo where IOServerID =";
关于树形控件                    comm.CommandText
+="'"+ID+"'";
关于树形控件                    comm.CommandText
+=")))";
关于树形控件                    da 
= new OracleDataAdapter(comm.CommandText,conn);
关于树形控件                    
if(conn.State.ToString()=="Open")
关于树形控件关于树形控件                    
{
关于树形控件                        da.Fill(ds,
"Tag_IOServer");
关于树形控件                        conn.Close();
关于树形控件                    }

关于树形控件                    
else
关于树形控件关于树形控件                    
{
关于树形控件                        conn.Open();
关于树形控件                        da.Fill(ds,
"Tag_IOServer");
关于树形控件                        conn.Close();
关于树形控件                    }

关于树形控件                    takeHideValue(
"Tag_IOServer");
关于树形控件                    
this.dataGrid1.DataSource=ds.Tables["Tag_IOServer"];
关于树形控件                }

关于树形控件                    
//节点为系统节点
关于树形控件
                else if(this.treeView1.SelectedNode.Parent.Parent.Parent ==null)
关于树形控件关于树形控件                
{
关于树形控件                    flagSysSub 
=true;
关于树形控件                    flagSystem 
=false;
关于树形控件                    selectNode 
=this.treeView1.SelectedNode;
关于树形控件                    
this.tabControl1.SelectedIndex =1;
关于树形控件                    
this.menuItem_AddIOServer.Enabled=false;
关于树形控件                    
this.menuItem_AddSubSystem.Enabled=true;
关于树形控件                    
this.menuItem_AddSystem.Enabled=true;
关于树形控件                    
this.menuItem_AddTag.Enabled=false;
关于树形控件                    
this.menuItem_DeleteSubSystem.Enabled=false;
关于树形控件                    
this.menuItem_DeleteSystem.Enabled=true;
关于树形控件                    
this.menuItem_UpdateTag.Enabled=false;
关于树形控件                    
string ID =this.treeView1.SelectedNode.Text.ToString().Trim().Substring(0,10);
关于树形控件                    comm.CommandText
="select * from AutoSystemInfo where AutoSysID =";
关于树形控件                    comm.CommandText
+="'"+ID+"'";
关于树形控件                    da 
= new OracleDataAdapter(comm.CommandText,conn);
关于树形控件                    
if(conn.State.ToString()=="Open")
关于树形控件关于树形控件                    
{
关于树形控件                        da.Fill(ds,
"tab_Sys");
关于树形控件                        conn.Close();
关于树形控件                    }

关于树形控件                    
else
关于树形控件关于树形控件                    
{
关于树形控件                        conn.Open();
关于树形控件                        da.Fill(ds,
"tab_Sys");
关于树形控件                        conn.Close();
关于树形控件                    }

关于树形控件                    
foreach(DataRow RowSys in ds.Tables["tab_Sys"].Rows)
关于树形控件关于树形控件                    
{
关于树形控件                        
this.txt_SysName.Text =RowSys[4].ToString().Trim();
关于树形控件                        
this.txt_SysCode.Text =RowSys[3].ToString().Trim();
关于树形控件                        
switch(RowSys[7].ToString())
关于树形控件关于树形控件                        
{
关于树形控件                            
case "0":this.cmb_SysMode.Text="实时";
关于树形控件                                
break;
关于树形控件                            
case "1":this.cmb_SysMode.Text="非实时";
关于树形控件                                
break;
关于树形控件                            
default:
关于树形控件                                
break;
关于树形控件                        }

关于树形控件                    }

关于树形控件                    
string IOID =this.treeView1.SelectedNode.Parent.Text.ToString().Trim().Substring(0,10);
关于树形控件                    comm.CommandText
="select * from IOServerInfo where IOServerID =";
关于树形控件                    comm.CommandText
+="'"+IOID+"'";
关于树形控件                    da 
=new OracleDataAdapter(comm.CommandText,conn);
关于树形控件                    
if(conn.State.ToString()=="Open")
关于树形控件关于树形控件                    
{
关于树形控件                        da.Fill(ds,
"SysIOID");
关于树形控件                        conn.Close();
关于树形控件                    }

关于树形控件                    
else
关于树形控件关于树形控件                    
{
关于树形控件                        conn.Open();
关于树形控件                        da.Fill(ds,
"SysIOID");
关于树形控件                        conn.Close();
关于树形控件                    }

关于树形控件                    
foreach(DataRow RowSysID in ds.Tables["SysIOID"].Rows)
关于树形控件关于树形控件                    
{
关于树形控件                        
this.txt_SysIOID.Text =IOID;
关于树形控件                        
this.txt_SysIOName.Text =RowSysID[2].ToString();
关于树形控件                    }

关于树形控件                    ds.Tables.Clear();
关于树形控件                    comm.CommandText
="select TagID 列表ID ,TagInfo.AutoSubSysID 子系统ID,TagCode 节点编码,TagName 节点名称,TagType 节点类型,TagValueType 数据类型 ,TagMaxValue 最大值,TagMinValue 最小值,TagAlartMax 报警最大值 ,TagAlartMin 报警最小值,TagSaveInterval 存储时间间隔,TagSaveIgBand 存储变化盲区,TagInfo.CreateTime 创建时间,TagInfo.TimeStampMode 时戳确定方式,TagAlartPos 报警点,TagAlartPosDes 报警点描述,TagInfo.Description 描述 from TagInfo where AutoSubSysID in (select AutoSubSysID from"
关于树形控件                    comm.CommandText
+=" AutoSubSystemInfo where AutoSysID in (select AutoSysID from AutoSystemInfo";
关于树形控件                    comm.CommandText
+=" where AutoSysID =";
关于树形控件                    comm.CommandText
+="'"+ID+"'";
关于树形控件                    comm.CommandText
+="))";
关于树形控件                    da 
= new OracleDataAdapter(comm.CommandText,conn);
关于树形控件                    
if(conn.State.ToString()=="Open")
关于树形控件关于树形控件                    
{
关于树形控件                        da.Fill(ds,
"Tag_Sys");
关于树形控件                        conn.Close();
关于树形控件                    }

关于树形控件                    
else
关于树形控件关于树形控件                    
{
关于树形控件                        conn.Open();
关于树形控件                        da.Fill(ds,
"Tag_Sys");
关于树形控件                        conn.Close();
关于树形控件                    }

关于树形控件                    takeHideValue(
"Tag_Sys");
关于树形控件                    
this.dataGrid1.DataSource=ds.Tables["Tag_Sys"];
关于树形控件                }

关于树形控件                    
//节点为子系统节点
关于树形控件
                else if(this.treeView1.SelectedNode.Parent.Parent.Parent.Parent ==null)
关于树形控件关于树形控件                
{
关于树形控件                    flagSysSub 
=false;
关于树形控件                    selectNode 
=this.treeView1.SelectedNode;
关于树形控件                    
this.tabControl1.SelectedIndex =3;
关于树形控件                    
string ID = this.treeView1.SelectedNode.Text.ToString().Trim().Substring(0,10);
关于树形控件                    comm.CommandText
="select count(*) from TagInfo where AutoSubSysID =";
关于树形控件                    comm.CommandText
+="'"+ID+"'";
关于树形控件                    
int count;
关于树形控件                    
if(conn.State.ToString()=="Open")
关于树形控件关于树形控件                    
{
关于树形控件                        count
=Convert.ToInt32(comm.ExecuteScalar());
关于树形控件                        conn.Close();
关于树形控件                    }

关于树形控件                    
else
关于树形控件关于树形控件                    
{
关于树形控件                        conn.Open();
关于树形控件                        count 
=Convert.ToInt32(comm.ExecuteScalar());
关于树形控件                        conn.Close();
关于树形控件                    }

关于树形控件                    
if(count>0)
关于树形控件关于树形控件                    
{
关于树形控件                        
this.menuItem_AddIOServer.Enabled=false;
关于树形控件                        
this.menuItem_AddSubSystem.Enabled=true;
关于树形控件                        
this.menuItem_AddSystem.Enabled=false;
关于树形控件                        
this.menuItem_AddTag.Enabled=false;
关于树形控件                        
this.menuItem_DeleteSubSystem.Enabled=true;
关于树形控件                        
this.menuItem_DeleteSystem.Enabled=false;
关于树形控件                        
this.menuItem_UpdateTag.Enabled=true;
关于树形控件                    }

关于树形控件                    
else
关于树形控件关于树形控件                    
{
关于树形控件                        
this.menuItem_AddIOServer.Enabled=false;
关于树形控件                        
this.menuItem_AddSubSystem.Enabled=true;
关于树形控件                        
this.menuItem_AddSystem.Enabled=false;
关于树形控件                        
this.menuItem_AddTag.Enabled=true;
关于树形控件                        
this.menuItem_DeleteSubSystem.Enabled=true;
关于树形控件                        
this.menuItem_DeleteSystem.Enabled=false;
关于树形控件                        
this.menuItem_UpdateTag.Enabled=false;
关于树形控件                    }

关于树形控件                    comm.CommandText 
="select * from AutoSubSystemInfo where AutoSubSysID =";
关于树形控件                    comm.CommandText
+="'"+ID+"'";
关于树形控件                    da 
= new OracleDataAdapter(comm.CommandText,conn);
关于树形控件                    
if(conn.State.ToString()=="Open")
关于树形控件关于树形控件                    
{
关于树形控件                        da.Fill(ds,
"SubSys");
关于树形控件                        conn.Close();
关于树形控件                    }

关于树形控件                    
else
关于树形控件关于树形控件                    
{
关于树形控件                        conn.Open();
关于树形控件                        da.Fill(ds,
"SubSys");
关于树形控件                        conn.Close();
关于树形控件                    }

关于树形控件                    
foreach(DataRow RowSubSys in ds.Tables["Subsys"].Rows)
关于树形控件关于树形控件                    
{
关于树形控件                        
this.txt_SubCode.Text =RowSubSys[2].ToString();
关于树形控件                        
this.txt_SubName.Text =RowSubSys[3].ToString();
关于树形控件                        
this.rtxt_SubInfo.Text=RowSubSys[5].ToString();
关于树形控件                    }

关于树形控件                    comm.CommandText
="select * from AutoSystemInfo where AutoSysID =";
关于树形控件                    comm.CommandText
+="'"+this.treeView1.SelectedNode.Parent.Text.ToString().Trim().Substring(0,10)+"'";
关于树形控件                    da 
= new OracleDataAdapter(comm.CommandText,conn);
关于树形控件                    
if(conn.State.ToString()=="Open")
关于树形控件关于树形控件                    
{
关于树形控件                        da.Fill(ds,
"SubSysSysID");
关于树形控件                        conn.Close();
关于树形控件                    }

关于树形控件                    
else
关于树形控件关于树形控件                    
{
关于树形控件                        conn.Open();
关于树形控件                        da.Fill(ds,
"SubSysSysID");
关于树形控件                        conn.Close();
关于树形控件                    }

关于树形控件                    
foreach(DataRow RowSubSysSysID in ds.Tables["SubSysSysID"].Rows)
关于树形控件关于树形控件                    
{
关于树形控件                        
this.txt_SysSubName.Text=RowSubSysSysID[4].ToString();
关于树形控件                    }

关于树形控件                    ds.Tables.Clear();
关于树形控件                    comm.CommandText 
="select TagID 列表ID ,AutoSubSysID 子系统ID,TagCode 节点编码,TagName 节点名称,TagType 节点类型,TagValueType 数据类型,TagMaxValue 最大值,TagMinValue 最小值,TagAlartMax 报警最大值 ,TagAlartMin 报警最小值,TagSaveInterval 存储时间间隔,TagSaveIgBand 存储变化盲区,CreateTime 创建时间,TimeStampMode 时戳确定方式,TagAlartPos 报警点,TagAlartPosDes 报警点描述,Description 描述 from TagInfo where AutoSubSysID =";
关于树形控件                    comm.CommandText
+="'"+this.treeView1.SelectedNode.Text.ToString().Trim().Substring(0,10)+"'";
关于树形控件                    da 
= new OracleDataAdapter(comm.CommandText,conn);
关于树形控件                    
if(conn.State.ToString()=="Open")
关于树形控件关于树形控件                    
{
关于树形控件                        da.Fill(ds,
"Tag_SubSys");
关于树形控件                        conn.Close();
关于树形控件                    }

关于树形控件                    
else
关于树形控件关于树形控件                    
{
关于树形控件                        conn.Open();
关于树形控件                        da.Fill(ds,
"Tag_SubSys");
关于树形控件                        conn.Close();
关于树形控件                    }

关于树形控件                    takeHideValue(
"Tag_SubSys");
关于树形控件                    
this.dataGrid1.DataSource =ds.Tables["Tag_SubSys"];
关于树形控件                }

关于树形控件            }

关于树形控件            
catch(Exception ex)
关于树形控件关于树形控件            
{
关于树形控件                MessageBox.Show(ex.Message,title,MessageBoxButtons.OK,MessageBoxIcon.Information);
关于树形控件            }

关于树形控件
关于树形控件        }

在DataSet中手动添加节点:
关于树形控件private  DataTable IOServerNode  =   new  DataTable( " IOServerNode " );
关于树形控件        
private  DataTable SubSysNode  =   new  DataTable( " SubSysNode " );
关于树形控件        
private  DataTable SysNode  =   new  DataTable( " SysNode " );
关于树形控件IOServerNode.Columns.Add(
" IOServerID " , typeof ( string ));
关于树形控件            IOServerNode.Columns.Add(
" IOServerName " , typeof ( string ));
关于树形控件            SysNode.Columns.Add(
" AutoSysID " , typeof ( string ));
关于树形控件            SysNode.Columns.Add(
" AutoSysName " , typeof ( string ));
关于树形控件            SysNode.Columns.Add(
" IOServerID " , typeof ( string ));
关于树形控件            SubSysNode.Columns.Add(
" AutoSubSysID " , typeof ( string ));
关于树形控件            SubSysNode.Columns.Add(
" AutoSubSysName " , typeof ( string ));
关于树形控件            SubSysNode.Columns.Add(
" AutoSysID " , typeof ( string ));
关于树形控件            dsNode.Tables.Add(IOServerNode);
关于树形控件            dsNode.Tables.Add(SysNode);
关于树形控件            dsNode.Tables.Add(SubSysNode);
关于树形控件
//             DataRowCollection rc;
关于树形控件                    
//             DataRow newRow;
关于树形控件                    
//             object [] rowValues = new object[2];
关于树形控件                    
//             rowValues[0]="0000000210";
关于树形控件                    
//             rowValues[1]="这是一个测试";
关于树形控件                    
//             rc =dsNode.Tables["IOServerNode"].Rows;
关于树形控件                    
//             newRow =dsNode.Tables["IOServerNode"].NewRow();
关于树形控件                    
//             newRow = rc.Add(rowValues);
关于树形控件                    
// dsNode.Tables["IOServerNode"].ImportRow(newRow);