读取XML绑定TreeNode
<asp:TreeView ID="treeview" OnClick="TreeViewCheckBox_Click()" runat="server">
</asp:TreeView>
treeview.ShowCheckBoxes = TreeNodeTypes.All;
treeview.ShowLines = true;
treeview.ExpandDepth = ;
treeview.TreeNodeCheckChanged += new TreeNodeEventHandler(treeview_TreeNodeCheckChanged);
if (!IsPostBack)
{
string url = "../../Xml/LayerConfig11.xml";
url = Server.MapPath(url);
XmlDocument xDoc = new XmlDocument();
xDoc.Load(url); XmlNode fn = xDoc.DocumentElement;
TreeNode tn = new TreeNode();
tn.Text = fn.Attributes["Name"].Value;
tn.ImageUrl = fn.Attributes["Icon"].Value;
tn.SelectAction = TreeNodeSelectAction.None;
treeview.Nodes.Add(tn); for (int i = ; i < treeview.Nodes.Count; i++)
{
if (treeview.Nodes[i].Checked)
{
treeview.Nodes[i].Parent.Checked = true;
}
}
XmlNodeList nodes = fn.ChildNodes;
foreach (XmlNode item in nodes)
{ if (item.Attributes["No"].Value == "" || item.Attributes["No"].Value == "")
{
TreeNode tn02 = new TreeNode();
tn02.Text = item.Attributes["Name"].Value;
tn02.ImageUrl = item.Attributes["Icon"].Value;
tn02.SelectAction = TreeNodeSelectAction.None;
tn.ChildNodes.Add(tn02);
AddNodes(tn02, item);
}
}
}
void treeview_TreeNodeCheckChanged(object sender, TreeNodeEventArgs e)
{
TreeNode tn = e.Node;
bool IsChecked = tn.Checked; CheckTreeNodeParent(tn, IsChecked); CheckTreeNodeChildren(tn, IsChecked);
}
treeview_TreeNodeCheckChanged事件
/// <summary>
/// 选中父类节点
/// </summary>
/// <param name="tn"></param>
/// <param name="Checked"></param>
private void CheckTreeNodeParent(TreeNode tn, bool Checked)
{
TreeNode ptn = tn.Parent; if (ptn != null)
{
if (Checked)
{
ptn.Checked = Checked;
CheckTreeNodeParent(ptn, Checked);
}
else
{
bool HasTreeNodeChecked = HasCheckedTreeNode(ptn);
if (!HasTreeNodeChecked)
{
ptn.Checked = Checked;
CheckTreeNodeParent(ptn, Checked);
}
}
}
}
选中父类节点
private bool HasCheckedTreeNode(TreeNode tn)
{
bool IsChecked = false;
if (tn != null)
{
TreeNodeCollection tns = tn.ChildNodes;
if (tns != null)
{
for (int i = ; i < tns.Count; i++)
{
if (tns[i].Checked)
{
IsChecked = true;
break;
}
else
{
HasCheckedTreeNode(tns[i]);
}
}
}
} return IsChecked;
}
判断子节点中是否还有选中的节点
private void CheckTreeNodeChildren(TreeNode tn, bool Checked)
{
TreeNodeCollection tns = tn.ChildNodes;
if (tns != null)
{
for (int i = ; i < tns.Count; i++)
{
tns[i].Checked = Checked; CheckTreeNodeChildren(tns[i], Checked);
}
}
}
选中子节点
/// <summary>
/// 递归绑定节点
/// </summary>
/// <param name="tnode">父级节点</param>
/// <param name="xnode">源节点</param>
private void AddNodes(TreeNode tnode, XmlNode xnode)
{
if (xnode.HasChildNodes)
{
foreach (XmlNode child in xnode.ChildNodes)
{
TreeNode tn03 = new TreeNode();
tn03.Text = child.Attributes["Name"].Value;
tn03.ImageUrl = child.Attributes["Icon"].Value;
tn03.SelectAction = TreeNodeSelectAction.None;
tnode.ChildNodes.Add(tn03);
if (child.HasChildNodes)
{
AddNodes(tn03, child);
}
else
{
continue;
}
}
}
}
递归绑定节点
读取XML绑定TreeNode的更多相关文章
- InnerException 消息是“反序列化对象 属于类型 *** 时出现错误。读取 XML 数据时,超出最大字符串内容长度配额 (8192)。(注意细节)
WEB站点在调用我们WCF服务的时候,只要传入的参数过长,就报如下错误: 格式化程序尝试对消息反序列化时引发异常: 尝试对参数 http://tempuri.org/ 进行反序列化时出错: formD ...
- 读取xml并将节点保存到Excal
using NPOI.HPSF; using NPOI.HSSF.UserModel; using NPOI.SS.UserModel; using System; using System.Coll ...
- Web Service 或 WCF调用时读取 XML 数据时,超出最大字符串内容长度配额(8192)解决方法
1.调用服务时服务 当我们使用 Web Service 或 WCF 服务时,常把读取的数据转化为string类型(xml格式),当数据量达到一 定数量时,会出现以下异常: 错误:格式化程序尝试对消息反 ...
- Ajax读取XML和JSON数据
Ajax从服务器获取的数据都是字符串,但是通过不同的解析,可以解析为XML或者JSON. 一般来说.使用XML格式的数据比较通用,但是服务器和客户端解析起来都比较复杂一些;而使用JSON语句话,服务端 ...
- 格式化程序尝试对消息反序列化时引发异常: 尝试对参数 http://tempuri.org/ 进行反序列化时出错: GetLzdtArticleResult。InnerException 消息是“反序列化对象 属于类型 lzdt.DTO.Dtolzdt[] 时出现错误。读取 XML 数据时,超出最大
当遇到这个错误的时候郁闷了好长时间报错是字符串长度过大可是修改了MaxStringContentLength”属性的值却不起作用最后才发现还是因为配置文件配置的问题在服务端 格式化程序尝试对消息反序列 ...
- C#读取xml文件写入到TreeView中
开发过程中我们会遇到一些读取xml文件的时候,下面是我学习的整理. 用XmlDocument读取加载 XmlDocument doc = new XmlDocument(); doc.Load(&qu ...
- ASP.NET MVC 学习笔记-2.Razor语法 ASP.NET MVC 学习笔记-1.ASP.NET MVC 基础 反射的具体应用 策略模式的具体应用 责任链模式的具体应用 ServiceStack.Redis订阅发布服务的调用 C#读取XML文件的基类实现
ASP.NET MVC 学习笔记-2.Razor语法 1. 表达式 表达式必须跟在“@”符号之后, 2. 代码块 代码块必须位于“@{}”中,并且每行代码必须以“: ...
- 读取xml数据装配到字典中之应用场景
前段时间看到支付宝设置里面有个多语言这个功能,蛮有意思的,就想双休没事的话做个相关的demo玩玩,可是礼拜六被妹子拽出去玩了一天,来大上海有大半年了,基本没有出去玩过,妹子说我是超级宅男,也不带她出去 ...
- 自己动手之使用反射和泛型,动态读取XML创建类实例并赋值
前言: 最近小匹夫参与的游戏项目到了需要读取数据的阶段了,那么觉得自己业余时间也该实践下数据相关的内容.那么从哪入手呢?因为用的是Unity3d的游戏引擎,思来想去就选择了C#读取XML文件这个小功能 ...
随机推荐
- 使用sp_addextendedproperty添加描述信息
-- For table EXECUTE sp_addextendedproperty N'MS_Description', '描述内容', N'user', N'dbo', N'table', N' ...
- maven pox.xml 设置主入口配置节点
<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven ...
- EF相关知识
一.EF控制台命令: 1.enable-migrations -EnableAutomaticMigration -Force:使用自动迁移 2.add-migration "Country ...
- [Python] Keep efficient by vim in Pycharm
From: http://blog.csdn.net/u013088062/article/details/50144201 From: http://blog.csdn.net/u013088062 ...
- Direct3D11学习:(七)绘图基础——彩色立方体的绘制
转载请注明出处:http://www.cnblogs.com/Ray1024 一.概述 在前面的几篇文章中,我们详细介绍了Direct3D渲染所需要的数学基础和渲染管道理论知识.从这篇文章开始,我们就 ...
- linux中$与()的一点使用疑惑解释
a=$(cat 1.sh)等价于a=`cat 1.sh` 而a=(cat 1.sh) 相当于定义一个a数组,内容为cat 1.sha=(`cat 1.sh`)相当于把1.sh里面的内容当成a的数组,a ...
- 非链接方式访问数据库--查询的数据集用Dataset来存储。
private void Button_Click_1(object sender, RoutedEventArgs e) { //非链接方式访问数据库, //1创建连接对象(连接字符串) using ...
- mysql 判断表字段或索引是否存在,然后修改
判断字段是否存在: DROP PROCEDURE IF EXISTS schema_change; DELIMITER // CREATE PROCEDURE schema_change() BEGI ...
- NPOI根据模板生成chart图表导出Excel
导入NPOI的全部dll. 因为NPOI的API里面还没有对于Chart图表方面的操作,所以只能根据提示做好的图表作为模板,修改数据源的方法来改变图表. 注意:NPOI要用2003版以下的excel才 ...
- Winfrom中ListBox绑定List数据源更新问题
Winfrom中ListBox绑定List数据源更新问题 摘自:http://xiaocai.info/2010/09/winform-listbox-datasource-update/ Winfr ...