TreeView控件操作开发篇之(四)

[size=large]读取树节点从DataTable[/size]
 #region 读取树节点从DataTable

/// <summary>
///读取树节点从DataTable
/// </summary>
/// <param name="Tv">TreeView控件</param>
/// <param name="Dt">要读取的DataTable</param>
/// <param name="IsAppend">是否追加</param>
/// <param name="ParentColumnIndex">父节点编号名称字段的索引</param>
/// <param name="CurrColumnIndex">当前节点编号名称字段的索引</param>
/// <param name="CurrNameColumnIndex">当前节点Text名称字段的索引</param>
/// <returns></returns>
public bool ReadNodeFromDataTable(TreeView Tv, DataTable Dt, bool IsAppend, int ParentColumnIndex, int CurrColumnIndex, int CurrNameColumnIndex)
{
try
{
if (!IsAppend)
{
Tv.Nodes.Clear();
}

if (Dt != null && Dt.Rows.Count > 0)
{
DataRow[] Dr = null;
//找出所有的父节点编号为空或null的记录,也就是所有的父节点
Dr = Dt.Select(Dt.Columns[ParentColumnIndex].ColumnName + "=''or " + Dt.Columns[ParentColumnIndex].ColumnName + " is null");
//遍历父节点
for (int i = 0; i < Dr.Length; i++)
{
TreeNode pNode = new TreeNode(Dr[i][Dt.Columns[CurrNameColumnIndex].ColumnName].ToString());
pNode.Tag = Dr[i][Dt.Columns[CurrColumnIndex].ColumnName].ToString();//当前节点编号保存到节点的tag属性中
Tv.Nodes.Add(pNode);
}
for (int i = 0; i < Tv.Nodes.Count; i++)
{
forReadNodeFromDataTable(Tv.Nodes[i], Dt, ParentColumnIndex, CurrColumnIndex, CurrNameColumnIndex);
}
return true;
}
else
{
return false;
}
}
catch
{
return false;
}
}

/// <summary>
/// 从DataTable中递归遍历树节点
/// </summary>
/// <param name="Node">树节点</param>
/// <param name="Dt">DataTable</param>
/// <param name="ParentColumnIndex">父节点编号名称字段的索引</param>
/// <param name="CurrColumnIndex">当前节点编号名称字段的索引</param>
/// <param name="CurrNameColumnIndex">当前节点Text名称字段的索引</param>
private void forReadNodeFromDataTable(TreeNode Node,DataTable Dt,int ParentColumnIndex,int CurrColumnIndex,int CurrNameColumnIndex)
{
DataRow[] Dr = null;
string tempTag = Node.Tag.ToString();//取出当前节点编号
Dr = Dt.Select(Dt.Columns[ParentColumnIndex].ColumnName + "='" + tempTag + "'");//得到当前节点下的所有子节点
for (int i = 0; i < Dr.Length; i++)
{
TreeNode cNode = new TreeNode(Dr[i][Dt.Columns[CurrNameColumnIndex].ColumnName].ToString());
cNode.Tag = Dr[i][Dt.Columns[CurrColumnIndex].ColumnName].ToString();
Node.Nodes.Add(cNode);
}
foreach (TreeNode aNode in Node.Nodes)
{
forReadNodeFromDataTable(aNode, Dt, ParentColumnIndex, CurrColumnIndex, CurrNameColumnIndex);
}

}


#endregion
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值