LogWrite.WriteLine("开始分别获取oracle和rar中的tree结构... \r\n");
DataTable table = GetDataTable("select * from " + tableName);
GetOracleToFillNode(table, null, "0");
/// <summary>
/// table转treeview
/// </summary>
/// <param name="dt"></param>
/// <param name="node"></param>
/// <param name="nodetag">node对应的编号</param>
private static void GetOracleToFillNode(DataTable dt, TreeNode node, string nodetag)
{
DataView dv = new DataView(dt);
if (node == null)//根结点
{
dv.RowFilter = "PARENTCODE='0'"; //筛选到根结点的所有子节点
}
else//不是根结点
{
dv.RowFilter = "PARENTCODE='" + nodetag + "'";//筛选对应节点的所有子节点
}
foreach (DataRowView drv in dv)//遍历填充节点的所有子节点,如果传入的节点node为叶子节点,遍历要退出,不再进行递归
{
TreeNode no = null;
if (string.IsNullOrEmpty(drv["FILEFORMAT"].ToString()))//文件无类型,是文件夹
{
no = new TreeNode(drv["CATALOGNAME"].ToString() + "&" + drv["ISMUST"].ToString());//文件夹名称&是否为必查项(0,1,2)
}
else//文件有类型(可以有多个类型,且shp格式需要特殊处理)
{
no = new TreeNode(drv["CATALOGNAME"].ToString() + "." + drv["FILEFORMAT"].ToString() + "&" + drv["ISMUST"].ToString());//文件名称.文件类型(多个用/隔开)&是否为必查项(0,1,2)
}
GetOracleToFillNode(dt, no, drv["CODE"].ToString());//填充no节点的子节点
if (node == null)
{
v_TreeviewOracle.Nodes.Add(no);
}
else
{
node.Nodes.Add(no);
}
}
}