使用XSL实现在客户端的排序操作

现在很多WEB程序有排序及分页功能,通常每次操作都要到服务器取数据。本文使用XSL+XML方式,仅从服务器取一次数据并缓存在客户端,客户端可自行操作。还给出从数据库取数据转XML传客户端及从服务器取数据动态生成XSL实现排序的代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

现在有WEB程序大多都有很多排序及分页的功能。每次进行这些操作的时候,我们都要到服务器去一次数据。这里我使用XSL+XML的方式来演示一下,只从服务器取一次数据,缓存在客户端,然后客户端可以进行自己想要的操作。


//这个文件的主要功能是从数据库里取出数据。然后转换成XML,传到客户端
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;
using System.Xml;
namespace c3
{
/// <summary>
/// WebForm9 的摘要说明。
/// </summary>
public class WebForm9 : System.Web.UI.Page
{
private void Page_Load(object sender, System.EventArgs e)
{
SqlConnection cn=new SqlConnection();
cn.ConnectionString="server=.;uid=sa;pwd=;database=northwind";
cn.Open();
SqlCommand cmd=new SqlCommand();
cmd.Connection=cn;
cmd.CommandText="select EmployeeID,LastName,Title,BirthDate from employees";
DataSet ds=new DataSet("Emps");
SqlDataAdapter da=new SqlDataAdapter();
da.SelectCommand=cmd;
da.Fill(ds,"Emp");
cn.Close();
Response.Clear();
this.Response.ContentType="text/xml";
//this.Response.ContentEncoding="gb2312";
this.Response.Write("<?xml version='1.0' encoding='gb2312'?>");
this.Response.Write(ds.GetXml());
Response.End();

}

#region Web 窗体设计器生成的代码
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}

/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.Load += new System.EventHandler(this.Page_Load);

}
#endregion
}
}


//此文件的主要功能是从服务器取得数据。然后动态生成XSL实现排序。

WebForm8<meta content="Microsoft Visual Studio .NET 7.1" name="GENERATOR"> <meta content="C#" name="CODE_LANGUAGE"> <meta content="JavaScript" name="vs_defaultClientScript"> <meta content="http://schemas.microsoft.com/intellisense/ie5" name="vs_targetSchema"> <script> function GetXMLData(){ if(dbXML.readyState=='complete'){ SortXML("EmployeeID","number") } } function SortXML(k,t) { var srcXml=dbXML.XMLDocument var xslXml=xslSrc.XMLDocument var order=xslXml.selectSingleNode("//xsl:sort/@select") //查看是否是同一列进行排序 if(order.value==k) { if(xslXml.selectSingleNode("//xsl:sort/@order").value=="ascending") { xslXml.selectSingleNode("//xsl:sort/@order").value="descending" xslXml.selectSingleNode("//xsl:sort/@data-type").value=t } else { xslXml.selectSingleNode("//xsl:sort/@order").value="ascending" xslXml.selectSingleNode("//xsl:sort/@data-type").value=t } } else { order.value=k xslXml.selectSingleNode("//xsl:sort/@order").value="ascending" xslXml.selectSingleNode("//xsl:sort/@data-type").value=t } div1.innerHTML=(srcXml.transformNode(xslXml)) } </script>
s
<xml id="xslSrc"><stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"><template match="/"><table align="center" border="1" width="80%" bordercolor="#000000" style="border-collapse:collapse"><tbody> <tr> <th onclick="SortXML('EmployeeID','number')" style="cursor:hand">员工号</th> <th onclick="SortXML('LastName','text')" style="cursor:hand">姓名</th> <th onclick="SortXML('Title','text')" style="cursor:hand">职务</th> <th onclick="SortXML('BirthDate','text')" style="cursor:hand">生日</th> </tr> <for-each select="//Emp"><sort select="EmployeeID" data-type="number" order="ascending"></sort><tr> <td> <value-of select="EmployeeID"></value-of> </td> <td> <value-of select="LastName"></value-of> </td> <td> <value-of select="Title"></value-of> </td> <td> <value-of select="BirthDate"></value-of> </td> </tr></for-each> </tbody></table></template></stylesheet></xml><xml id="dbXML" src="webform9.aspx" onreadystatechange="GetXMLData()"></xml>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值