现在的位置: 首页 > 综合 > 正文

OWC使用ASPNET的程序集作数据源

2017年12月18日 ⁄ 综合 ⁄ 共 3507字 ⁄ 字号 评论关闭

OWC使用ASPNET的程序集作数据源

 

预期读者具备的条件:

1.  会使用ASP.NET(C#)访问数据库

2.  OWC使用数据库表作为数据源有一定的了解与应用

3.  了解XML语言

 步骤:

前提:使用VS.NET 2003 建立一个名称为Demo1WEB工程项目

 

1.       建立一个XSLT文件,命名为:Rowset.xlst ,格式如下:

Rowset.xlst

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

 <xsl:output method="xml" omit-xml-declaration = "yes" indent="yes"/>

 <xsl:template match="/">

 <xml xmlns:s="uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882"

    xmlns:dt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882"

    xmlns:rs="urn:schemas-microsoft-com:rowset"

    xmlns:z="#RowsetSchema">

 <s:Schema id='RowsetSchema'>

 <s:ElementType name='row' content='eltOnly' rs:CommandTimeout='30'>

 <s:AttributeType name="LastName" rs:number="1" rs:writeunknown="true">

 <s:datatype dt:type="string" dt:maxLength="10" rs:maybenull="false" />

 </s:AttributeType>

 <s:AttributeType name='OrderTotal' rs:number='2' rs:nullable='true'>

 <s:datatype dt:type='float' dt:maxLength='8' rs:precision='15' rs:fixedlength='true'/>

 </s:AttributeType>

 <s:extends type='rs:rowbase'/>

 </s:ElementType>

 </s:Schema>

 <rs:data>

 <xsl:for-each select="MyDataset/Table">

 <xsl:element name="z:row" namespace="#RowsetSchema">

 <xsl:attribute name="LastName">

 <xsl:value-of select="LastName"/>

 </xsl:attribute>

 <xsl:attribute name="OrderTotal">

 <xsl:value-of select="OrderTotal"/>

 </xsl:attribute>

 </xsl:element>

 </xsl:for-each>

 </rs:data>

 </xml>

 </xsl:template>

</xsl:stylesheet> 

2.建立一个CreateData.aspx页面,其代码如下:

       CreateData.aspx:

              只留最上面

                     <%@ Page language="c#" Codebehind="CreateData.aspx.cs"…%>字样的一行

       CreateData.aspx.cs

              在其Page_Load写如下代码:

private void Page_Load(object sender, System.EventArgs e)

        {

            // 在此处放置用户代码以初始化页面

            string strConn= "User ID=<username>;Password=<password>;Initial Catalog=Northwind;Data Source=YourSQLServer;";

           

            string sSQL   = "SELECT LastName, Sum([UnitPrice]*[Quantity]*(1-[Discount])) AS OrderTotal  FROM Employees INNER JOIN (Orders INNER JOIN [Order Details] ON  Orders.OrderID = [Order Details].OrderID) ON Employees.EmployeeID = Orders.EmployeeID GROUP BY LastName";

 

            //Connect to the data source.

            SqlConnection sqlCon=new SqlConnection (strConn);

            sqlCon.Open();

            //Build a dataSet for Employee Sales.

            DataSet ds = new DataSet("MyDataset");

            SqlDataAdapter da =new SqlDataAdapter(sSQL,sqlCon);

            da.Fill(ds);

               

            //Transform the dataSet using the stylesheet.

            XmlDataDocument xmlDoc_ds= new XmlDataDocument(ds);

            XslTransform xslTran=new XslTransform();

            xslTran.Load(this.Context.Server.MapPath("Rowset.xslt"));

               

            System.Text.StringBuilder t = new System.Text.StringBuilder();

            xslTran.Transform(xmlDoc_ds,null,new System.IO.StringWriter(t),null);

            string str=t.ToString();

 

            str=str.Replace(">/r/n    </z:row>","/>");

            Response.ContentType="text/xml";

            Response.Write(str);

           

        }

3.建立一个default.htm页面,添加OWCChartPivotTable控件

(1)Chart的数据源设置为PrivotTable1


(2)设置PrivotTable1的数据源

    

经过以上步骤,就可以对OWC进行拖拉操作了,以后的操作和OWC使用数据库表作为数据源一样

微软网站上的相关介绍

    http://support.microsoft.com/kb/303016/zh-cn?spid=548&sid=500

 

不过不知道是因为我VS版本的问题还是因为什么,总之了上面网址给出的程序,我在使用的时候只能获得第一条记录,我曾把程序输出的XML文件看了一下,寻找的解决办法如下:

微软网站上的程序输出的格式如下

          <z:row >

</z:row>

把该xml文件作为owc的数据源的时候确实只有第一条记录,而把xml文件格式改成下面的格式:

                <z:row />

owc就可以显示所有记录, 

所以我在该文档中介绍的Demo程序做了稍微的变动,不晓得原因在哪,按理论上这两种输出格式是一样的,若有知道原因的请指点一二啊!呵呵~~

   

 

该方法的相关应用:

    1.可以隐藏数据库的连接字符串

    2.使用Oracle数据库的时候,需要配置Oracle Client,而每台机器都需要配置就达不到B/S结构的优势了

    等等吧!我目前只看到这两个好处,希望有不同见解的朋友能留言给我哦!

 

抱歉!评论已关闭.