TreeView控件与SQL数据库的应用遍历算法.docx
- 文档编号:11107051
- 上传时间:2023-02-25
- 格式:DOCX
- 页数:47
- 大小:56.46KB
TreeView控件与SQL数据库的应用遍历算法.docx
《TreeView控件与SQL数据库的应用遍历算法.docx》由会员分享,可在线阅读,更多相关《TreeView控件与SQL数据库的应用遍历算法.docx(47页珍藏版)》请在冰豆网上搜索。
TreeView控件与SQL数据库的应用遍历算法
时间:
2011-03-2510:
08来源:
未知作者:
admin点击:
363次我要投稿 高质量的ASP.NET空间,完美支持1.0/2.0/3.5/4.0/MVC等
开发环境:
WinXPSP3,VS2008,SQL2000
TreeView控件与SQL数据库的应用(遍历算法)
(数据与TreeView的绑定及Treeview的增加、删除、修改、遍历等数据库的操作)
这个是数据库连接及一些操作数据库的方法,文件:
SqlManager.cs
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Linq;
usingSystem.Text;
usingSystem.Data.SqlClient;
usingSystem.Data;
usingSystem.Windows.Forms;
namespaceTreeViewText
{
classSqlManager
{
SqlConnectionconn;
stringstrConn;
publicSqlManager()
{
strConn=@"DataSource=.;InitialCatalog=TreeView;IntegratedSecurity=SSPI;PersistSecurityInfo=False;UserID=sa;Password=sa";
conn=newSqlConnection(strConn);
}
publicDataSetGetDataSet()
{
DataSetds=newDataSet();
SqlDataAdaptersda=newSqlDataAdapter(querySqlCmd,conn);
try
{
conn.Open();
sda.Fill(ds);
}
catch(Exceptionex)
{
MessageBox.Show(ex.Message,"获取数据失败!
");
}
finally
{
if(conn.State==ConnectionState.Open)
{
conn.Close();
}
}
returnds;
}
publicDataSetGetDataSet(stringsqlCmd)
{
DataSetds=newDataSet();
SqlDataAdapterda=newSqlDataAdapter(sqlCmd,conn);
try
{
conn.Open();
da.Fill(ds);
}
catch(Exceptionex)
{
MessageBox.Show(ex.Message,"获取数据失败!
");
}
finally
{
if(conn.State==ConnectionState.Open)
{
conn.Close();
}
}
returnds;
}
publicvoidRunSqlCommand(stringsqlCmd)
{
SqlCommandcmd=newSqlCommand(sqlCmd,conn);
try
{
conn.Open();
cmd.ExecuteNonQuery();
}
catch(Exceptionex)
{
MessageBox.Show(ex.Message,"操作数据库失败!
");
}
finally
{
if(conn.State==ConnectionState.Open)
{
conn.Close();
}
}
}
privatestringm_querySqlCmd;
#region获取SQL语句
publicstringquerySqlCmd
{
get
{
if(m_querySqlCmd==null)
{
return"select*fromTreeNode";
}
returnquerySqlCmd;
}
set
{
m_querySqlCmd=value;
}
}
#endregion
}
}
主窗体:
Form1.cs
usingSystem;
usingSystem.Collections.Generic;
usingSystem.ComponentModel;
usingSystem.Data;
usingSystem.Drawing;
usingSystem.Linq;
usingSystem.Text;
usingSystem.Windows.Forms;
usingSystem.Data.SqlClient;
namespaceTreeViewText
{
publicpartialclassForm1:
Form
{
publicForm1()
{
InitializeComponent();
}
privatevoidForm1_Load(objectsender,EventArgse)
{
//TreeNodetreeNode1=newTreeNode("节点1",newTreeNode[]{treeNode4,treeNode5});
//treeView1.Nodes.AddRange(newTreeNode[]{treeNode1});
}
#regionTreeView节点编辑(没有修改数据库)
privatevoidbtnEdit_Click(objectsender,EventArgse)
{
if(treeView1.SelectedNode!
=null)
if(!
treeView1.SelectedNode.IsEditing)
treeView1.SelectedNode.BeginEdit();
}
privatevoidbtnDelete_Click(objectsender,EventArgse)
{
if(treeView1.SelectedNode!
=null)
treeView1.SelectedNode.Remove();
}
privatevoidbtnAddNode_Click(objectsender,EventArgse)
{
TreeNodetreeNodeTemp=newTreeNode(GetNodeText());
if(treeView1.Nodes.Count>0)
{
if(treeView1.SelectedNode!
=null)
{
if(treeView1.SelectedNode.Parent!
=null)
treeView1.SelectedNode.Parent.Nodes.Add(treeNodeTemp);
else
treeView1.Nodes.Add(treeNodeTemp);
}
}
else
{
treeView1.Nodes.Add(treeNodeTemp);
}
}
privatevoidbtnAddChild_Click(objectsender,EventArgse)
{
TreeNodetreeNodeTemp=newTreeNode(GetNodeText());
if(treeView1.SelectedNode!
=null)
{
treeView1.SelectedNode.Nodes.Add(treeNodeTemp);
}
}
#region获取文本框文本信息
///
///获取文本框文本信息
///
///
privatestringGetNodeText()
{
if(!
String.IsNullOrEmpty(tbNodeName.Text.Trim()))
returntbNodeName.Text.Trim();
return"TreeNode";
}
#endregion
#endregion
///
///查询数据
///
///
///
privatevoidbtnQuery_Click(objectsender,EventArgse)
{
SqlManagersqlManager=newSqlManager();
dataGridView1.DataSource=sqlManager.GetDataSet(sqlManager.querySqlCmd).Tables[0];
//清空TreeView的内容
treeView1.Nodes.Clear();
//递归函数,0为根节点的父节点ParentID的值
AddTreeView(0,(TreeNode)null);
//非递归(两层分类显示)
//ShowTreeView((TreeNode)null);
//展开所有树节点
//treeView1.Expand();
}
///
///退出程序
///
///
///
privatevoidbtnExit_Click(objectsender,EventArgse)
{
this.Close();
}
#region获得数据库信息放入TreeView中(递归)
privatevoidAddTreeView(intParentID,TreeNodeparentNode)
{
SqlManagersqlManager=newSqlManager();
DataViewdataTree=newDataView(sqlManager.GetDataSet().Tables[0]);
stringfilter="ParentID="+ParentID;
dataTree.RowFilter=filter;
foreach(DataRowViewrowindataTree)
{
TreeNodenode=newTreeNode();
//处理根节点
if(parentNode==null)
{
node.Name=row["ID"].ToString();
node.Text=row["Name"].ToString();
treeView1.Nodes.Add(node);
AddTreeView(Int32.Parse(row["ID"].ToString().Trim()),node);
}
//处理子节点
else
{
node.Name=row["ID"].ToString();
node.Text=row["Name"].ToString();
parentNode.Nodes.Add(node);
AddTreeView(Int32.Parse(row["ID"].ToString().Trim()),node);
}
}
}
#endregion
#region获得数据库信息放入TreeView中(非递归函数,根据Category来分类,仅支持两层分类)
/*privatevoidShowTreeView(TreeNodepNode)
{
treeView1.Nodes.Clear();
SqlManagersqlManager=newSqlManager();
DataViewdataTree=newDataView(sqlManager.GetDataSet("selectdistinctCategoryfromTreeNode").Tables[0]);
foreach(DataRowViewrowindataTree)
{
TreeNodenode=newTreeNode();
node.Text=row["Category"].ToString();
treeView1.Nodes.Add(node);
CreateChildNodes(node);
}
}
//获取第二层节点的的数据
privatevoidCreateChildNodes(TreeNodetreenode)
{
SqlManagersqlManager=newSqlManager();
DataViewdataTree=newDataView(sqlManager.GetDataSet().Tables[0]);
dataTree.RowFilter="Category='"+treenode.Text+"'";
foreach(DataRowViewrowindataTree)
{
TreeNodenode=newTreeNode();
node.Text=row["Name"].ToString();
treenode.Nodes.Add(node);
}
}*/
#endregion
///
///添加记录
///
///
///
privatevoidbtnAdd_Click(objectsender,EventArgse)
{
SqlManagersqlManager=newSqlManager();
stringinsertSqlCmd=String.Empty;
if(TextBoxValidator(tbParentID))
{
MessageBox.Show("请输入ParentID(父节点)","提示");
tbParentID.Focus();
}
elseif(TextBoxValidator(tbName))
{
MessageBox.Show("请输入Name(物品名称)","提示");
tbName.Focus();
}
elseif(TextBoxValidator(tbCategory))
{
MessageBox.Show("请输入Category(物品类别)","提示");
tbCategory.Focus();
}
else
{
insertSqlCmd="insertintoTreeNode(ParentID,Name,Category)values("+tbParentID.Text.Trim()+",'"+tbName.Text.Trim()+"','"+tbCategory.Text.Trim()+"');";
sqlManager.RunSqlCommand(insertSqlCmd);
dataGridView1.DataSource=sqlManager.GetDataSet(sqlManager.querySqlCmd).Tables[0];
treeView1.Nodes.Clear();
AddTreeView(0,(TreeNode)null);
//treeView1.ExpandAll();
}
}
///
///修改记录
///
///
///
privatevoidbtnModify_Click(objectsender,EventArgse)
{
SqlManagersqlManager=newSqlManager();
stringupdateSqlCmd=String.Empty;
if(TextBoxValidator(tbID))
MessageBox.Show("请先选择一个产品","提示");
elseif(TextBoxValidator(tbParentID))
{
MessageBox.Show("请输入ParentID(父节点)","提示");
tbParentID.Focus();
}
elseif(tbID.Text.Trim()==tbParentID.Text.Trim())
{
MessageBox.Show("ID(产品ID)不能与ParentID(父节点)相同,请重新输入","提示");
tbParentID.Focus();
}
elseif(TextBoxValidator(tbName))
{
MessageBox.Show("请输入Name(物品名称)","提示");
tbName.Focus();
}
elseif(TextBoxValidator(tbCategory))
{
MessageBox.Show("请输入Category(物品类别)","提示");
tbCategory.Focus();
}
else
{
updateSqlCmd="updateTreeNodesetParentID="+tbParentID.Text.Trim()+",Name='"+tbName.Text.Trim()+"',Category='"+tbCategory.Text.Trim()+"'whereID="+tbID.Text.Trim()+";";
sqlManager.RunSqlCommand(updateSqlCmd);
dataGridView1.DataSource=sqlManager.GetDataSet(sqlManager.querySqlCmd).Tables[0];
treeView1.Nodes.Clear();
AddTreeView(0,(TreeNode)null);
//treeView1.ExpandAll();
}
}
///
///删除记录
///
///
///
privatevoidbtnRemove_Click(objectsender,EventArgse)
{
if(treeView1.SelectedNode!
=null)
{
TreeNodenode=treeView1.SelectedNode;
//删除所选节点及其所有子节点
DeleteTreeNode(node);
SqlManagersqlManager=newSqlManager();
dataGridView1.DataSource=sqlManager.GetDataSet(sqlManager.querySqlCmd).Tables[0];
}
}
///
///删除所选节点及其所有子节点(通过遍历节点删除对应的数据库数据)
///
///
privatevoidDeleteTreeNode(TreeNodeparentNode)
{
/***************方法一:
删除选中节点及其所有子节点***************/
intchildCount=parentNode.Nodes.Count;
for(inti=0;i { TreeNodechildNode=parentNode.Nodes[0]; if(childNode.Nodes.Count>0) { DeleteTreeNode(childNode); } else { DeleteNodeData(childNode); childNode.Remove(); } } if(parentNode.Nodes.Count==0) { DeleteNodeData(parentNode); parentNode.Remove(); } /***************方法二: 删除选中节点及其所有子节点***************/ //TreeNodeCollectiontreeNodeCollection=parentNode.Nodes; //intcount=treeNodeCollection.Count; //for(inti=0;i //{ //TreeNodenode=treeNodeCollection[0]; //if(node.Nodes.Count>0) //{ //DeleteTreeNode(node); //} //else //{ //DeleteNodeData(node); //node.Remove(); //} //} //if(treeNodeCollection.Count==0) //{ //DeleteNodeData(parentNode); //parentNode.Remove(); //} } ///
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- TreeView 控件 SQL 数据库 应用 遍历 算法