让SortTable和Asp.net Ajax和睦相处

日期: 2008-04-02 来源:TechTarget中国

  相信很多人都可能用过SortTable这个对Table元素进行排序的JS类库。


  SortTable只需要设置Table的class就可以实现简单的应用。如果需要复杂引用,可以到下面的下载地址链接里面找到答案。这里就不再多说了。


  下载地址:http://www.kryogenix.org/code/browser/sorttable/


  可是如果在引用了SortTable同时用到了Asp.net Ajax.呵呵,这下绝对热闹。好像仇敌一样。


  错误提示:


  Sys.ArgumentTypeException: Object of type ‘Object’ cannot be converted to type ‘Array’


  经过几个小时的努力,通过FireFox+FireBug的协力帮助,终于找到症结。主要是SortTable里面的forEach实现和Asp.net Ajax的forEach实现有冲突。


  当然,要让Ajax.net Ajax里面的forEach失效可不是什么容易的事情。只能让SortTable里面的forEach失效了。通过多SortTable里面的 forEach进行分析,最终舍弃了SortTable里面的forEach实现并且将实现代码去除,然后将forEach改成了for实现。终于……和睦相处了。


  当然还可以有更好的改法,就是将forEach的方法改名,但是发现SortTable引用的forEach也就那么一点,于是用for了。


  有两处需要修改:


  第一处:


  //原始代码


         // Array.forEach(document.getElementsByTagName(‘table’), function(table) {


    // if (table.className.search(/bsortableb/) != -1) {


    // sorttable.makeSortable(table);


    // }


    // });


    // alert(document.getElementsByTagName(‘table’).length);


    // //修改代码


    for(i=0;iNT.GETELEMENTSBYTAGNAME(‘TABLE’).LENGTH;I++)< p>


    {


    // alert(document.getElementsByTagName(‘table’).length);


    table=document.getElementsByTagName(‘table’)[i];


    if (table.className.search(/bsortableb/) != -1)


    {


    sorttable.makeSortable(table);


    }


    };
 
  第二处:


          //原始代码
    //forEach(theadrow.childNodes, function(cell) {


    // if (cell.nodeType == 1) {


    // cell.className = cell.className.replace  (‘sorttable_sorted_reverse’,”);


    // cell.className = cell.className.replace(‘sorttable_sorted’,”);
 
    // }


    // });


    //修改代码


    for(i=0;i


    {


    var cell=theadrow.childNodes[i];


    if (cell.nodeType == 1) { // an element


    cell.className = cell.className.replace  (‘sorttable_sorted_reverse’,”);


    cell.className = cell.className.replace(‘sorttable_sorted’,”);


    }
    };

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

相关推荐