新书推介:《语义网技术体系》
作者:瞿裕忠,胡伟,程龚
   XML论坛     W3CHINA.ORG讨论区     计算机科学论坛     SOAChina论坛     Blog     开放翻译计划     新浪微博  
 
  • 首页
  • 登录
  • 注册
  • 软件下载
  • 资料下载
  • 核心成员
  • 帮助
  •   Add to Google

    >> 本版讨论XSL,XSLT,XSL-FO,CSS等技术
    [返回] 中文XML论坛 - 专业的XML技术讨论区XML.ORG.CN讨论区 - XML技术『 XSL/XSLT/XSL-FO/CSS 』 → [讨论]请教Qr大牛几个关于动态排序的问题 查看新帖用户列表

      发表一个新主题  发表一个新投票  回复主题  (订阅本版) 您是本帖的第 5624 个阅读者浏览上一篇主题  刷新本主题   树形显示贴子 浏览下一篇主题
     * 贴子主题: [讨论]请教Qr大牛几个关于动态排序的问题 举报  打印  推荐  IE收藏夹 
       本主题类别:     
     Starling 帅哥哟,离线,有人找我吗?
      
      
      等级:大二(研究C++)
      文章:57
      积分:295
      门派:XML.ORG.CN
      注册:2007/5/23

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给Starling发送一个短消息 把Starling加入好友 查看Starling的个人资料 搜索Starling在『 XSL/XSLT/XSL-FO/CSS 』的所有贴子 引用回复这个贴子 回复这个贴子 查看Starling的博客楼主
    发贴心情 [讨论]请教Qr大牛几个关于动态排序的问题

    看了 Qr 大牛的《XML卷之实战锦囊-之-Qr修改版:动态排序》,想请教l两个问题。

    例子中的排序是按照字母顺序排列的,而我希望是按照数字的大小来排,例如 1234 和 321 两个数字,如果按字母顺序就是 1234 排在前面了。现在我在 <xsl:sort select="blue_ID"/> 的后面加入了 data-type="number" 这倒是可以把 321 排在 1234 之前了,可其它非数字的部分就不会排序了,不知道该怎么解决。

    另外还有一个问题,就是点击表头排序之后,能否再次点击表头进行反向排序?是改修改脚本,还是该修改别的什么地方呢??


    [此贴子已经被作者于2007-6-14 8:19:24编辑过]

       收藏   分享  
    顶(0)
      




    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2007/6/13 9:32:00
     
     Qr 帅哥哟,离线,有人找我吗?
      
      
      威望:9
      等级:博士二年级(版主)
      文章:4392
      积分:29981
      门派:XML.ORG.CN
      注册:2004/5/15

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给Qr发送一个短消息 把Qr加入好友 查看Qr的个人资料 搜索Qr在『 XSL/XSLT/XSL-FO/CSS 』的所有贴子 访问Qr的主页 引用回复这个贴子 回复这个贴子 查看Qr的博客2
    发贴心情 
    即想按数字,又同时满足按字符排序,这个肯定做不到。
    变通的方法:1、将321改0321等等长的串,再按字符排序。
    2、写多个模板,一个处理数字型,另一个处理字符型(只是理论,没写过代码)。


    脚本修改XSL。

    ----------------------------------------------
    没人帮忙,那就靠自己,自己才是最好的老师!本人拒绝回答通过站内短消息提出的问题!

    blog:http://Qr.blogger.org.cn

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2007/6/14 8:28:00
     
     Starling 帅哥哟,离线,有人找我吗?
      
      
      等级:大二(研究C++)
      文章:57
      积分:295
      门派:XML.ORG.CN
      注册:2007/5/23

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给Starling发送一个短消息 把Starling加入好友 查看Starling的个人资料 搜索Starling在『 XSL/XSLT/XSL-FO/CSS 』的所有贴子 引用回复这个贴子 回复这个贴子 查看Starling的博客3
    发贴心情 
    呵呵,多谢啦,数字前面添加 0 的方法我已经试过了,但不知道什么办法可以在显示的时候不显示前面的 0。

    此外,多写个模板的方法我一会去试试吧,如果成了就回来报告一声~~

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2007/6/14 8:43:00
     
     Starling 帅哥哟,离线,有人找我吗?
      
      
      等级:大二(研究C++)
      文章:57
      积分:295
      门派:XML.ORG.CN
      注册:2007/5/23

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给Starling发送一个短消息 把Starling加入好友 查看Starling的个人资料 搜索Starling在『 XSL/XSLT/XSL-FO/CSS 』的所有贴子 引用回复这个贴子 回复这个贴子 查看Starling的博客4
    发贴心情 
    我用了个极其愚蠢的办法处理了这个问题,那就是每一列都专门写个模板,然后通过简单的 show/hide 脚本控制他们的排序,但这样以来就导致运行速度奇慢无比,而且如果表格有很多列的话,我就真不知道该怎么整了,总不能姓万的就画一万笔吧?-__-!!!!

    话又说回来,能否在脚本里下点功夫,把它改得更完善一些?例如,onClick="taxis('blue_class' ‘number’) 就表示数字型,而为空就表示未定义等等………我觉得这个应该可以做到的,我再去研究研究……………顺便再找几个JS高人一起来看看……………

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2007/6/14 9:02:00
     
     Qr 帅哥哟,离线,有人找我吗?
      
      
      威望:9
      等级:博士二年级(版主)
      文章:4392
      积分:29981
      门派:XML.ORG.CN
      注册:2004/5/15

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给Qr发送一个短消息 把Qr加入好友 查看Qr的个人资料 搜索Qr在『 XSL/XSLT/XSL-FO/CSS 』的所有贴子 访问Qr的主页 引用回复这个贴子 回复这个贴子 查看Qr的博客5
    发贴心情 

    不知道什么办法可以在显示的时候不显示前面的 0。
    [/quote]

    <xsl:value-of select="number(.)"/><!--转换成数字即可-->


    [quote]
    而且如果表格有很多列的话,我就真不知道该怎么整了,总不能姓万的就画一万笔吧?-__-!!!!


    data-type就有"text|number|qname"三个类型,最多不就写三个模板,如果拆分得好,实际上就多几行代码。

    ----------------------------------------------
    没人帮忙,那就靠自己,自己才是最好的老师!本人拒绝回答通过站内短消息提出的问题!

    blog:http://Qr.blogger.org.cn

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2007/6/14 9:27:00
     
     Starling 帅哥哟,离线,有人找我吗?
      
      
      等级:大二(研究C++)
      文章:57
      积分:295
      门派:XML.ORG.CN
      注册:2007/5/23

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给Starling发送一个短消息 把Starling加入好友 查看Starling的个人资料 搜索Starling在『 XSL/XSLT/XSL-FO/CSS 』的所有贴子 引用回复这个贴子 回复这个贴子 查看Starling的博客6
    发贴心情 
    呵呵,再次感谢,不过我用了修改脚本的方法解决了这个问题,就是给脚本添加一个 founction 代码如下:
    function datatype(x)
    {
    stylesheet=document.XSLDocument;
    source=document.XMLDocument;
    sortField=document.XSLDocument.selectSingleNode("//xsl:sort/@data-type");
    sortField.value=x;
    Layer1.innerHTML=source.documentElement.transformNode(stylesheet);
    }
    其实就是根据原来的脚本修改的,调用方法如下:
    onClick="taxis('blue_class');datatype('number')"

    现在就剩下反向排序的问题了,呵呵,虽然我是菜鸟,但能和大牛一起研究真的是一种荣幸~~~

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2007/6/14 9:39:00
     
     Qr 帅哥哟,离线,有人找我吗?
      
      
      威望:9
      等级:博士二年级(版主)
      文章:4392
      积分:29981
      门派:XML.ORG.CN
      注册:2004/5/15

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给Qr发送一个短消息 把Qr加入好友 查看Qr的个人资料 搜索Qr在『 XSL/XSLT/XSL-FO/CSS 』的所有贴子 访问Qr的主页 引用回复这个贴子 回复这个贴子 查看Qr的博客7
    发贴心情 
    order="ascending|descending"

    sortorder=document.XSLDocument.selectSingleNode("//xsl:sort/@order");
    sortorder.value=y;//y决定排序方式,即ascending|descending

    其实,最简单的是,判断sortorder是ascending|descending,然后修改其值为反向即可。这样就不用传递y了,必竟少了一个参数。

    ----------------------------------------------
    没人帮忙,那就靠自己,自己才是最好的老师!本人拒绝回答通过站内短消息提出的问题!

    blog:http://Qr.blogger.org.cn

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2007/6/14 9:53:00
     
     Starling 帅哥哟,离线,有人找我吗?
      
      
      等级:大二(研究C++)
      文章:57
      积分:295
      门派:XML.ORG.CN
      注册:2007/5/23

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给Starling发送一个短消息 把Starling加入好友 查看Starling的个人资料 搜索Starling在『 XSL/XSLT/XSL-FO/CSS 』的所有贴子 引用回复这个贴子 回复这个贴子 查看Starling的博客8
    发贴心情 
    但这样似乎又出现新问题了,写脚本的时候怎么保证点一下是ascending,再点一下是descending?

    看来还要在脚本上下功夫了。

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2007/6/14 10:12:00
     
     Starling 帅哥哟,离线,有人找我吗?
      
      
      等级:大二(研究C++)
      文章:57
      积分:295
      门派:XML.ORG.CN
      注册:2007/5/23

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给Starling发送一个短消息 把Starling加入好友 查看Starling的个人资料 搜索Starling在『 XSL/XSLT/XSL-FO/CSS 』的所有贴子 引用回复这个贴子 回复这个贴子 查看Starling的博客9
    发贴心情 
    最后还是用到了我最拿手也是最笨的 show/hide 脚本,把链接所在的单元格写两个出来,正常排序的时候吧反向排序的链接显示出来,反向排序的时候把正向排序的链接显示出来,这么做虽然笨了点,但有个好处,就是可以加上一个向上或向下的小箭头,弄出来跟资源管理器似的,还算好看,呵呵。
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2007/6/14 10:59:00
     
     GoogleAdSense
      
      
      等级:大一新生
      文章:1
      积分:50
      门派:无门无派
      院校:未填写
      注册:2007-01-01
    给Google AdSense发送一个短消息 把Google AdSense加入好友 查看Google AdSense的个人资料 搜索Google AdSense在『 XSL/XSLT/XSL-FO/CSS 』的所有贴子 访问Google AdSense的主页 引用回复这个贴子 回复这个贴子 查看Google AdSense的博客广告
    2025/9/21 11:37:33

    本主题贴数9,分页: [1]

    管理选项修改tag | 锁定 | 解锁 | 提升 | 删除 | 移动 | 固顶 | 总固顶 | 奖励 | 惩罚 | 发布公告
    W3C Contributing Supporter! W 3 C h i n a ( since 2003 ) 旗 下 站 点
    苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
    171.875ms