Skip to main content
Blogging about SharePoint

Blogging about SharePoint

Search
Home
Blogging about SharePoint
Public Speaking
  
Michael Blumenthal's BlumenthalIT.NET > Blogging about SharePoint > Posts > Free Stock Quote Web Part  

February 19
Free Stock Quote Web Part

An easy and cheap way to build a stock quote web part is to use the Data View Web Part and the apparently free Stock Quote Web Service from WebServiceX.Net.

I built one today in less than 75 minutes, and much of that was spent figuring out how I could use the substring-before and substring-after commands to parse the XML blob returned by the service. Now you can do it in 5 minutes.

Once I built this web part, I exported it to a .webpart file. A .webpart file is just an XML file, which means that if all you need is a stock quote for a single stock, you can just reuse this web part and you don't even need to go back into SharePoint Designer to change the ticker symbol.

So this is what you do:

  1. Take the content below and save it to a text file. You can either copy and paste below, or right click this link and "Save Target As…"
  2. Replace the MSFT ticker symbol with the symbol of your choice. See where I have highlighted it below.
  3. Rename the file to end in .webpart.
  4. Add (import) the web part to a web part zone on a web part page in a SharePoint site. When you are done, it should look like this.

If you need a refresher on using the Data View Web Part, Dustin Miller has an excellent webcast on this topic.

If for some reason, this stock quote web part doesn't meet your requirements, Data Springs makes some.

This is provided as-is, no warranties implied, etc. etc.

<webParts>

<webPart xmlns="http://schemas.microsoft.com/WebPart/v3">

<metaData>

<type name="Microsoft.SharePoint.WebPartPages.DataFormWebPart, Microsoft.SharePoint, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" />

<importErrorMessage>Cannot import this Web Part.</importErrorMessage>

</metaData>

<data>

<properties>

<property name="MissingAssembly" type="string">Cannot import this Web Part.</property>

<property name="FireInitialRow" type="bool">True</property>

<property name="TitleIconImageUrl" type="string" />

<property name="HelpMode" type="helpmode">Modeless</property>

<property name="CacheXslStorage" type="bool">True</property>

<property name="ViewContentTypeId" type="string" />

<property name="Description" type="string" />

<property name="DataSourcesString" type="string">&lt;%@ Register TagPrefix="sharepoint" Namespace="Microsoft.SharePoint.WebControls" Assembly="Microsoft.SharePoint, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %&gt;&lt;sharepoint:SoapDataSource runat="server" SelectUrl="http://www.webservicex.net/stockquote.asmx" InsertUrl="" UpdateUrl="" DeleteUrl="" SelectAction="http://www.webserviceX.NET/GetQuote" InsertAction="" UpdateAction="" DeleteAction="" SelectPort="StockQuoteSoap" InsertPort="" UpdatePort="" DeletePort="" SelectServiceName="StockQuote" InsertServiceName="" UpdateServiceName="" DeleteServiceName="" AuthType="None" WsdlPath="http://www.webservicex.net/stockquote.asmx?WSDL" XPath="" ID="SoapDataSource4"&gt;&lt;SelectCommand&gt;

&lt;soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"&gt;&lt;soap:Body&gt;&lt;GetQuote xmlns="http://www.webserviceX.NET/"&gt;&lt;symbol&gt;MSFT&lt;/symbol&gt;&lt;/GetQuote&gt;&lt;/soap:Body&gt;&lt;/soap:Envelope&gt;&lt;/SelectCommand&gt;

&lt;InsertCommand&gt;

&lt;/InsertCommand&gt;

&lt;UpdateCommand&gt;

&lt;/UpdateCommand&gt;

&lt;DeleteCommand&gt;

&lt;/DeleteCommand&gt;

&lt;/sharepoint:SoapDataSource&gt;

</property>

<property name="AllowZoneChange" type="bool">True</property>

<property name="ParameterBindings" type="string">

                        &lt;ParameterBinding Name="dvt_apos" Location="Postback;Connection"/&gt;

                        &lt;ParameterBinding Name="UserID" Location="CAMLVariable" DefaultValue="CurrentUserName"/&gt;

                        &lt;ParameterBinding Name="Today" Location="CAMLVariable" DefaultValue="CurrentDate"/&gt;

                        &lt;ParameterBinding Name="dvt_firstrow" Location="Postback;Connection"/&gt;

                        &lt;ParameterBinding Name="dvt_nextpagedata" Location="Postback;Connection"/&gt;

                    </property>

<property name="PageSize" type="int">1</property>

<property name="TitleUrl" type="string" />

<property name="ViewFlag" type="string">0</property>

<property name="Xsl" type="string">

 

 

&lt;xsl:stylesheet xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ddw1="http://www.webserviceX.NET/" version="1.0" exclude-result-prefixes="xsl msxsl ddwrt" xmlns:ddwrt="http://schemas.microsoft.com/WebParts/v2/DataView/runtime" xmlns:asp="http://schemas.microsoft.com/ASPNET/20" xmlns:__designer="http://schemas.microsoft.com/WebParts/v2/DataView/designer" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:msxsl="urn:schemas-microsoft-com:xslt" xmlns:SharePoint="Microsoft.SharePoint.WebControls" xmlns:ddwrt2="urn:frontpage:internal"&gt;

    &lt;xsl:output method="html" indent="no"/&gt;

    &lt;xsl:decimal-format NaN=""/&gt;

    &lt;xsl:param name="dvt_apos"&gt;&amp;apos;&lt;/xsl:param&gt;

    &lt;xsl:param name="dvt_firstrow"&gt;1&lt;/xsl:param&gt;

    &lt;xsl:param name="dvt_nextpagedata" /&gt;

    &lt;xsl:variable name="dvt_1_automode"&gt;0&lt;/xsl:variable&gt;

    

    &lt;xsl:template match="/" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ddw1="http://www.webserviceX.NET/" xmlns:asp="http://schemas.microsoft.com/ASPNET/20" xmlns:__designer="http://schemas.microsoft.com/WebParts/v2/DataView/designer" xmlns:SharePoint="Microsoft.SharePoint.WebControls"&gt;

        &lt;xsl:call-template name="dvt_1"/&gt;

    &lt;/xsl:template&gt;

    

    &lt;xsl:template name="dvt_1"&gt;

        &lt;xsl:variable name="dvt_StyleName"&gt;RepForm3&lt;/xsl:variable&gt;

        &lt;xsl:variable name="Rows" select="/soap:Envelope/soap:Body/ddw1:GetQuoteResponse"/&gt;

        &lt;xsl:variable name="dvt_RowCount" select="count($Rows)" /&gt;

        &lt;xsl:variable name="RowLimit" select="1" /&gt;

        &lt;xsl:variable name="FirstRow" select="$dvt_firstrow" /&gt;

        &lt;xsl:variable name="LastRow"&gt;

            &lt;xsl:choose&gt;

                &lt;xsl:when test="($FirstRow + $RowLimit - 1) &amp;gt; $dvt_RowCount"&gt;&lt;xsl:value-of select="$dvt_RowCount" /&gt;&lt;/xsl:when&gt;

                &lt;xsl:otherwise&gt;&lt;xsl:value-of select="$FirstRow + $RowLimit - 1" /&gt;&lt;/xsl:otherwise&gt;

            &lt;/xsl:choose&gt;

        &lt;/xsl:variable&gt;

        &lt;xsl:variable name="IsEmpty" select="$dvt_RowCount = 0" /&gt;

        &lt;table border="0" width="100%"&gt;

            &lt;xsl:call-template name="dvt_1.body"&gt;

                &lt;xsl:with-param name="Rows" select="$Rows[position() &amp;gt;= $FirstRow and position() &amp;lt;= $LastRow]"/&gt;

                &lt;xsl:with-param name="FirstRow" select="1" /&gt;

                &lt;xsl:with-param name="LastRow" select="$dvt_RowCount" /&gt;

            &lt;/xsl:call-template&gt;

        &lt;/table&gt;

        &lt;xsl:call-template name="dvt_1.commandfooter"&gt;

            &lt;xsl:with-param name="FirstRow" select="$FirstRow" /&gt;

            &lt;xsl:with-param name="LastRow" select="$LastRow" /&gt;

            &lt;xsl:with-param name="RowLimit" select="$RowLimit" /&gt;

            &lt;xsl:with-param name="dvt_RowCount" select="$dvt_RowCount" /&gt;

            &lt;xsl:with-param name="RealLastRow" select="number(ddwrt:NameChanged('',-100))" /&gt;

        &lt;/xsl:call-template&gt;

    &lt;/xsl:template&gt;

    &lt;xsl:template name="dvt_1.body"&gt;

        &lt;xsl:param name="Rows"/&gt;

        &lt;xsl:param name="FirstRow" /&gt;

        &lt;xsl:param name="LastRow" /&gt;

        &lt;xsl:for-each select="$Rows"&gt;

            &lt;xsl:variable name="dvt_KeepItemsTogether" select="false()" /&gt;

            &lt;xsl:variable name="dvt_HideGroupDetail" select="false()" /&gt;

            &lt;xsl:if test="(position() &amp;gt;= $FirstRow and position() &amp;lt;= $LastRow) or $dvt_KeepItemsTogether"&gt;

                &lt;xsl:if test="not($dvt_HideGroupDetail)" ddwrt:cf_ignore="1"&gt;

                    &lt;xsl:call-template name="dvt_1.rowview" /&gt;

                &lt;/xsl:if&gt;

            &lt;/xsl:if&gt;

        &lt;/xsl:for-each&gt;

        

    &lt;/xsl:template&gt;

    &lt;xsl:template name="dvt_1.rowview"&gt;

        &lt;tr&gt;

            &lt;td&gt;&lt;xsl:value-of select="concat(substring-before(substring-after(ddw1:GetQuoteResult,'&amp;lt;Name&amp;gt;'),'&amp;lt;/Name&amp;gt;'),' (',substring-before(substring-after(ddw1:GetQuoteResult,'&amp;lt;Symbol&amp;gt;'),'&amp;lt;/Symbol&amp;gt;'),')')" /&gt;&lt;/td&gt;

        &lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;table border="0" cellspacing="0" width="100%"&gt;&lt;tr&gt;&lt;td class="ms-vb" style="width: 60%"&gt;&lt;xsl:text xmlns:ddwrt="http://schemas.microsoft.com/WebParts/v2/DataView/runtime" ddwrt:nbsp-preserve="yes" disable-output-escaping="yes"&gt;&amp;amp;nbsp;&lt;/xsl:text&gt;

            &lt;strong&gt;As Of:&lt;/strong&gt;&lt;/td&gt;&lt;td width="75%" class="ms-vb"&gt;&lt;xsl:value-of select="concat(

substring-before(substring-after(ddw1:GetQuoteResult,'&amp;lt;Time&amp;gt;'),'&amp;lt;/Time&amp;gt;'),' ',

substring-before(substring-after(ddw1:GetQuoteResult,'&amp;lt;Date&amp;gt;'),'&amp;lt;/Date&amp;gt;'))" /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class="ms-searchimage"&gt;&lt;td class="ms-vb" style="width: 60%"&gt;&lt;strong&gt;Last:&lt;/strong&gt;&lt;/td&gt;&lt;td width="75%" class="ms-vb"&gt;&lt;xsl:value-of select="substring-before(substring-after(ddw1:GetQuoteResult,'&amp;lt;Last&amp;gt;'),'&amp;lt;/Last&amp;gt;')" /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="ms-vb" style="width: 60%"&gt;&lt;strong&gt;Change:

            &lt;xsl:text xmlns:ddwrt="http://schemas.microsoft.com/WebParts/v2/DataView/runtime" ddwrt:nbsp-preserve="yes" disable-output-escaping="yes"&gt;&amp;amp;nbsp;&lt;/xsl:text&gt;

&lt;/strong&gt;&lt;/td&gt;&lt;td width="75%" class="ms-vb"&gt;&lt;xsl:value-of select="substring-before(substring-after(ddw1:GetQuoteResult,'&amp;lt;Change&amp;gt;'),'&amp;lt;/Change&amp;gt;')" /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class="ms-searchimage"&gt;&lt;td class="ms-vb" style="width: 60%"&gt;&lt;strong&gt;Open:&lt;/strong&gt;&lt;/td&gt;&lt;td width="75%" class="ms-vb"&gt;&lt;xsl:value-of select="substring-before(substring-after(ddw1:GetQuoteResult,'&amp;lt;Open&amp;gt;'),'&amp;lt;/Open&amp;gt;')" /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="ms-vb" style="width: 60%"&gt;&lt;strong&gt;Low:&lt;/strong&gt;&lt;/td&gt;&lt;td width="75%" class="ms-vb"&gt;&lt;span&gt;&lt;xsl:value-of select="substring-before(substring-after(ddw1:GetQuoteResult,'&amp;lt;Low&amp;gt;'),'&amp;lt;/Low&amp;gt;')" /&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;

            &lt;xsl:if test="$dvt_1_automode = '1'" ddwrt:cf_ignore="1"&gt;

                        &lt;tr&gt;

                            &lt;td colspan="99" class="ms-vb"&gt;

                                &lt;span ddwrt:amkeyfield="" ddwrt:amkeyvalue="string($XPath)" ddwrt:ammode="view"&gt;&lt;/span&gt;

                            &lt;/td&gt;

                        &lt;/tr&gt;&lt;/xsl:if&gt;

            &lt;tr class="ms-searchimage"&gt;&lt;td class="ms-vb" style="width: 60%"&gt;&lt;strong&gt;High

                &lt;xsl:text xmlns:ddwrt="http://schemas.microsoft.com/WebParts/v2/DataView/runtime" ddwrt:nbsp-preserve="yes" disable-output-escaping="yes"&gt;&amp;amp;nbsp;&lt;/xsl:text&gt;

                &lt;/strong&gt;&lt;/td&gt;&lt;td width="75%" class="ms-vb"&gt;&lt;xsl:value-of select="substring-before(substring-after(ddw1:GetQuoteResult,'&amp;lt;High&amp;gt;'),'&amp;lt;/High&amp;gt;')" /&gt;&lt;/td&gt;&lt;/tr&gt;

            &lt;tr&gt;&lt;td class="ms-vb" style="width: 60%"&gt;&lt;strong&gt;Volume:

                &lt;xsl:text xmlns:ddwrt="http://schemas.microsoft.com/WebParts/v2/DataView/runtime" ddwrt:nbsp-preserve="yes" disable-output-escaping="yes"&gt;&amp;amp;nbsp;&lt;/xsl:text&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td width="75%" class="ms-vb"&gt;&lt;xsl:value-of select="substring-before(substring-after(ddw1:GetQuoteResult,'&amp;lt;Volume&amp;gt;'),'&amp;lt;/Volume&amp;gt;')" /&gt;&lt;/td&gt;&lt;/tr&gt;

            &lt;tr class="ms-searchimage"&gt;&lt;td class="ms-vb" style="width: 60%"&gt;&lt;strong&gt;Market Cap:

                &lt;xsl:text xmlns:ddwrt="http://schemas.microsoft.com/WebParts/v2/DataView/runtime" ddwrt:nbsp-preserve="yes" disable-output-escaping="yes"&gt;&amp;amp;nbsp;

                

                &lt;/xsl:text&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td width="75%" class="ms-vb"&gt;&lt;xsl:value-of select="substring-before(substring-after(ddw1:GetQuoteResult,'&amp;lt;MktCap&amp;gt;'),'&amp;lt;/MktCap&amp;gt;')" /&gt;&lt;/td&gt;&lt;/tr&gt;

            &lt;tr&gt;&lt;td class="ms-vb" style="width: 60%"&gt;&lt;strong&gt;Previous Close:&lt;/strong&gt;

                &lt;xsl:text xmlns:ddwrt="http://schemas.microsoft.com/WebParts/v2/DataView/runtime" ddwrt:nbsp-preserve="yes" disable-output-escaping="yes"&gt;&amp;amp;nbsp;

                

                &lt;/xsl:text&gt;&lt;/td&gt;&lt;td width="75%" class="ms-vb"&gt;&lt;xsl:value-of select="substring-before(substring-after(ddw1:GetQuoteResult,'&amp;lt;PreviousClose&amp;gt;'),'&amp;lt;/PreviousClose&amp;gt;')" /&gt;&lt;/td&gt;&lt;/tr&gt;

            &lt;tr class="ms-searchimage"&gt;&lt;td class="ms-vb" style="width: 60%"&gt;&lt;strong&gt;Percentage Change:&lt;/strong&gt;

                &lt;xsl:text xmlns:ddwrt="http://schemas.microsoft.com/WebParts/v2/DataView/runtime" ddwrt:nbsp-preserve="yes" disable-output-escaping="yes"&gt;&amp;amp;nbsp;

                

                &lt;/xsl:text&gt;&lt;/td&gt;&lt;td width="75%" class="ms-vb"&gt;&lt;xsl:value-of select="substring-before(substring-after(ddw1:GetQuoteResult,'&amp;lt;PercentageChange&amp;gt;'),'&amp;lt;/PercentageChange&amp;gt;')" /&gt;&lt;/td&gt;&lt;/tr&gt;

            &lt;tr&gt;&lt;td class="ms-vb" style="width: 60%"&gt;&lt;strong&gt;12 Month Range:&lt;/strong&gt;&lt;/td&gt;&lt;td width="75%" class="ms-vb"&gt;&lt;xsl:value-of select="substring-before(substring-after(ddw1:GetQuoteResult,'&amp;lt;AnnRange&amp;gt;'),'&amp;lt;/AnnRange&amp;gt;')" /&gt;&lt;/td&gt;&lt;/tr&gt;

            &lt;tr class="ms-searchimage"&gt;&lt;td class="ms-vb" style="width: 60%"&gt;&lt;strong&gt;Earnings Per Share:&lt;/strong&gt;

                &lt;xsl:text xmlns:ddwrt="http://schemas.microsoft.com/WebParts/v2/DataView/runtime" ddwrt:nbsp-preserve="yes" disable-output-escaping="yes"&gt;&amp;amp;nbsp;

                

                &lt;/xsl:text&gt;&lt;/td&gt;&lt;td width="75%" class="ms-vb"&gt;&lt;xsl:value-of select="substring-before(substring-after(ddw1:GetQuoteResult,'&amp;lt;Earns&amp;gt;'),'&amp;lt;/Earns&amp;gt;')" /&gt;&lt;/td&gt;&lt;/tr&gt;

            &lt;tr&gt;&lt;td class="ms-vb" style="width: 60%"&gt;&lt;strong&gt;P-E:

                &lt;xsl:text xmlns:ddwrt="http://schemas.microsoft.com/WebParts/v2/DataView/runtime" ddwrt:nbsp-preserve="yes" disable-output-escaping="yes"&gt;&amp;amp;nbsp;&lt;/xsl:text&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td width="75%" class="ms-vb"&gt;&lt;xsl:value-of select="substring-before(substring-after(ddw1:GetQuoteResult,'&amp;lt;P-E&amp;gt;'),'&amp;lt;/P-E&amp;gt;')" /&gt;&lt;/td&gt;&lt;/tr&gt;

            &lt;/table&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/xsl:template&gt;

    &lt;xsl:template name="dvt_1.commandfooter"&gt;

        &lt;xsl:param name="FirstRow" /&gt;

        &lt;xsl:param name="LastRow" /&gt;

        &lt;xsl:param name="RowLimit" /&gt;

        &lt;xsl:param name="dvt_RowCount" /&gt;

        &lt;xsl:param name="RealLastRow" /&gt;

        &lt;table cellspacing="0" cellpadding="4" border="0" width="100%"&gt;

            &lt;tr&gt;

                &lt;xsl:if test="$FirstRow &amp;gt; 1 or $LastRow &amp;lt; $dvt_RowCount"&gt;

                    &lt;xsl:call-template name="dvt_1.navigation"&gt;

                        &lt;xsl:with-param name="FirstRow" select="$FirstRow" /&gt;

                        &lt;xsl:with-param name="LastRow" select="$LastRow" /&gt;

                        &lt;xsl:with-param name="RowLimit" select="$RowLimit" /&gt;

                        &lt;xsl:with-param name="dvt_RowCount" select="$dvt_RowCount" /&gt;

                        &lt;xsl:with-param name="RealLastRow" select="$RealLastRow" /&gt;

                    &lt;/xsl:call-template&gt;

                &lt;/xsl:if&gt;

            &lt;/tr&gt;

        &lt;/table&gt;

    &lt;/xsl:template&gt;

    &lt;xsl:template name="dvt_1.navigation"&gt;

        &lt;xsl:param name="FirstRow" /&gt;

        &lt;xsl:param name="LastRow" /&gt;

        &lt;xsl:param name="RowLimit" /&gt;

        &lt;xsl:param name="dvt_RowCount" /&gt;

        &lt;xsl:param name="RealLastRow" /&gt;

        &lt;xsl:variable name="PrevRow"&gt;

            &lt;xsl:choose&gt;

                &lt;xsl:when test="$FirstRow - $RowLimit &amp;lt; 1"&gt;1&lt;/xsl:when&gt;

                &lt;xsl:otherwise&gt;

                    &lt;xsl:value-of select="$FirstRow - $RowLimit" /&gt;

                &lt;/xsl:otherwise&gt;

            &lt;/xsl:choose&gt;

        &lt;/xsl:variable&gt;

        &lt;xsl:variable name="LastRowValue"&gt;

            &lt;xsl:choose&gt;

                &lt;xsl:when test="$LastRow &amp;gt; $RealLastRow"&gt;

                    &lt;xsl:value-of select="$LastRow"&gt;&lt;/xsl:value-of&gt;

                &lt;/xsl:when&gt;

                &lt;xsl:otherwise&gt;

                    &lt;xsl:value-of select="$RealLastRow"&gt;&lt;/xsl:value-of&gt;

                &lt;/xsl:otherwise&gt;

            &lt;/xsl:choose&gt;

        &lt;/xsl:variable&gt;

        &lt;xsl:variable name="NextRow"&gt;

            &lt;xsl:value-of select="$LastRowValue + 1"&gt;&lt;/xsl:value-of&gt;

        &lt;/xsl:variable&gt;

        &lt;td nowrap="nowrap" class="ms-paging" align="right"&gt;

            &lt;xsl:if test="$dvt_firstrow &amp;gt; 1" ddwrt:cf_ignore="1"&gt;

                &lt;a&gt;

                &lt;xsl:attribute name="href"&gt;javascript: &lt;xsl:value-of select="ddwrt:GenFireServerEvent('dvt_firstrow={1}')" /&gt;;&lt;/xsl:attribute&gt;

                Start&lt;/a&gt;

                &lt;xsl:text disable-output-escaping="yes" ddwrt:nbsp-preserve="yes"&gt;&amp;amp;nbsp;&lt;/xsl:text&gt;

                &lt;a&gt;

                &lt;xsl:attribute name="href"&gt;javascript: &lt;xsl:value-of select="ddwrt:GenFireServerEvent(concat('dvt_firstrow={',$PrevRow,'}'))" /&gt;;&lt;/xsl:attribute&gt;

                &lt;img src="/_layouts/images/prev.gif" border="0" alt="Previous" /&gt;

                &lt;/a&gt;

                &lt;xsl:text disable-output-escaping="yes" ddwrt:nbsp-preserve="yes"&gt;&amp;amp;nbsp;&lt;/xsl:text&gt;

            &lt;/xsl:if&gt;

            &lt;xsl:value-of select="$FirstRow" /&gt;

             - &lt;xsl:value-of select="$LastRowValue" /&gt;

            &lt;xsl:text disable-output-escaping="yes" ddwrt:nbsp-preserve="yes"&gt;&amp;amp;nbsp;&lt;/xsl:text&gt;

            &lt;xsl:if test="$LastRowValue &amp;lt; $dvt_RowCount or string-length($dvt_nextpagedata)!=0" ddwrt:cf_ignore="1"&gt;

                &lt;a&gt;

                &lt;xsl:attribute name="href"&gt;javascript: &lt;xsl:value-of select="ddwrt:GenFireServerEvent(concat('dvt_firstrow={',$NextRow,'}'))" /&gt;;&lt;/xsl:attribute&gt;

                &lt;img src="/_layouts/images/next.gif" border="0" alt="Next" /&gt;

                &lt;/a&gt;

            &lt;/xsl:if&gt;

        &lt;/td&gt;

    &lt;/xsl:template&gt;

&lt;/xsl:stylesheet&gt;    </property>

<property name="NoDefaultStyle" type="string">TRUE</property>

<property name="Direction" type="direction">NotSet</property>

<property name="UseSQLDataSourcePaging" type="bool">True</property>

<property name="ListName" type="string" null="true" />

<property name="Hidden" type="bool">False</property>

<property name="DisplayName" type="string" />

<property name="SampleData" type="string" null="true" />

<property name="HelpUrl" type="string" />

<property name="ChromeType" type="chrometype">BorderOnly</property>

<property name="CatalogIconImageUrl" type="string" />

<property name="Height" type="string" />

<property name="DataFields" type="string">ddw1:GetQuoteResult,GetQuoteResult;</property>

<property name="Default" type="string" />

<property name="ChromeState" type="chromestate">Normal</property>

<property name="DataSourceID" type="string" />

<property name="AllowClose" type="bool">True</property>

<property name="CacheXslTimeOut" type="int">86400</property>

<property name="AllowMinimize" type="bool">True</property>

<property name="AllowEdit" type="bool">True</property>

<property name="XslLink" type="string" null="true" />

<property name="Title" type="string">Stock Ticker</property>

<property name="Width" type="string" />

<property name="ShowWithSampleData" type="bool">False</property>

<property name="ExportMode" type="exportmode">All</property>

<property name="AllowHide" type="bool">True</property>

<property name="AllowConnect" type="bool">True</property>

</properties>

</data>

</webPart>

</webParts>

 

--Michael

Comments

doesn't work

sorry doesn't work
 on 3/11/2008 11:19 AM

More detail please.

Will,
Can you provide more detail?  Do you get an error message?
--Michael
Michael BlumenthalNo presence information on 3/11/2008 7:17 PM

Have you checked your link show this webpart...

Have you checked your link show this webpart...

Point 4. Add (import) the web part to a web part zone on a web part page in a SharePoint site. When you are done, it should look like this.

Have you seen it...its really not working.

can you give me any solution???

Kuldeep
 on 3/17/2008 10:12 PM

Worked Perfectly

Worked Great! Thanks
 on 3/18/2008 11:41 AM

Kuldeep, it works for me

It works on my test page, http://blumenthalit.net/Files/StockQuote.aspx, and it worked for another person.  Therefore, as long as your server has access to the web service, it should work for you.  What error do you get?
--Michael
Michael BlumenthalNo presence information on 3/19/2008 1:46 PM

Followed steps and received error

I followed the exact steps outlined and I still received an error.

I'm receiving the following message: "The server received a non-specific error when trying to get data from the data source.  Check the format and content of your query and try again.  If the problem persists..."

 on 3/19/2008 1:52 PM

Debugging Steps

Can you get to http://www.webservicex.net/stockquote.asmx/GetQuote?symbol=msft from a web browser on the SharePoint server?

Does it work if you don't change the ticker symbol? Instead of copying and pasting the xml that is the webpart, if you use the option to save the file at http://blumenthalit.net/Files/DataViewWebPart_Stock_Ticker.webpart.txt and use that for the content of the webaprt file, does it work better?

Are you using WSS 3.0 or MOSS 2007 or are you using an earlier version?  I've only tested this with MOSS 2007 and WSS 3.0.

If these suggestions help, please let me know.

-Michael
Michael BlumenthalNo presence information on 3/19/2008 2:03 PM

Debugging Steps Reply

Thanks for responding so quickly.

No, I can not access http://www.webservicex.net/stockquote.asmx/GetQuote?symbol=msft from my sharepoint server.  That server is configured to not allow for external internet access.

That is probably my 'crutch'.  That probably explains why I can't perform some other web service tasks that I've tried and failed at.

Thanks for the information and helping to resolve many of my other problems.
 on 3/19/2008 2:24 PM

Debugging Steps Reply

Thanks for responding so quickly.

No, I can not access http://www.webservicex.net/stockquote.asmx/GetQuote?symbol=msft from my sharepoint server.  That server is configured to not allow for external internet access.

That is probably my 'crutch'.  That probably explains why I can't perform some other web service tasks that I've tried and failed at.

Thanks for the information and helping to resolve many of my other problems.
 on 3/19/2008 2:30 PM

Multiple Stocks

How would one go about setting this up for multiple stocks?
 on 3/27/2008 10:54 AM
1 - 10Next

Add Comment

Items on this list require content approval. Your submission will not appear in public views until approved by someone with proper rights. More information on content approval.

Title


Body *


Please put your name at the end of your comment as the Name field doesn't display in the main view of the comments.

Name: *


Your name.  If you first name is Michael, please provide initials or the like to clearly distinguish your name from Michael Blumenthal's.
Also, this field does not appear in the main view of the comments.

Need Paid Consulting Services?

Are you interested in engaging a SharePoint consultant for fee-based consulting services?  If so, I can have an Account Executive from my employer contact you.  Other site visitors will not see this column.

Additional Contact Information

Please provide additional contact information if you need a direct response.  Other site visitors will not see this column.

What is tomorrow's date? *

Select a date from the calendar.
This is a weak CAPTCHA based on advice from a tweet from @ToddKlindt.

Attachments