SmartControls.AspTreeGrid  现在公开测试 
-------------------------------------------------------------------------------- 
SmartControls.AspTreeGrid 介绍:
作者: ben
MSN/Email: [email protected] 
(欢迎添加好友, 不过请明示身份, 因为好友栏人数快满了, 我会定期清理擅长潜水神龙)之前很多朋友问我如何实现: 将一张表无限递归结构的记录在DataGrid里显示成树结构
现在特意将它做成 AspTreeGrid 控件大家可以从DotNet中华网(http://www.aspxcn.org)下载栏里下载本控件的原型试验版本(AspTreeGrodDemo), 可知它是基于 DataGrid 开发的.
在线演示地址: http://web.hianf.com/AspTreeGrid/Prototype.aspx控件设计目标: 会用DataGrid, 就会做TreeGrid, TreeView等树相关的东东.目前控件暂只实现数据显现功能, 管理功能实现在进行中. 下载地址: http://www.aspxcn.org/downloads/SmartControlsDemo.rar在这里请大家抽一点时间帮忙测试, 主要是控件的黑盒测试, 重点在:  * 按DataGrid一般的使用方法, 测试控件的数据呈现功能 (基本功能测试)
  * 多样性的应用情况 (可以是您项目中的使用情况)
  * 故障处理测试方面不限上面提的, 欢迎大家提意见, 控件现在还在开发中将论功共享源码. 以下是本控件的一些相关图片:http://www.aspxcn.org/RichTextBox/sys/upload/2005107235745.jpg
TreeGrid的VS.NET里的设计视图 http://www.aspxcn.org/RichTextBox/sys/upload/2005107235716.jpg
TreeGrid的效果图 http://www.aspxcn.org/RichTextBox/sys/upload/200510723587.jpg
TreeGrid可以当TreeView使用 http://www.aspxcn.org/RichTextBox/sys/upload/200510723590.jpg
实现TreeView的效果图 

解决方案 »

  1.   

    很不错 有点类似intersoft的产品 不过功能有待再加强! 支持
      

  2.   

    真的很強,我先Test一下,,,
      

  3.   

    thx, 现在这个版本我没怎测试过, 我只将主要功能跑通, 估计上面会有些bug
      

  4.   

    准备SmartControls系列出几个大家项目中经常用到, 但实现比较麻烦的控件.
      

  5.   

    比较符合大家的使用习惯,不错!
    另外搞清楚一下,需要测试的是AspTreeGrodDemo,是吗?
    对测试规范另有什么要求吗?还是黑盒发现什么问题报告下就行了?
      

  6.   

    http://www.microsoft.com/china/MSDN/library/data/dataAccess/NestGridHierData.mspx原代码
      

  7.   

    我还未将源代码发出过大家测试到问题欢迎联系我
    现在在phase 2设计中.
      

  8.   

    其实之前一直在忙, 时间过得很快, 期间只是一些小作品, 难登大雅之堂(http://e65.sogot.com). 一直想做一系列总结项目开发中用到的控件.在这里感谢许多新老朋友的支持, maybe朋友们有能力加入这个设计, 或者可以出谋添策, 又或者发表一下对一些你们项目中开发很想要的一个"东西", 希望...... up :)
      

  9.   

    在TreeGrid/Demo.aspx页面中增加了一些代码做测试,主要想测试一下原有ViewState机制是否在ajax中同样可用,
    变化的代码如下,在页面中新增了一个Button按钮,点击事件为Button1_Click:
    private void Page_Load(object sender, System.EventArgs e)
    {
    AspTreeGrid1.DataSource = GetDataByParentID(0);
    AspTreeGrid1.DataBind();  if(!this.IsPostBack)
    {
    this.ViewState["count"] = 100;
    } int count = (int)this.ViewState["count"];
    int hashCode = this.ViewState.GetHashCode();
    }

    private void AspTreeGrid1_TreeGridExpand(object sender, benSoft.Web.WebControls.TreeEventArgs e)
    {
    e.ChildDataSource = GetDataByParentID(int.Parse(e.ParentID)); this.ViewState["count"] = (int)this.ViewState["count"] + 1;
    int count = (int)this.ViewState["count"];
    int hashCode = this.ViewState.GetHashCode();
    }

    private void Button1_Click(object sender, System.EventArgs e)
    {
    this.ViewState["count"] = (int)this.ViewState["count"] + 1;
    int count = (int)this.ViewState["count"];
    int hashCode = this.ViewState.GetHashCode();


    在页面中展开节点或点击按钮,在调试状态中跟踪count的数值和hashCode的值,发现如下结果:
    1、第一次加载时,在Page_Load中得到count = 100,hashCode = 104
    2、展开一个节点,在AspTreeGrid1_TreeGridExpand中得到count = 101,hashCode = 104;
    3、再展开一个节点,在AspTreeGrid1_TreeGridExpand中得到count = 102,hashCode = 104;

    4、点击Button1按钮,在Page_Load中得到count = 100,hashCode = 87。
    在Button1_Click中得到count = 101,hashCode = 87。
    5、再点击Button1按钮,在Page_Load中得到count = 101,hashCode = 107。
    在Button1_Click中得到count = 102,hashCode = 107。
    6、再点击Button1按钮,在Page_Load中得到count = 102,hashCode = 91。
    在Button1_Click中得到count = 103,hashCode = 91。

    7、再展开一个节点,在AspTreeGrid1_TreeGridExpand中得到count = 103,hashCode = 104;

    测试给人的感觉是,在AspTreeGrid1_TreeGridExpand方法中得到的ViewState对象与在常规方法中得到的ViewState对象不是同一个。
    另外,将这个页面在多个窗口中打开,在多个页面的AspTreeGrid1_TreeGridExpand中跟踪发现,几个页面的ViewState是共用的,是同一个对象。
    在一个页面中点击展开多次后,发现其它页面中也累加了这个次数。也就是说AspTreeGrid1_TreeGridExpand中的这个ViewState并不是一页面所独有,是被多个页面共用的,
    尝试将所有窗口都关闭,再打开一个新的窗口,发现这个ViewState中的记数仍然保留,感觉它的生命周期比Session还长。

    如果这样的话,也就是在AspTreeGrid1_TreeGridExpand这样的ajax方法中使用asp.net以前常用的ViewState对象就有问题了。

    不知各位有没有碰到这样的问题?