扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
作者:王凯明 来源:yesky 2007年11月4日
关键字:
实例介绍
下面我向大家介绍一个示例性的ASP.NET Web应用程序,该程序能从SQL Server 2000中的Northwind数据库中获取关系型数据并填充到一个DataSet对象中。该Web应用程序使用上面介绍的第三种方法同步化DataSet对象和XmlDataDocument对象,以完成从关系型数据到XML数据的转化工作。最后该Web应用程序根据一个预先编写好的XSLT文件实现从XML格式到HTML格式的数据转换,其中运用到的主要类便是XslTransform类。所以总体来看该Web应用程序并不复杂,不过它良好地体现了.NET框架下不同数据类型的转化方法和技巧,值得大家学习。
首先打开Visual Studio.Net,创建一个Visual C#的ASP.NET Web应用程序,如图1所示:
图1
接着从SQL Server 2000的Northwind数据库中获取数据并填充到一个DataSet对象中。Northwind数据库中包含了一个Suppliers表和一个Products表,它们之间存在着一对多的关系,该关系以两个表中的SupplierID列为关联键。该关系能显示每个供应商所能供应的所有产品列表,假设该Web应用程序就是要显示这些信息,那么下面就是获取DataSet对象的方法了。
private DataSet GetDataSet() // 打开连接,并用上面的两个SqlDataAdapter对象填充DataSet对象,最后关闭连接 // 在DataSet对象中添加必要的关系,该关系是一对多类型的 // 返回DataSet对象 |
上面的代码能将Northwind数据库中的Suppliers表和Products表的数据运用SqlDataAdapter对象的Fill()方法填充到一个DataSet对象中,然后在这两个数据表之间根据每个表中的SupplierID列建立一个一对多关系。
现在,你已经从后台数据库中获取数据并填充到DataSet对象了,不过要根据DataSet对象格式化输出结果是比较困难的,除非你使用像DataGrid那样的数据绑定控件。然而使用该类控件将使得输出结果的显示方式不富于变化,那也就可能不能满足应用程序的需求了。于是,你得先将数据格式转化为XML格式并运用XSLT技术将数据以HTML的方式显示给最终用户。所以,下面先得创建一个XSLT样式表文件。为该项目添加一个新项,如图2所示:
图2
样式表文件自身就是一个XML文件,其中包含了一个或多个XSLT模板。这些模板能根据其中的指令对源XML文件中的元素进行逐个处理并生成相应结果。编辑该样式表文件如下:
<?xml version="1.0" encoding="UTF-8" ?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="SuppliersProductsDS"> <HTML> <HEAD> <TITLE>XmlDataDocument Transformation!</TITLE> </HEAD> <STYLE> BODY{ font-family:verdana;font-size:9pt } TD { font-size:8pt } </STYLE> <BODY> <xsl:apply-templates select="Suppliers"></xsl:apply-templates> </BODY> </HTML> </xsl:template> <xsl:template match="Suppliers"> <TABLE> <TR><TD> <B> <xsl:value-of select="CompanyName"></xsl:value-of> <xsl:value-of select="Phone"></xsl:value-of> </B> </TD></TR> </TABLE> <xsl:apply-templates select="Products"></xsl:apply-templates> <BR></BR> </xsl:template> <xsl:template match="Products"> <TABLE BORDER="1"> <TR> <TD valign="top" bgcolor="#E0E0E0"> <B>Product:</B> </TD> <TD valign="top"> <xsl:value-of select="ProductName"></xsl:value-of> </TD> </TR> <TR> <TD valign="top" bgcolor="#E0E0E0"> <B>QuantityPerUnit:</B> </TD> <TD valign="top"> <xsl:value-of select="QuantityPerUnit"></xsl:value-of> </TD> </TR> <TR> <TD valign="top" bgcolor="#E0E0E0"> <B>UnitPrice:</B> </TD> <TD valign="top"> <xsl:value-of select="UnitPrice"></xsl:value-of> </TD> </TR> </TABLE> </xsl:template> </xsl:stylesheet> |
最后便是根据上面创建并填充的DataSet对象创建一个新的XmlDataDocument对象,然后根据样式表文件将XML数据转换为HTML格式的数据并呈现给最终用户。XSLT转换过程涉及到三个文件:一个为源XML文件,它是被处理的对象;一个样式表文件,它是XSLT转换的工具;还有一个就是输出结果文件。XSLT转换过程运用到了XslTransform类的Load()方法和Transform()方法,其作用分别是导入样式表和进行实际的转换。下面,添加Web页面的Load事件响应函数如下:
private void Page_Load(object sender, System.EventArgs e) // 创建一个XslTranform对象并导入XSLT样式表文件 // 进行XSLT转换并输出结果到一个流对象 // 显示输出结果 |
运行该Web应用程序的结果如图3所示:
图3
总结
以上我向大家阐述了.NET框架下数据类型转化的基本方法和技巧,其中的Web应用程序从后台数据库中获取了关系型的数据并根据DataSet对象和XmlDataDocument对象的同步化原理将数据转化为了XML类型的数据,最后它还运用到了XSLT技术将XML数据以HTML的格式呈现给最终用户,所以该实例良好地体现了.NET框架下与数据转化相关的技术,不失为一个好例子。最后,希望本文能对大家有不少帮助!
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者