treeView的一些常用用法
程序员文章站
2024-01-22 19:44:16
...
递归加载 这里有点不好理解。先写个函数得到父ID下的子节点
/// <summary>
/// 根据pid获取所有的子类别
/// </summary>
/// <param name="pid"></param>
/// <returns></returns>
public List<TScript> GetScriptsByParentId(int pid)
{
List<TScript> list = new List<TScript>();
string sql = "select ScriptId,ScriptTitle from T_Scripts where [email protected]";
using (SqlDataReader reader = SqlHelper.ExecuteReader(sql, new SqlParameter("@pid", pid)))
{
if (reader.HasRows)
{
while (reader.Read())
{
TScript model = new TScript();
model.ScriptId = reader.GetInt32(0);
model.ScriptTitle = reader.GetString(1);
list.Add(model);
}
}
}
return list;
}
然后才开始写递归函数
private void LoadDataToTree(TreeNodeCollection treeNodeCollection, List<Area> list)
{
foreach (Area item in list)
{
TreeNode tnode = treeNodeCollection.Add(item.AreaName);
//记录当前区域的Id
tnode.Tag = item.AreaId;
//获取当前Id对应的所有的子城市
List<Area> listSub = GetDataByParentId(item.AreaId);
LoadDataToTree(tnode.Nodes, listSub);
}
}
最后调用
//获取所有父Id为0的那些省份与直辖市
List<Area> list = GetDataByParentId(0);
//将List中的数据绑定到TreeView上。
LoadDataToTree(treeView1.Nodes, list);
递归删除
private void DeleteByAreaId(int areaId)
{
//1.先查询出areaId下面的所有的子元素
List<Area> list = GetDataByParentId(areaId);
foreach (Area item in list)
{
DeleteByAreaId(item.AreaId);
}
string sql = "delete from TblArea where [email protected]";
SqlParameter pm = new SqlParameter("@id", areaId);
SqlHelper.ExecuteNonQuery(sql, pm);
}
知道节点的名称,得到该节点的实例
申明一个节点集合。用来存所有节点
List<TreeNode> list= new List<TreeNode>();
private TreeNode GetNode(TreeView tv, string value)
{
TreeNode tn=null;
//得到所有节点
foreach (TreeNode item in tv.Nodes)
{
FindNode(item);
}
foreach (TreeNode item in list)
{
if (item.Tag.ToString() == value)
{
tn = item;
return tn;
}
}
return tn;
}
private void FindNode(TreeNode parent)
{
list.Add(parent);
foreach (TreeNode item in parent.Nodes)
{
FindNode(item);
}
}
用法
TreeNode tn = GetNode(TreeView1, value);
从树上移去节点自己
tn.remove();
鼠标点击节时(不管左键还是右键) 使用节点得到焦点
private void treeView1_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
{
treeView1.SelectedNode =e.Node ;
}
上一篇: 常用时间工具函数
下一篇: vue动态加载本地图片的处理方法