你好!很高兴为你解答!
结合Access数据库代码如下:
private DataSet GetData(string sql){ //不知道你用的什么数据库,我由于最近在用Access,
//所以函数是连接的Access,得到 DataSet
//如果用SQL Server或者其他是类似的,传入sql语句,得到DataSet
//DBAccess是自定义类,没有贴上代码,如果要具体的数据库连接代码,说一下
string accessDb = @"E:\dat.mdb"
DBAccess access = new DBAccess(accessDb, sql)
return access.GetDataSet()
}
private void button1_Click(object sender, EventArgs e)
{
DataSet ds = GetData("select 父节点 from 表")//获取数据集dataset
foreach (DataRow row in ds.Tables[0].Rows)
{
TreeNode node = new TreeNode(row["父节点"].ToString())
node.Name = row["父节点"].ToString()
if (!root.Nodes.ContainsKey(node.Name))
{
root.Nodes.Add(node)
}
}
}
private void treeView1_NodeMouseDoubleClick(object sender, TreeNodeMouseClickEventArgs e)
{
TreeNode clickedNode = e.Node
string name = clickedNode.Text
DataSet ds = GetData("select 子节点 from 表 where 父节点='" + name + "'")
foreach (DataRow row in ds.Tables[0].Rows)
{
TreeNode node = new TreeNode(row["子节点"].ToString())
node.Name = row["子节点"].ToString()
if (!clickedNode.Nodes.ContainsKey(node.Name))
{
clickedNode.Nodes.Add(node)
}
}
}
希望对你有所帮助,还望采纳,谢谢!!!
C#里treeview向指定NAME节点添加子节点时应就这样做:
先要用treenode定义节点对象。
TreeView1.SelectedNode.ChildNodes.Add //给选中的添加。
TreeView1.Nodes[index].ChildNodes.Add //给指定index的节点添加。
TreeView控件用来显示信息的分级视图,如同Windows里的资源管理器的目录。TreeView控件中的各项信息都有一个与之相关的Node对象。
TreeView显示Node对象的分层目录结构,每个Node对象均由一个Label对象和其相关的位图组成。在建立TreeView控件后,我们可以展开和折叠、显示或隐藏其中的节点。
TreeView控件一般用来显示文件和目录结构、文档中的类层次、索引中的层次和其他具有分层目录结构的信息。
原因很明显,当有新增的节点,Items已经发生了改变,所以你的items[x]是一个变量而非常量。一个最笨的办法就是,在没有添加任何子节点前,把节点用StaticNodes:array of TTreeNode数组保存起来,然后再通过StaticNodes[x].AddChild进行添加。
如果想动态一点就得加一个搜索功能(TreeView控件并没有附带节点搜索功能),你添加子节点前得手动查询到父节点。
以下是一个比较简单的方法:
function FindNodeByText(aTree:TTreeViewtheTexts:String):TTreeNode
var
i:Integer
begin
Result:=NIL
for i:=0 to aTree.Items.Count-1 do
if aTree.Items[i].Text=theTexts then
begin
Result:=aTree.Items[i]
Break
end
end
查询的方法有很多更有效率的
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)