让 SortTable 和 Asp.net Ajax 和睦相处

时间:2010-02-21 09:37:41  来源:第二电脑网  作者:第二电脑网

  第二电脑网导读:    下载地址:http://www.kryogenix.org/code/browser/sorttable/      可是如果在引用了SortTable同时用到了Asp.net Ajax。呵呵,这下绝对热闹。好像仇敌一样。      错误提示:   Sys.ArgumentTypeException: Object of type ‘Object’ cannot be converted to type ‘Array’...
  正文:相信很多人都可能用过SortTable这个对Table元素进行排序的JS类库。
  
  SortTable只需要设置Table的class就可以实现简单的应用。如果需要复杂引用,可以到下面的下载地址链接里面找到答案。这里就不再多说了。
  
  下载地址:http://www.kryogenix.org/code/browser/sorttable/
  
  可是如果在引用了SortTable同时用到了ASP/ target=_blank class=infotextkey>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;i<document.getElementsByTagName('table').length;i++)
   {
  // 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<theadrow.childNodes.length;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','');
   }
   };
  
  然后呵呵……好了
  
  下面是我改好的JS包,而且将编码规则改成了UTF-8,这样可以去除因为网页编码的问题。给大家都用用 
  

让 SortTable 和 Asp.net Ajax 和睦相处》由第二电脑网原创提供,转载请注明:http://www.002pc.com/master/College/Programming/aspnet/12866.html


关键字:

关于《让 SortTable 和 Asp.net Ajax 和睦相处》文章的评论

站内搜索: 高级搜索

热门搜索: Windows style 系统 tr IP QQ CPU 安装 function 注册 if td