最近在做一个产品列表的控件. 一般来说用SqlDatasource或ObjectDatasource就好了.从数据库拿分页和排序的数据是很简单的了啦.
后来想不如试试用XMLDatasource,这样不用访问数据库.结果因为对xlst和xpath不熟悉,花了不少时间才搞定.
首先说分页吧. 要用到xpath的position函数. 简单来说 xpath 就是 root/children/children[@attribute] 这样的结构.
例如要取第1~10条数据, (position 是从1开始):
XmlDataSource1.XPath ="Products/Product[position()>0 and position()<=10]";
再说排序吧. 这个就要用到xlst了,因为原来的xml数据不是排好序的.所以要用xlst文件Transform之后,再应用在XMLDatasource
xlst 排序代码如下(按价格排序):
<xsl:template match="/">
<Products>
<xsl:for-each select="Products/Product">
<xsl:sort select="@Price" data-type="number" order="ascending" />
<xsl:copy-of select="."/>
</xsl:for-each>
</Products>
</xsl:template>
<Products>
<xsl:for-each select="Products/Product">
<xsl:sort select="@Price" data-type="number" order="ascending" />
<xsl:copy-of select="."/>
</xsl:for-each>
</Products>
</xsl:template>
但是这样按价格排序的话是写死的,如果要根据客户选择的column排序的话,就要定义xsl:param 参数变量
上面的xlst就要改成这样
<xsl:sort select="@*[local-name()=$OrderBy]" data-type="{$DataType}" order="{$Direction}" />
后台C#代码动态赋值.
XmlDataSource1.TransformArgumentList.AddParam("OrderBy", "", OrderBy);
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 什么是nginx的强缓存和协商缓存
· 一文读懂知识蒸馏
· Manus爆火,是硬核还是营销?