分享:Microsoft IE Webcontrols Treeview的一个bug及修正

原创 2005年02月25日 22:40:00

首先感谢思归指点了我如何重用Treeview这个Microsoft IE Webcontrol。相关内容请参见http://community.csdn.net/Expert/TopicView.asp?id=3365114

  IE webcontrol可以单独用于html文件中,也可以用于web form的.net 程序;
  对于后者,使用中可以通过编程加入节点,也可以绑定;
  对于后者,绑定的时候,可以帮定一个xml格式的字符串,也可以绑定一个xml文件,只要向Treeview控件的TreeNodeSrc属性赋值;
  对于后者,有两种可能,一种是绑定到一个已经存在于硬盘的xml文件,或者说TreeNodeSrc的值设定为"...../foo.xml"上、另一种则是先创建一个aspx页面动态产生xml格式的输出,绑定到这个页面。
  对于后者,会产生错误。

  原因是,Treeview控件其实有两个地方可以绑定,或者说,解析数据源产生树的结构,一是在Server Side,一是在Browser Side。在Treeview控件Render的过程中,如果发现TreeNodeSrc是一个地址,它就会试图读这这个地址的内容,然后解析,并显式的写到web页面的输出中,这里会产生错误。

  我的解决方法是,定义一个扩充的属性TreeNodeSrcA,它不在server端被解析,而是原封不动的写到Browser side,然后Treeview的htc再读取TreeNodeSrcA指向的url的内容,并解析。

  具体步骤如下:

一、在Treeview的源程序treeview.cs文件的

public class TreeView : BasePostBackControl

的部分加入这样一段


/// <summary>
/// Url of the xml file to import as the TreeNode content of the tree, Browser Side Binding
/// </summary>
[
Category("Data"),
DefaultValue(""),
PersistenceMode(PersistenceMode.Attribute),
ResDescription("TreeNodeSrcA"),
]
public string TreeNodeSrcA
{
    get
    {
        object str = ViewState["TreeNodeSrcA"];
        return ((str == null) ? String.Empty : (string)str);
    }
    set
    {
        ViewState["TreeNodeSrcA"] = value;
    }
}

它的作用是定义一个叫TreeNodeSrcA的属性。

二、在Treeview的源程序treeview.cs文件的

protected override void RenderUpLevelPath(HtmlTextWriter output)

方法中加入这样一段

if (TreeNodeSrcA != String.Empty)
    output.AddAttribute("treeNodeSrcA", TreeNodeSrcA);

它的作用是如果TreeNodeSrcA属性非空则写到web页面的输出中。

三、编译生成dll文件并引用

四、在Treeview的脚本文件treeview.htc的相应位置分别加入:

<public:property name="treeNodeSrcA" id="_tvpropTreeNodeSrcA" GET="getTreeNodeSrcA" PUT="setTreeNodeSrcA" />

var prop_treeNodeSrcA = null;

function getTreeNodeSrcA()
{
    return prop_treeNodeSrcA;
}

function setTreeNodeSrcA(value)
{
    if (prop_treeNodeSrcA != value)
    {
        prop_treeNodeSrcA = value;
    }
}

这是说明定义一个htc里的属性,设置变量来存放,并设置读写它的方法。

五、在Treeview的脚本文件treeview.htcfunction oncontentready()中,在
    if (treeNodeSrc != null)
之前,加入:
    if (treeNodeSrcA != null)
     treeNodeSrc = treeNodeSrcA;

这就保证了创建的时候,如果扩展属性treeNodeSrcA非空,就会用它来填补treeNodeSrc,这时Browser就会去读数据源并解析、绑定。

【athossmth原创,转载请注明,谢谢】

ie webControls treeview with xml 例子

 .aspx文件中的代码                            TreeNodeSrc="aspnetbooksTV.xml" />                     XML文件...
  • dengenming
  • dengenming
  • 2005年12月29日 13:56
  • 740

关于ie 11/edge浏览器在rem下的bug

最近改同事写的一个网站的时候,发现了一个挺严重的bug,网站在比较高版本的ie下,所有的元素高度全部失效了。发现是同事在最开始的公共头文件里面加了这一段控制的代码。 (function (doc, ...
  • qq_37271018
  • qq_37271018
  • 2017年07月04日 15:49
  • 674

ie11和edge浏览器下REM的bug

最近在做项目的时候,为了进行响应式的操作,采用了现在出现的一个新的单位——REM,在主流的浏览器都是没什么问题的。但是在ie出现了灵异的bug。bug表述:加载页面的时候,页面的所有元素没有按照对应获...
  • fly_home_ysc
  • fly_home_ysc
  • 2017年08月15日 14:12
  • 871

FireMonkey的TreeView控件的一个bug

FireMonkey是delphi升级的XE版本后新提供的一个界面框架,用于替代原来的VCL,实现真正的跨平台和移动开发,另外由于firemonkey提供基于配置的界面开发,因此能够轻松实现很多web...
  • wangguog
  • wangguog
  • 2016年04月02日 09:52
  • 958

Exploring the Internet Explorer WebControls...

By: John Kilgo Date: February 23, 2003 Download the code. Printer Friendly Version You may not ...
  • hiyaolee
  • hiyaolee
  • 2004年10月06日 21:21
  • 953

treeview的下载地址!

http://download.microsoft.com/download/2/9/0/290e3bc2-a238-447f-ad45-98e590b3048b/TreeViewControl.ms...
  • 46539492
  • 46539492
  • 2004年09月13日 10:15
  • 744

Microsoft TreeView IE Web 控件使用

使用 TreeView IE Web 控件Scott Mitchell2003 年 7 月适用于:Microsoft® ASP.NET摘要:了解 TreeView Web 控件,并学习如何在 ASP....
  • sz652
  • sz652
  • 2008年10月25日 18:56
  • 434

在Visual FoxPro中使用TreeView控件

如果用户在设计程序时,需要用一种树形结构生动形象地显示具有不同层次的数据,那么TreeView控件将是最合适的选择。TreeView控件可以将用户选定的数据,也可以是从数据库中检索出来的数据,供用户自...
  • wzz80
  • wzz80
  • 2009年03月18日 16:00
  • 2352

uva658

题目大意: 首先给出n和m,表示有n个bug和m个补丁。一开始存在n个bug,用1表示一个bug存在0表示不存在,所以一开始就是n个1,我们的目的是要消除所有的bug,所以目标状态就是n个0。对于每...
  • vv494049661
  • vv494049661
  • 2016年03月10日 18:41
  • 558

[资源分享]Win10系统IE浏览器中treeview控件的显示

资源下载:http://pan.baidu.com/s/1cANFPG 密码:zblv 使用方法: 将内容解压到:C:\inetpub\wwwroot 如果没有文件夹新建,重新刷新页面即...
  • dengblog
  • dengblog
  • 2017年07月06日 10:53
  • 404
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:分享:Microsoft IE Webcontrols Treeview的一个bug及修正
举报原因:
原因补充:

(最多只允许输入30个字)