设置treeview 的treenode 的tag从表中或者从xml中
#region 设置树节点tag从表中
/// <summary>
/// 读取树节点从tag表中
/// </summary>
/// <param name="treview">要设置的树</param>
/// <param name="dt">从某个表中</param>
/// <param name="IsAppend">树节点是否追加</param>
/// <param name="ParentNumberIndex">父节点tag的表中字段的下标</param>
/// <param name="NumberIndex">当前节点tag表中的下标</param>
/// <param name="TextIndex">text的表中的下标</param>
/// <returns></returns>
public bool ReaderNodeFromTable(TreeView treview,DataTable dt, bool IsAppend, int ParentNumberIndex, int NumberIndex, int TextIndex)
{
try
{
if (!IsAppend)
{
treview.Nodes.Clear();
}
DataRow[] dr;
//当表中行大于0时候
if (dt != null && dt.Rows.Count > 0)
{
dr = dt.Select(dt.Columns[ParentNumberIndex].ColumnName + "= '' or " + dt.Columns[ParentNumberIndex].ColumnName + " is null");
for (int i = 0; i < dr.Length; i++)
{
TreeNode treeNode = new TreeNode(dr[i][dt.Columns[TextIndex].ColumnName].ToString());
treeNode.Tag = dr[i][dt.Columns[NumberIndex].ColumnName].ToString();
treview.Nodes.Add(treeNode);
}
//构造子节点。根据nodes
for (int i = 0; i < treview.Nodes.Count; i++)
{
ForTreeNodeFromDt(treview.Nodes[i], dt, ParentNumberIndex, NumberIndex, TextIndex);
}
}
return true;
}
catch
{
return false;
}
}
/// <summary>
/// 根据父节点tag生成每个子节点。
/// </summary>
/// <param name="treeNode">treeNode下标</param>
/// <param name="dt">对应的表数据</param>
/// <param name="ParentNumberIndex">父节点下标</param>
/// <param name="NumberIndex">当前节点下标</param>
/// <param name="TextIndex">当前文本</param>
private void ForTreeNodeFromDt(TreeNode treeNode, DataTable dt, int ParentNumberIndex, int NumberIndex, int TextIndex)
{
//查找出当前节点的子节点
DataRow[] dr;
if (dt != null && dt.Rows.Count > 0)
{
dr=dt.Select(dt.Columns[ParentNumberIndex].ColumnName+"='"+treeNode.Tag.ToString()+"'");
for (int i = 0; i < dr.Length; i++)
{
TreeNode tn = new TreeNode(dr[i][dt.Columns[TextIndex].ColumnName].ToString());
tn.Tag=dr[i][dt.Columns[NumberIndex].ColumnName].ToString();
treeNode.Nodes.Add(tn);
}
foreach (TreeNode treenode in treeNode.Nodes)
{
ForTreeNodeFromDt(treenode, dt, ParentNumberIndex, NumberIndex, TextIndex);
}
}
}
#endregion
#region 设置树节点从xml中
/// <summary>
/// 设置树节点从Xml文件中
/// </summary>
/// <param name="treview">树</param>
/// <param name="xmlPath">xml路径</param>
/// <param name="dt"></param>
/// <param name="IsAppend">是否追加</param>
/// <param name="ParentNumberIndex">父tag</param>
/// <param name="NumberIndex">当前tag</param>
/// <param name="TextIndex">当前text</param>
/// <returns></returns>
public bool ReaderNodeFromXml(TreeView treview, string xmlPath, bool IsAppend, int ParentNumberIndex, int NumberIndex, int TextIndex)
{
if (System.IO.File.Exists(xmlPath) == true)
{
try
{
DataSet ds = new DataSet();
ds.ReadXml(xmlPath);
ReaderNodeFromTable(treview, ds.Tables[0], IsAppend, ParentNumberIndex, NumberIndex, TextIndex);
return true;
}
catch
{
return false;
}
}
else
{
return false;
}
}
#endregion

浙公网安备 33010602011771号