storm0 
飘零雾雨.闻弦歌而知雅意,顾叶落而晓秋至 
等 级:
 发表于:2007-12-25 15:11:067楼 得分:0 
若无其事的飘过,还没想到办法改进你那个东东 !-   - 
 
=====================================暂时先那样用着,也挺好的! 

解决方案 »

  1.   

    看得出作者对DOM很熟悉,整个代码短小精湛很好,但程序结构很有问题.
    一段代码里面耦合了太多的功能导致重用律大幅降低.
    this.init里面的代码太多了,有些能提出来的代码就尽量提出来.
    样式的东西能单独存放在css里面尽量不要放在代码里.
    整个Grid还不错就是没有扩展的余地.只能用.PS:LZ已经在DOM操作上有很高的造诣.但如果能在程序结构上下点功夫才算是个好的程序员.
    说句不好听的,LZ的这段程序的结构只能算刚入门的阶段.
      

  2.   

    gzdiablo所说不假,偶一直认为自己刚刚才入得JS的门,以后会继续努力学习滴! ^_^
      

  3.   

    tantaiyizu 
    痴情客 
    等 级:
     发表于:2007-12-26 12:45:0027楼 得分:0 
    貌似没有实际用处啊   ,我要出几万条数据   ,请问可以用你的列表吗? 
     
    =========================================================当然可以,就像dhATV3,当然当前版本暂不支持,如果需要,只要更新载入数据方式即可!
      

  4.   

    表格效果不错,没细看源码,感觉一条线走到底,没有模块设计的概念,太多的参数的定死的,居然只有一个js文件比如//dhdatagrid vbar 垂直滚动条
    var dgvbar = document.createElement("DIV");
    //dgvbar.id = "vbar";
    dgvbar.style.position = "absolute";
    dgvbar.style.width = "17px";
    dgvbar.style.height = "100%";
    dgvbar.style.left = this.width-17;
    dgvbar.style.overflowY = "auto";
    dgvbar.style.zIndex = "10";
    dgvbar.onscroll = function(){scrv();}
    dgvbar.innerHTML = "<div style=\"width:1px;height:100%;overflow-x:hidden;\">&nbsp;</div>";
    可以写个createScroll方法
    function $CE(p)
    {
      return document.createElement(p); 
    }function createScroll(pE,scrollDate)   //{'width':100,'height':200}
    {
        var e=$CE(pE);
        for(scrollDate in o)
        {
           e.style.o=scrollDate[o];
        }
        ......
        ......
        return e; 
    }这样滚动条的样子由参数决定,并且该方法可以复用
      

  5.   

    提个小BUG就是做批量操作的时候,checkbox全选以后,点下面的任何一个checkbox后,上面的全选checkbox应该为取消状态,反之亦然。
    顺便再接次分,哈哈,多多益善。LZ加油,这个东西不错,看了代码的话,肯定对我有所帮助的,谢谢了
      

  6.   

    数据的载如不能从xml文件或者从数据库里面读出来~
      

  7.   

    看了一下兄弟的代码,提几个建议,我很久没有写js代码了,不知道说得对不对,说得不对还请海涵.1.表现层没有尽可能的分离...(尽可能的给用户用css来定制他的UI界面,可提高项目的编码效率)
    2.grid可否不用array的形式来做,而采取table的形式来做,
    可以用以下一种方式(只是简略说明一下看法,CSDN不准贴图-_-!),以下是我的dataGrid思路中一种方式来载入数据
    1)dataGrid中可采取数据库的方式,如Date,String,Number,e.g:
    <table class="neverModules-dg" id="dataGrid">
    <tr>
    <th dgType="Number">ID</th>
    <th dgType="Date">Date</th>
    <th dgType="String">String</th>
    </tr>
    <tr>
    <td>1</td>
    <td>2007-8-8</td>
    <td>never-online.net</td>
    </tr>
    ...........略
    --------
    数据表格
    </table><script>
    //以下为grid实现代码
    //grid默认配置的命名空间
    neverModules.configuration.dataGrid = function () {
    this.defaultstyle= "neverModules-dg";//默认css
    this.defaultHeaderRow=10;//默认滚动条最大高度
    this.defaultgridType="String";//默认如果没有dgType,则为string型
    //more configuration to set grid default style
    }
    //grid命名空间,即grid "class"编码
    neverModules.modules.dataGrid = function () {
    //to do
    }
    //实现属性接口
    neverModules.modules.dataGrid.defineAllSetter();
    neverModules.modules.dataGrid.defineAllGetter();
    </script>
    <script>
    //以下为用户编码
    var dg=new neverModules.modules.dataGrid("dataGrid", //id
    new neverModules.configuration.dataGrid());
    // 第二个参数可选,为载入默认配置对象也可为jason形式  //实例化//可选 dg.setStyle("neverModules-dg");//设置css class//可选 dg.setHeaderRow(10);//fix headerdg.render();//渲染
    </script>这样的好处我觉得在于
    1)这样对于程序扩展很有好处(Date,String,Number)用户可自己定义Boolean型等,且比较时,可引入中间层,实现多层方式来控制.且程序整体结构整洁,易于修改
    2)利于SEO,虽然用dataGrid有的时候是在后台,但前台用的时候也比较多
    3)美工方便界面操作
    4)程序方便编写,不用再写js
    5)第一次载入时速度快,省略了从array->html的转换,通常用户看grid,不一定是排序,也就是说在initialize时只需要fixHeader即可.
      

  8.   

    上面的代码刚才手工在CSDN的编辑器 里写的,有点乱,凑合着看看吧:)
    风兄看来很盛产作品嘛,希望有更多代码一起交流:)
    嗯?好像很晚了,该睡了....明天还要去送货-_-!
      

  9.   

    感谢大家提出的宝贵意见,感谢igyhi,BlueDestiny ,你们提到的问题,我会在以后的东西里应用上的。
      

  10.   

    不错的dd, 结合ajax分页取数据,可完成简单需求。 下个版本是不是要加上父子表格联动了
      

  11.   

    BlueDestiny的建议不错
    另外我认为grid就是grid
    如果封装成类的话就直接封装成grid基类,用你自己的方法去初始化grid.
    至于用其他方法去初始化grid那些属于扩展接口方法
    例如用table初始化grid,那么只要提供一个将table转换成你的array,再生成grid.当然你也可以默认用table来初始化grid,如果碰到需要用array来初始化时,只要提供将array转换成table的接口方法即可但前提你得有一个良好的扩展性强的基类.