`
hereson
  • 浏览: 1453786 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

动态排序

    博客分类:
  • vbs
阅读更多

动机: 
排序功能让我们页面上的数据显的更人性化,是我们在网站上见过的很普遍的一个功能效果了。以往的自动排序都是用大量的脚本代码来完成的,对一般的爱好者来说这是件困难的事情。然而用XML来处理的话就简单多了。让自己的页面更加绚丽,哈哈,您是不是也心动了呢! 

材料: 
XML卷之动态排序
有2个文件:paixu.xml 和 paixu.xsl 

作用: 
在不刷新页面的情况下更据用户自己的需要对数据重新进行排序显示,有效的提高数据互动功能,让自己的页面更加绚丽多彩。 
效果: 
浏览这里 
代码: 
paixu.xml 

程序代码: [ 复制代码到剪贴板 ]

<?xml version="1.0" encoding="gb2312" ?>
<?xml-stylesheet type="text/xsl" href="paixu.xsl" ?>
<BlueIdea>
<team>
<blue_ID>1</blue_ID>
<blue_name>Sailflying</blue_name>
<blue_text>一个简单的排序</blue_text>
<blue_time>2002-1-11 17:35:33</blue_time>
<blue_class>XML专题</blue_class>
</team>
<team>
<blue_ID>2</blue_ID>
<blue_name>flyingbird</blue_name>
<blue_text>嫁给你,是要你疼的</blue_text>
<blue_time>2001-09-06 12:45:51</blue_time>
<blue_class>灌水精华</blue_class>
</team>
<team>
<blue_ID>3</blue_ID>
<blue_name>苛子</blue_name>
<blue_text>正则表达式在UBB论坛中的应用</blue_text>
<blue_time>2001-11-23 21:02:16</blue_time>
<blue_class>Web 编程精华</blue_class>
</team>
<team>
<blue_ID>4</blue_ID>
<blue_name>太乙郎</blue_name>
<blue_text>年末经典分舵聚会完全手册 v0.1</blue_text>
<blue_time>2000-12-08 10:22:48</blue_time>
<blue_class>论坛灌水区</blue_class>
</team>
<team>
<blue_ID>5</blue_ID>
<blue_name>mmkk</blue_name>
<blue_text>Asp错误信息总汇</blue_text>
<blue_time>2001-10-13 16:39:05</blue_time>
<blue_class>javascript脚本</blue_class>
</team>
</BlueIdea> 




paixu.xsl 

程序代码: [ 复制代码到剪贴板 ]
<?xml version="1.0" encoding="gb2312" ?>
<xsl:stylesheet xmlns:xsl="
http://www.w3.org/TR/WD-xsl">
<xsl:template match="/">
<html>
<head>
<title> XML卷之实战锦囊(1):动态排序</title>
<style>
body,BlueIdea,team,blue_ID,blue_name,blue_text,blue_time,blue_class{ font: 12px "宋体", "Arial", "Times New Roman"; } 
table { font-size: 12px; border: 0px double; border-color: #99CC99 #99CC99 #CCCCCC #CCCCCC; cellpadding:3;cellspacing:3; bgcolor:#eeeeee; text-decoration: blink} 
span { font-size: 12px; color: red; }
</style>
<script>
function taxis(x) 

stylesheet=document.XSLDocument; 
source=document.XMLDocument; 
sortField=document.XSLDocument.selectSingleNode("//@order-by");
sortField.value=x; 
Layer1.innerHTML=source.documentElement.transformNode(stylesheet); 
}
</script>
</head>
<body>
<p align="center"><span>XML卷之实战锦囊(1):动态排序</span></p>
<div id="Layer1" name="Layer1">
<xsl:apply-templates select="BlueIdea" />
</div>
</body>
</html>
</xsl:template>
<xsl:template match="BlueIdea">
<table width="500" border="1" align="center" cellpadding="1" cellspacing="1" bordercolordark="#ffffff" bordercolorlight="#ADAAAD">
<tr bgcolor="#FFCC99" align="center">
<td style="cursor:s-resize" onClick="taxis('blue_ID')">编号</td>
<td style="cursor:s-resize" onClick="taxis('blue_name')">姓名</td>
<td style="cursor:s-resize" onClick="taxis('blue_text')">主题</td>
<td style="cursor:s-resize" onClick="taxis('blue_time')">发表时间</td>
<td style="cursor:s-resize" onClick="taxis('blue_class')">归类</td>
</tr>
<xsl:apply-templates select="team" order-by="blue_ID"/>
</table>
</xsl:template>
<xsl:template match="team">
<tr align="center">
<xsl:apply-templates select="blue_ID" />
<xsl:apply-templates select="blue_name" />
<xsl:apply-templates select="blue_text" />
<xsl:apply-templates select="blue_time" />
<xsl:apply-templates select="blue_class" />
</tr>
</xsl:template>
<xsl:template match="blue_ID">
<td bgcolor="#eeeeee">
<xsl:value-of />
</td>
</xsl:template>
<xsl:template match="blue_name">
<td>
<xsl:value-of />
</td>
</xsl:template>
<xsl:template match="blue_text">
<td>
<xsl:value-of />
</td>
</xsl:template>
<xsl:template match="blue_time">
<td>
<xsl:value-of />
</td>
</xsl:template>
<xsl:template match="blue_class">
<td>
<xsl:value-of />
</td>
</xsl:template>
</xsl:stylesheet>




讲解: 
1)paixu.xml 是数据文件,相信大家都不会有问题。
2)paixu.xsl 是格式文件,有几个地方要注意。 
(1)脚本中:

sortField=document.XSLDocument.selectSingleNode("//@order-by"); 
作用是:找到有属性为order-by的第一个节点,因此它对应的节点就是
<xsl:apply-templates select="team" order-by="blue_ID"/>
因此在初次onLoad的时候order-by的value值是blue_ID。
而我们就是通过重新定义order-by的value值来达到排序的目的。 


Layer1.innerHTML=source.documentElement.transformNode(stylesheet); 
作用是:转化XML数据后更改Layer1,因此在传出参数'blue_name'后,
<td style="cursor:s-resize" onClick="taxis('blue_name)">姓名</td>
我们将order-by的value值修改为是'blue_name',即以'blue_name'为排序方式。
继而通过重新显示Layer1的innerHTML值来显示新的排序内容。

(2)文本中:

order-by
这个可不能少哦,不然就找不到了,效果嘛,你瞧瞧看吧!! 

程序代码: [ 复制代码到剪贴板 ]
<?xml version="1.0" encoding="gb2312" ?>


另外说一点:
在大多的XML教科书中所显示的代码中很少会加上encoding="gb2312" ,
因此我们在XML中用到中文的时候会报错,原因就是没有写这个申明。


后记: 
大家熟悉动态排序完成思路后会发现,其实我们的实现手法很简单。
就是修改order-by的数值,然后重新显示。
在动态查询和动态分页的功能中我们依然是按照这个思路去完成的。

分享到:
评论

相关推荐

    动态排序 动画显示 C#

    动态排序是计算机科学中一种常见的数据处理方法,用于组织和优化数据序列,使其按照特定的顺序排列。在C#编程语言中实现动态排序,可以利用其丰富的库函数和面向对象特性,让排序过程可视化,也就是动画显示,这有助...

    vb动态排序演示vb动态排序演示1

    在VB(Visual Basic)编程中,动态排序是一种常见的操作,特别是在处理数据集合时。动态排序允许程序员根据需要在运行时改变数据的排列顺序,而无需预先知道数据的完整信息。这个压缩包文件“vb动态排序演示vb动态...

    Table动态排序,可以按Table的列对该Table进行动态排序

    在IT领域,表格(Table)数据的动态排序是一项基本且重要的功能,尤其在数据分析、数据库管理、网页设计以及各种应用程序中。动态排序允许用户根据表中的某一列或多个列的数据来快速调整数据的显示顺序,这极大地...

    HTML5与iOS交互实现的各种动态排序

    其中,Canvas和WebSocket特别适合实现动态排序的动画效果。 在iOS中,通过WebKit框架,我们可以将HTML5页面嵌入到原生应用中,使用UIWebView或WKWebView来展示。这样,HTML5代码可以和Objective-C或Swift代码进行...

    豪华版js实现table动态排序

    在网页开发中,数据展示通常会使用表格(Table)元素,而为了提高用户体验,动态排序功能是必不可少的。"豪华版js实现table动态排序"是一个针对网页表格进行动态排序的解决方案,它允许用户通过点击表头来切换排序...

    C# List OrderBy 动态多字段排序

    假设我们有一个字符串数组`fieldNames`,其中包含了我们需要排序的字段名,我们可以构建一个动态排序的函数: ```csharp public static List&lt;T&gt; DynamicOrderBy(List&lt;T&gt; list, string[] fieldNames) { var ...

    通过JS和Python实现的动态排序条形图

    通过JS或者Python实现的动态排序条形图。打开文件:Historical-ranking-data-visualization-based-on-d3.js-master\src\bargraph.htm 选择company.csv文件,立即查看JS实现的效果。安装anaconda,运行city.py,查看...

    jquery实现table的动态排序

    对于"jquery实现table的动态排序"这个主题,我们将会深入探讨如何利用jQuery来实现表格数据的动态排序,以便用户可以按照不同列的值进行升序或降序排列,而无需重新加载页面。 首先,我们需要一个包含数据的HTML...

    .net linq动态组合查询条件及排序

    至于动态排序,我们可以使用`OrderBy()`或`OrderByDescending()`方法,同样可以通过表达式树实现。如果需要根据多个字段进行排序,可以使用`ThenBy()`或`ThenByDescending()`。以下是一个示例: ```csharp public ...

    JQuery_可拖曳动态添加表格、动态排序

    JQuery 可拖曳动态添加表格、动态排序 JQuery 是一个流行的 JavaScript 库,提供了丰富的功能来简化 Web 开发。今天,我们将探讨如何使用 JQuery 实现可拖曳动态添加表格、动态排序的功能。 可拖曳动 可拖曳动是 ...

    JavaScript实现的动态排序分页

    在IT行业中,动态排序和分页是Web应用中常见的功能,尤其在数据量庞大的表格展示时更为重要。本文将深入探讨如何使用JavaScript实现这一功能。 首先,动态排序是指用户可以根据需求点击表格的列名,系统会即时根据...

    帆软:排序问题(通过帆软设置或者sql排序)

    3. **动态排序**:在SQL中,还可以使用`CASE`语句实现复杂的排序逻辑,根据特定条件对数据进行排序。 三、结合帆软与SQL的排序 1. **预处理排序**:在SQL查询时完成排序,帆软报表仅显示已排序的结果。这种方式...

    C++、qt环境下的模拟操作系统多级反馈轮转法 或者说动态排序

    在本实验中,我们将探讨如何在C++编程环境中利用Qt库来模拟操作系统的多级反馈轮转法(Multi-Level Feedback Queue, MLFQ),并结合动态排序算法来优化任务调度。多级反馈轮转法是一种常见的进程调度策略,旨在平衡...

    计算机软件-商业源码-动态排序指示箭头.zip

    动态排序指示箭头.zip这个压缩包文件包含了与计算机科学中的排序算法相关的内容,特别是与可视化动态排序过程有关的源码。动态排序指示箭头通常指的是在排序过程中,用于直观展示元素移动情况的图形化表示。这通常是...

    SQL SERVER中动态排序数据库查询结果的方法探讨.pdf

    在SQL SERVER中实现数据库查询结果的动态排序是一个实用而常见的话题。首先,我们需要了解在SQL SERVER中如何使用SELECT语句进行静态排序输出。SELECT语句是SQL中最基本的查询语句,它具有强大的数据检索功能,可以...

    Table动态排序-sorttable

    标题中的"Table动态排序-sorttable"指的是在HTML表格(Table)中实现动态排序的功能,让用户可以根据表头点击来改变数据列的排序顺序。这通常用于数据展示和分析,使用户可以方便地查找和理解信息。"sorttable.js"是...

    java List中对象多属性排序及各属性排序设置

    总结来说,Java中的List可以通过自定义Comparator或者利用泛型和方法引用来实现对象多属性的动态排序。这种技术在处理复杂数据结构时非常有用,使得代码更加简洁且易于维护。通过学习和实践这部分内容,开发者可以...

    vb动态排序vb动态排序

    动态排序,正如标题和描述中提到的,是指在程序运行时根据特定条件进行的排序,而不是预先设定固定的排序顺序。这种排序方法通常涉及到算法的选择和实现,以确保效率和灵活性。 排序算法有很多种,比如冒泡排序、...

    通过js对html表中数据进行动态排序

    本文将详细介绍如何通过JavaScript实现对HTML表格中的数据进行动态排序,让网页内容更加灵活且用户友好。 首先,我们需要理解HTML表格的基本结构。HTML表格由`&lt;table&gt;`元素开始,包含`&lt;tr&gt;`(行)元素,而每行中又...

Global site tag (gtag.js) - Google Analytics