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

来源:互联网 发布:鄂维南 大数据 编辑:程序博客网 时间:2024/05/22 17:02

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(">     </z:row>","/>"
);

            Response.ContentType
="text/xml"
;

            Response.Write(str);

            

        }


 

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

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

(2)设置PrivotTable1的数据源

      连接字符串:Provider=MSPersist

      命令文本或SQL:http://yourserver/demo1/createdata.aspx

    

经过以上步骤,就可以对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结构的优势了

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

 

原创粉丝点击