当前位置:首页 > 网络编程 > WEB编程 > ASP.net > 让SortTable和Asp.net Ajax和睦相处

让SortTable和Asp.net Ajax和睦相处

点击次数:32 次 发布日期:2008-11-22 11:31:26 作者:源代码网
源代码网推荐 相信很多人都可能用过SortTable这个对Table元素进行排序的JS类库。

  SortTable只需要设置Table的class就可以实现简单的应用。

  可是如果在引用了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; 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
  {
  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","");
  }
  };

源代码网供稿.
上一篇: ASP函数库9  下一篇: ASP函数库8
网友评论 (0)
会员中心
网络编程
本站推荐
网络编程之精华