您好,欢迎来到12图资源库!分享精神,快乐你我!我们只是素材的搬运工!!
  • 首 页
  • 当前位置:首页 > 网站教程 > AJAX教程 >
    让SortTable和Asp.net Ajax和睦相处
    时间:2017-06-05 13:09 来源: 作者: 浏览:收藏 挑错 推荐 打印
    相信很多人都可能用过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(/\bsortable\b/) != -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(/\bsortable\b/) != -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','');
    }
    };

    (责任编辑:12图资源库)