asp.net做一个treeview数据绑定

绑定子节点时查询出来的数据正确,但在进行数据绑定时一直索引溢出

然后调试 ... 调试 ... 再调试...

依然很崩溃  想到了是变量定义后面共用后的问题,然而并没有改到点上

最后发现问题: 就是 new TreeNode 是在整个绑定外部,在逐级绑定时,这个node没有被重新初始化,还是我刚刚添加上去的node。

错误示范:

 //加载子节点
protected void tree_TreeNodePopulate(object sender, TreeNodeEventArgs e)
{
DataTable dt = myGetDataTable();//从数据库中获取数据(需自定义)
if (dt != null && dt.Rows.Count > )
{
int depth = e.Node.Depth;
DataView dv = dt.DefaultView;
TreeNode node = new TreeNode();//就是这里错了 if (depth == )//
{
DataTable dtItem = dv.ToTable(true, "省");
string limit = string.Format("省 = '{0}'", txt_s.Text);
DataRow[] drs_pc = dtItem.Select(limit);
foreach (DataRow dr in drs_pc)
{
node.Text = dr["省"].ToString();
node.Value = dr["省"].ToString();
node.SelectAction = TreeNodeSelectAction.SelectExpand;
node.Expanded = true;
node.PopulateOnDemand = true;
node.ToggleExpandState();
e.Node.ChildNodes.Add(node);
}
}
else if (depth == )
{
DataTable dtItem = dv.ToTable(true, "省", "市");
string limit = string.Format("省 = '{0}' AND 市 = '{0}' ", txt_s.Text, txt_s2.Text);
DataRow[] drs_type = dtItem.Select(limit);
foreach (DataRow dr in drs_type)
{
node.Text = dr["市"].ToString();
node.Value = dr["市"].ToString();
node.SelectAction = TreeNodeSelectAction.SelectExpand;
node.Expanded = true;
node.PopulateOnDemand = true;
node.ToggleExpandState();
e.Node.ChildNodes.Add(node);
}
}
}
}

(这只是一个示例,主要想记住这个问题)

不仅是这一种情况会引起因共用变量而出现的问题,还有当new 一个类时,如果使用类的同一个属性或字段,在前面已经给这个属性或字段赋值,后面使用时未进行重新赋值,则这个属性或字段的值是前一次的值,而不是当前需要的值(未重新new 这个类的情况下)。

还有很多类似或出现bug的情况,以后需要注意。

C# 关于变量使用范围容易犯错的问题(TreeView数据绑定为例)的更多相关文章

  1. Linux用户态定时器用法以及犯错总结【转】

    转自:http://blog.csdn.net/csdn_logo/article/details/48525703 版权声明:本文为博主原创文章,欢迎转载,转载请注明出处,多谢合作. 采样的时候要用 ...

  2. 致DBA:为什么你经常犯错,是因为你做的功课不够

    专职做DBA已经6年多的事件了,看同行.同事犯了太多的错误,自己也犯了非常多的错误.一路走来,感触非常深.然而绝大多数的错误其实都是很低级的错误.有的是因为不了解某个引擎的特性导致:有的是因为对线上环 ...

  3. Makefileeasy犯错的语法

    1.引言 近期学习android的Build系统,接触最多的自然就是Makefile语法.发现非常多easy出错的地方,不避开这些错误语法没法真正了解Makefile的内涵.以下就介绍遇到的一些让人困 ...

  4. m_Orchestrate learning system---二十、如何写代码不容易犯错

    m_Orchestrate learning system---二十.如何写代码不容易犯错 一.总结 一句话总结:能排序多排序 这次查错的启示: 1.代码数据更规整:要是取出的数据排序的话可以减少很多 ...

  5. java面试题最容易犯错

    1. static 和 final 的用法 static 的作用从三个方面来谈,分别是静态变量.静态方法.静态类. 静态变量:声明为 static 的静态变量实质上就是全局变量,当声明一个对象时,并不 ...

  6. vue router引入路由与路由配置容易犯错的地方与常见的报错与处理报错

    首先npm安装vue-router插件,就不说了其次: 先看下我本地的目录结构吧 第一步:在src目录下新建一个专门存放router的index.js文件里面的内容为: import Vue from ...

  7. 朱晔和你聊Spring系列S1E6:容易犯错的Spring AOP

    阅读PDF版本 标题有点标题党了,这里说的容易犯错不是Spring AOP的错,是指使用的时候容易犯错.本文会以一些例子来展开讨论AOP的使用以及使用过程中容易出错的点. 几句话说清楚AOP 有关必要 ...

  8. java中最容易犯错的特殊字符

    问题背景 能准确说出下面的java 执行完毕后会打印出什么? System.out.println( String.class.getName()+ ".class"); Syst ...

  9. mybatis基础犯错总结

    1.关于mybatis的文件一般都是其mapper文件出错: 首先关于输入参数parameterType出错: (1)基本数据类型:如果输入参数只有一个,其数据类型可以是基本数据类型,也可以是自己定的 ...

随机推荐

  1. sql表中数据遍历

    步骤: 1:先定义一个临时表,把需要用的数据放入临时表中,如果数据不连续,则在临时表中定义一个自增长键 DECLARE @temp table(Id INT IDENTITY(1, 1) ,ShopC ...

  2. 软工作业PSP与单元测试训练:java语言判断电子邮箱格式

    任务说明(二选一): 一.实现模块判断传入的身份证号码的正确性: 二.实现模块判断传入的电子邮箱账号的正确性:   实现要求: 一.实现功能模块: 1. 判断邮箱地址是否为空: 2. 判断邮箱地址是否 ...

  3. 一些常见的“功能性”JS事件

    ————————倒序上升———————— (2)给一些 保存.提交 按钮,添加 防止重复提交 事件(常见一例) $("#submitRank").attr("disabl ...

  4. json元素顶部插入unshift、尾部插入push、顶部获取shift、尾部获取pop

    1)json元素插入 var json=[ //顶部位置 {id:1,name:'B'}, {id:2,name:'C'}, {id:3,name:'D'}, //尾部位置 ] 顶部位置)json.u ...

  5. .NET MVC+angular导入导出

    cshtml: <form class="form-horizontal" id="form1" role="form" ng-sub ...

  6. 详细集成Redis (一)

    1.添加依赖 <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</a ...

  7. matlab简介 基本操作

    1.快捷键: Tab.Ctrl+] :增加缩进 Ctrl+[ :减少缩进 Ctrl+I:自动缩进 Ctrl+R:增加注释 Ctrl+T:去掉注释 F12:设置或清除断点 F5:运行 2.特殊变量: i ...

  8. gulp的使用(二)之gulpfile.js文件的配置

    Gulpfile.js是什么文件: gulp是前端开发过程中对代码进行构建的工具,是自动化项目的构建利器:她不仅能对网站资源进行优化,而且在开发过程中很多重复的任务能够使用正确的工具自动完成:使用她, ...

  9. <html> ---- position

    position 固定的属性,是全局的.和DIV层次无关. <!DOCTYPE html> <html lang="en"> <head> &l ...

  10. flex 布局 实现电商网页菜单的多级分类展示

    用flex,实现多级菜单分类展示,这里记录一下,方便以后查阅. 效果展示如下: 跟上面floor的设计差不多,鼠标hover全部商品分类的时候,将下拉列表展示在指定区域,这个类似鼠标悬浮商品图片期待上 ...