如何把一个XML文件读取到treeView中呢?
解决方案 »
- sqlserver 同步出现问题
- 求一个按日期统计的问题
- C#用MySQLDriverCS连接数据库问题啊,求急啊
- 应用程序中如何使用缓存
- 先全屏,再AnimateWindow,怎么没有动画效果了。
- Crystal Report问题,紧急,高手请帮忙!
- 有dll反编译软件 好想要一个啊 到处也找不到
- 一个关于存储过程的菜鸟问题
- 下班前的最后一问:有一个ds,里有表dt,表有一栏colm1,对表进行查询判断是否有colm1对应的值是“aaa”,如果有此记录,则显示ok.
- 请问 用 C# 在不知道Excel列名的情况下,如何读取前三列的数据??
- 新手问题,急,using引用问题??
- 在Web中使用Socket长连接,连接自动断开
/// 生成树
/// </summary>
private void GenerateTree(string strSelNode)
{
//生成之前,将其置为空
this.dtCache = null; tvComponent.Nodes.Clear(); DataRow[] dv = dt.Select("Father_ID=0"); //DataView dv = dt.DefaultView;
//dv.RowFilter = "Father_ID=0"; //添加右键菜单
foreach (DataRow dr in dv)
{
TreeNode tn = new TreeNode();
tn.Text = dr["Component_Name"].ToString();
tn.Tag = dr["Component_ID"].ToString() + "," + dr["Type_Code"].ToString();
//ContextMenu menu = new ContextMenu();
//MenuItem item1 = new MenuItem("新增", new EventHandler(BtnNewBuilder));
//MenuItem item2 = new MenuItem("修改", new EventHandler(BtnDeleteBuilder));
//MenuItem item3 = new MenuItem("刷新", new EventHandler(BtnGenerateTree));
//MenuItem item4 = new MenuItem("导出", new EventHandler(btnExport_Click)); //menu.MenuItems.Add(item1);
//menu.MenuItems.Add(item2);
//menu.MenuItems.Add(item3);
//menu.MenuItems.Add(item4);
//tr.ContextMenu = menu; tvComponent.Nodes.Add(tn); AppendSubNode(tn);
} //防止没有结点时报错
//if (this.tvComponent.Nodes.Count > 0)
//{
// this.tvComponent.Nodes[0].Expand();
//} /// <summary>
/// 追加子结点
/// </summary>
/// <param name="tr"></param>
private void AppendSubNode(TreeNode tr)
{
string strID = tr.Tag.ToString().Split(',')[0]; DataRow[] dv = dt.Select(string.Format("Father_ID = '{0}'",strID));
//DataView dv = dt.DefaultView;
//dv.RowFilter = "Father_ID = '" + strID + " '"; if (dv.Length > 0)
{
foreach (DataRow dr in dv)
{
TreeNode subtr = new TreeNode();
subtr.Text = dr["Component_Name"].ToString();
subtr.Tag = dr["Component_ID"].ToString() + "," + dr["Type_Code"].ToString(); //如果是设备节点图片用合着的文件夹
if (dr["Type_Code"].ToString() == ((int)EnumCollections.ComponentType.Equipment).ToString())
{
subtr.ImageIndex = 1;
} tr.Nodes.Add(subtr); //递归调用
AppendSubNode(subtr);
}
}
}
}这是从datatable中加载的,xml可以读入dataset后再调用上面方法
DataSet ds = new DataSet();
ds.ReadXml(xmlFile);
<?xml version="1.0" encoding="utf-8" ?>
<gen text="总目录">
<zi1 text="第一目录" url="~/Main2.aspx" target="f2">
<sun1 text="叶目录a" url="~/Main2.aspx">
</sun1>
<sun2 text="叶目录b" url="~/Main2.aspx">
</sun2>
</zi1>
<zi2 text="第二目录" url="~Main1.aspx">
<sun3 text="叶目录d" url="~main22.aspx"></sun3>
<sun4 text="叶目录c" url="~/Main2.aspx">
</sun4>
</zi2>
</gen>
aspx文件
<asp:TreeView ID="TreeView1" runat="server" DataSourceID="XmlDataSource1" ImageSet="BulletedList3"
LineImagesFolder="~/TreeLineImages" ShowExpandCollapse="False" ShowLines="True" OnSelectedNodeChanged="TreeView1_SelectedNodeChanged">
<ParentNodeStyle Font-Bold="False" />
<HoverNodeStyle Font-Underline="True" ForeColor="#5555DD" />
<SelectedNodeStyle Font-Underline="True" ForeColor="#5555DD" HorizontalPadding="0px"
VerticalPadding="0px" />
<NodeStyle Font-Names="Verdana" Font-Size="8pt" ForeColor="Black" HorizontalPadding="5px"
NodeSpacing="0px" VerticalPadding="0px" />
<DataBindings>
<asp:TreeNodeBinding DataMember="gen" TextField="text" SelectAction="SelectExpand" />
<asp:TreeNodeBinding DataMember="zi1" NavigateUrlField="url" TargetField="target"
TextField="text" />
<asp:TreeNodeBinding DataMember="sun1" TargetField="url" TextField="text" />
<asp:TreeNodeBinding DataMember="zi2" TargetField="url" TextField="text" />
<asp:TreeNodeBinding DataMember="sun2" TargetField="url" TextField="text" />
<asp:TreeNodeBinding DataMember="sun3" TargetField="url" TextField="text" />
<asp:TreeNodeBinding DataMember="sun4" TargetField="url" TextField="text" />
</DataBindings>
</asp:TreeView>
<asp:XmlDataSource ID="XmlDataSource1" runat="server" DataFile="~/XMLFile.xml"></asp:XmlDataSource>