{"id":972,"date":"2009-05-13T11:34:04","date_gmt":"2009-05-13T16:34:04","guid":{"rendered":"http:\/\/blogs.devhorizon.com\/reza\/?p=972"},"modified":"2009-05-16T13:25:25","modified_gmt":"2009-05-16T18:25:25","slug":"working-with-structured-data-in-microsoft-office-sharepoint-server-2007-part-4-sharepoint-designer","status":"publish","type":"post","link":"https:\/\/blogs.devhorizon.com\/reza\/2009\/05\/13\/working-with-structured-data-in-microsoft-office-sharepoint-server-2007-part-4-sharepoint-designer\/","title":{"rendered":"Working with Structured Data in Microsoft Office SharePoint Server 2007 (Part 4): SharePoint Designer"},"content":{"rendered":"<p><strong>Summary<\/strong>: Explore different options you have to work with structured data in a high volume while you need to perform complex queries and actions against such data ranging from authoring, approval and landing information on Web Part pages, all the way down to physical storage. This blog post is part 4 of a blog post series that I am planning to write on this topic (31 printed pages).<\/p>\n<p><strong>Applies to<\/strong>: Microsoft Office SharePoint Server 2007, Microsoft Office SharePoint Designer 2007<\/p>\n<p><strong>See Also:<br \/>\n<\/strong><\/p>\n<ul>\n<li><a href=\"https:\/\/blogs.devhorizon.com\/reza\/?p=832\">Part 1 : Configuring Single Sign On Service and Database<\/a><\/li>\n<li><a href=\"https:\/\/blogs.devhorizon.com\/reza\/?p=842\">Part 2 : Exposing LOB Data<\/a><\/li>\n<li><a href=\"https:\/\/blogs.devhorizon.com\/reza\/?p=889\">Part 3 :  Browser Enabled InfoPath Forms<\/a><\/li>\n<\/ul>\n<p>Download this post in <a href=\"https:\/\/blogs.devhorizon.com\/reza\/wp-content\/uploads\/2009\/05\/4-sharepoint-desginer.pdf\">PDF <\/a>version here.<\/p>\n<p><strong>Content:<br \/>\n<\/strong><\/p>\n<ul>\n<li>Introduction<\/li>\n<li>Create SQL data views<\/li>\n<li>Add formula and conditional formatting<\/li>\n<li>Master\/Detail filtering using Web Part connection<\/li>\n<li>Master\/Detail filtering across two pages via querystring<\/li>\n<li>Linked data sources<\/li>\n<li>Create your own Data Form Web Part<\/li>\n<\/ul>\n<p><strong>Introduction<\/strong><\/p>\n<p>Office SharePoint Designer 2007 allows you to smoothly integrate your information into a SharePoint site by giving you the ability to combine HTML design elements with the XSLT data transformation, all in a single design interface. It also offers an amazing support for the Data Form Web Part (a.k.a DFWP) that can be utilized to build rich, powerful forms much easier than ever.  Data Form Web Parts can take advantage of sending additional input parameters either in query string or Web Part connections. This is extremely helpful to drive dynamic changes in the content that is surfaced on your SharePoint pages and experience an interactive interface using  a composite no-code solution.<\/p>\n<p><!--more--><\/p>\n<table style=\"border-collapse: collapse\" border=\"0\">\n<tr style=\"background: #d9d9d9 none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial\">\n<td style=\"border: 0.5pt solid black; padding-left: 7px; padding-right: 7px\"><strong>Important<\/strong><\/td>\n<\/tr>\n<tr>\n<td style=\"border-style: none solid solid; border-color: -moz-use-text-color black black; border-width: medium 0.5pt 0.5pt; padding-left: 7px; padding-right: 7px\">In WSS 2.0, the Data Form Web Part was known as the Data View Web Part (DVWP) or Data View. Data view is a representation of data from a data source. In WSS 3.0 , this Web Part was enhanced to not only allow you to view data , but provide you with the ability to insert, update and delete data from a variety of data sources, such as SharePoint data sources , database connections, Web services , RSS feeds and other type of XML files.<\/td>\n<\/tr>\n<\/table>\n<p><strong>Create SQL data views<br \/>\n<\/strong><\/p>\n<p>In this section, you will learn how to create a Data Form Web Part that is connected to Microsoft SQL Server 2005 data. You will be also shown the flexibility of the Data Form Web Part to connect to multiple data repositories, display and aggregate such data consistently. Using the Northwind database (See <a href=\"https:\/\/blogs.devhorizon.com\/reza\/\/?p=832\">Part1<\/a>) is simple to begin the process of customizing a Dashboard view using DFWP.  Data is surfaced real-time from the Northwind database to show how the Data View presentation will look as it is being designed. <strong><br \/>\n<\/strong><\/p>\n<p>1)Start SharePoint Designer.<br \/>\n2)Select the <strong>OpenSite<\/strong> option in the <strong>File <\/strong>menu.<br \/>\n3)Enter <strong>http:\/\/litwaredem <\/strong>in the<strong> Site name<\/strong> text box.<br \/>\n4)Click in the <strong>File<\/strong> menu , <strong>New<\/strong> and then from <strong>Page<\/strong> tab choose <strong>ASPX<\/strong>.<br \/>\n5)Save untitled.aspx as <strong>Products.aspx.<\/strong><br \/>\n6)Select the <strong>Insert Data View<\/strong> option from the <strong>Data View <\/strong>menu.<br \/>\n7)Expand <strong>Database Connections <\/strong>in the <strong>Data Source Library<\/strong> pane and click <strong>Connect to a database..<\/strong><br \/>\n.8)Click on the<strong> Configure Database Connection&#8230;.<\/strong><\/p>\n<p style=\"margin-left: 16pt\">\n<table style=\"border-collapse: collapse\" border=\"0\">\n<tr style=\"background: #d9d9d9 none repeat scroll 0% 0%; -moz-background-inline-policy: -moz-initial; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial\">\n<td style=\"border: 0.5pt solid black; padding-left: 7px; padding-right: 7px\"><strong>Important<\/strong><\/td>\n<\/tr>\n<tr>\n<td style=\"border-style: none solid solid; border-color: -moz-use-text-color black black; border-width: medium 0.5pt 0.5pt; padding-left: 7px\">Database connections in DFWP can only use Sql authentication or SSO. Windows authentication works only when the database resides on the same machine asyour Windows SharePoint Services site. In this article, we will use SSO to connect to the Northwind database.<\/td>\n<\/tr>\n<\/table>\n<p>9)Enter<strong> LITWAREDEMO (<\/strong>Replace LITWAREDEMO with your SQL Server name<strong>) <\/strong>in the <strong>Server Name <\/strong>box.<br \/>\n10)Choose  <strong>Microsoft .NET Framework Data Provider for SQL Server <\/strong>in the<strong> Provider Name <\/strong>dropdown.<br \/>\n11)Under <strong>Authentication<\/strong>, click <strong>Use Single Sign-On authentication<\/strong>, and then click <strong>Settings.<\/strong><br \/>\n12)In the <strong>Single Sign-On Settings<\/strong> dialog box, do the following:<\/p>\n<ul>\n<li>In the <strong>Application Name<\/strong> box, type <strong>Northwind.<\/strong><\/li>\n<li>In the <strong>Application field to use as the user name<\/strong> box, type Username.<\/li>\n<li>In the <strong>Application field to use as the password<\/strong> box, type Password.<\/li>\n<li>Click on the Ok button.<\/li>\n<\/ul>\n<p><img decoding=\"async\" src=\"https:\/\/blogs.devhorizon.com\/reza\/wp-content\/uploads\/2009\/05\/051309-1628-workingwith1.png\" \/><\/p>\n<p>13)Click <strong>Next<\/strong>.<br \/>\n14)Choose <strong>Northwind <\/strong>from the <strong>Database<\/strong> dropdown box.<br \/>\n15)From <strong>select a table or view, <\/strong>click on<strong> Products <\/strong>and then click on the<strong> Finish <\/strong>button.Note that in DFWP,Instead of working with tables or view directly, you could also specify a SQL statement or stored procedure in Configure<strong> Database Connection<\/strong> dialog box.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/blogs.devhorizon.com\/reza\/wp-content\/uploads\/2009\/05\/051309-1628-workingwith2.png\" \/><\/p>\n<p>16) Click on the <strong>OK<\/strong> button to close <strong>Data Source Properties <\/strong>dialog box.<\/p>\n<p><strong>Add formula and conditional formatting<\/strong><\/p>\n<p>In the previous section , we successfully created the Products view and now we want to surface it onto a page , add a Formula Column to show the total inventory value (UnitPrice *  UnitsInStock) and a conditional formatting that turns a Product row into red for low inventory.<strong><br \/>\n<\/strong><\/p>\n<p>1)Expand <strong>Database Connections<\/strong> in the <strong>Data Source Library <\/strong>pane.<br \/>\n2)Click on <strong>Products on Northwind<\/strong> and select the <strong>Show Data<\/strong> option.<br \/>\n3)Drag the selected fields in to the Data View on the design surface. SharePoint designer inserts <strong>DataFormWebPart<\/strong> onto the page to contain Northwind products. Right-click the <strong>CategoryID<\/strong> and select <strong>Delete Columns<\/strong>.<br \/>\n4)Change <strong>ProductID<\/strong> text to <strong>ID.<\/strong><br \/>\n5)Change <strong>ProductName <\/strong>text to <strong>Product Name<\/strong>.<br \/>\n6)Change <strong>ProductName <\/strong>text to <strong>Supplier Info.<\/strong><br \/>\n7)Change <strong>QuantityPerUnit <\/strong>text to <strong>Quantity Per Unit<\/strong>.<br \/>\n.8)Click on the fly out button for the Data View Web Part.<br \/>\n<img decoding=\"async\" src=\"https:\/\/blogs.devhorizon.com\/reza\/wp-content\/uploads\/2009\/05\/051309-1628-workingwith3.png\" \/><br \/>\n9)Click on the <strong>Paging<\/strong> link and select the <strong>Limit total number of items displayed to<\/strong> option.<br \/>\n10)Set the limit to <strong>5.<\/strong><br \/>\n11)Click the <strong>Ok<\/strong> button.<br \/>\n12)Click on the <strong>Edit Columns&#8230;., <\/strong>then from<strong> Displayed Columns <\/strong>choose<strong> Supplier Info<\/strong>.<br \/>\n13)Click on <strong>Move Down.<\/strong><br \/>\n14)Select <strong>Add Formula Column\u2026<\/strong><br \/>\n15)click <strong>Add &gt;&gt; <\/strong>to launch the XPath Expression Builder.<br \/>\n<img decoding=\"async\" src=\"https:\/\/blogs.devhorizon.com\/reza\/wp-content\/uploads\/2009\/05\/051309-1628-workingwith4.png\" \/><\/p>\n<p>16)Double click or drag and drop <strong>UnitsPrice<\/strong> on the data tree.<br \/>\n17)Click to the right of <strong>UnitPrice<\/strong> in the Edit XPath Expression.  Type &#8220;*&#8221; and then use the data aware IntelliSense to select<strong> UnitsInStock<\/strong>.  Notice the live preview area towards the bottom of the dialog.<br \/>\n<img decoding=\"async\" src=\"https:\/\/blogs.devhorizon.com\/reza\/wp-content\/uploads\/2009\/05\/051309-1628-workingwith5.png\" \/><br \/>\n18)Click <strong>OK <\/strong>in the XPath Expression Builder dialog.<br \/>\n19)Click on the <strong>Supplier Info <\/strong>and click the <strong>Move Down<\/strong> button.<br \/>\n20)Click <strong>OK <\/strong>Edit Columns dialog.<br \/>\n21)Switch to &#8220;Split View&#8221; by clicking the <strong>Split<\/strong> tab at the lower left of the design surface.  In the &#8220;Design View&#8221; half, highlight the text that says &#8220;<strong>UnitPrice * UnitsInStock<\/strong>&#8220;.  Notice the granular selection within the XSLT in &#8220;Code View&#8221;.  Delete this text and type the words &#8220;Inventory Value.&#8221;<br \/>\n22)Return to &#8220;Design View&#8221; by clicking the <strong>Design<\/strong> tab at the lower left of the design surface.<br \/>\n23)Add conditional formatting to highlight low inventory <strong><br \/>\n<\/strong>24)Click next to one of the data values in the first row of your view.  Using the Quick Tag Selector, select the whole row by clicking the TR button.<br \/>\n<img decoding=\"async\" src=\"https:\/\/blogs.devhorizon.com\/reza\/wp-content\/uploads\/2009\/05\/051309-1628-workingwith6.png\" \/><br \/>\n25)Right click on the highlighted row and select <strong>Conditional Formatting\u2026<\/strong><br \/>\n<img decoding=\"async\" src=\"https:\/\/blogs.devhorizon.com\/reza\/wp-content\/uploads\/2009\/05\/051309-1628-workingwith7.jpg\" \/><br \/>\n26)In the Conditional Formatting task pane, click <strong>Create<\/strong> and select <strong>Apply Formatting.<br \/>\n<\/strong>27)Click on the <strong>Click here to add a new clause\u2026<\/strong> area to open the <strong>Condition Criteria<\/strong> dialog.<strong><br \/>\n<\/strong>28)Click on the <strong>Advanced\u2026<\/strong> button to open the <strong>Advanced Condition<\/strong> dialog<strong>.<br \/>\n<\/strong>29)In the <strong>Edit the XPath expression<\/strong> section type: UnitsInStock &lt; ReorderLevel<strong>.<br \/>\n<\/strong><br \/>\n<img decoding=\"async\" src=\"https:\/\/blogs.devhorizon.com\/reza\/wp-content\/uploads\/2009\/05\/051309-1628-workingwith8.png\" \/><br \/>\n30)Click <strong>OK <\/strong>in the <strong>Advanced Condition<\/strong> dialog<strong>.<br \/>\n<\/strong><br \/>\n<img decoding=\"async\" src=\"https:\/\/blogs.devhorizon.com\/reza\/wp-content\/uploads\/2009\/05\/051309-1628-workingwith9.jpg\" \/><br \/>\n31)Click <strong>OK<\/strong> in the <strong>Condition Criteria<\/strong> dialog.<br \/>\n32)The <strong>Modify Style <\/strong>dialog will appear, in the <strong>Category<\/strong> list, click <strong>Background.<\/strong><br \/>\n33)Set <strong>background-color<\/strong> to &#8221; #FF6666&#8243;.<br \/>\n<img decoding=\"async\" src=\"https:\/\/blogs.devhorizon.com\/reza\/wp-content\/uploads\/2009\/05\/051309-1628-workingwith10.png\" \/><br \/>\n34)Click <strong>OK<\/strong>.<br \/>\n35)Open Internet Explorer and browse to <strong>http:\/\/litwaredemo\/products.aspx<\/strong>.<br \/>\n<img decoding=\"async\" src=\"https:\/\/blogs.devhorizon.com\/reza\/wp-content\/uploads\/2009\/05\/051309-1628-workingwith11.png\" \/><\/p>\n<p><strong>Master\/Detail filtering using Web Part connection<\/strong><\/p>\n<p>Master\/Detail data presentation is a common type of functionality in many applications for implementing one-to-many relationships , such as a report showing all of the products and then allowing users to select a particular product and display its supplier. In this section , we are going to build a master\/detail relationship between two Web Parts sitting on the same page.<\/p>\n<p>1)Start SharePoint Designer.<br \/>\n2)Select the <strong>OpenSite<\/strong> option in the <strong>File <\/strong>menu.<br \/>\n3)Enter <strong>http:\/\/litwaredem <\/strong>in the<strong> Site name<\/strong> text box.<br \/>\n4)Click on the <strong>products.aspx <\/strong>page we created in the previous section.<br \/>\n5)Switch to &#8220;Design&#8221; by clicking the <strong>Design <\/strong> tab at the lower left of the design surface.<br \/>\n<img decoding=\"async\" src=\"https:\/\/blogs.devhorizon.com\/reza\/wp-content\/uploads\/2009\/05\/051309-1628-workingwith12.png\" \/><br \/>\n6)Expand <strong>SharePoint Lists  <\/strong>in the <strong>Data Source Library<\/strong> pane and click on the<strong> Supplier List<\/strong>.<br \/>\n7)Drag and drop the  <strong>Suppliers List<\/strong> onto the design surface.<br \/>\n8)Click on the fly out button for the <strong>Suppliers List<\/strong> Data Form Web Part.<br \/>\n<img decoding=\"async\" src=\"https:\/\/blogs.devhorizon.com\/reza\/wp-content\/uploads\/2009\/05\/051309-1628-workingwith13.png\" \/><br \/>\n9) Click on the <strong>Edit Columns&#8230;., <\/strong>then from<strong> Displayed Columns <\/strong>choose<strong> Modified By <\/strong>and<strong>Modified<\/strong>..<br \/>\n10)Click on the<strong> Remove <\/strong>Button.<strong><br \/>\n<\/strong>11)From the Available fields list ,choose <strong>SupplierID<\/strong>, <strong>CompanyName<\/strong>,<strong>ContactName <\/strong>and <strong> phone<\/strong>.<br \/>\n12)Click <strong>Ok<\/strong>.<br \/>\n13)Click on the fly out button for the Products Data Form Web Part.<br \/>\n14)Click on the <strong>Web Part Connections<\/strong>&#8230;&#8230;<br \/>\n15)Select Send Row of Data To from the dropdown box and click Next.<\/p>\n<p><strong><strong><strong><br \/>\n<img decoding=\"async\" src=\"https:\/\/blogs.devhorizon.com\/reza\/wp-content\/uploads\/2009\/05\/051309-1628-workingwith14.png\" \/><br \/>\n<\/strong><\/strong><\/strong><\/p>\n<p>16)Select <strong>Connect to a Web Part Page on this page<\/strong>. Click <strong>Next<\/strong>.<br \/>\n17)Target Web Part must be <strong>Suppliers<\/strong> (because there is no other Web Part to connect to).<br \/>\n18)Leave target action intact (<strong>Get Filters Values From<\/strong>). Click <strong>Next<\/strong>.<br \/>\n19)From the <strong>Inputs to Suppliers columns <\/strong>select <strong>Supplier ID<\/strong> and map to <strong>SupplierID<\/strong> in the Columns in <strong>&lt;Untitled Web Part&gt;<\/strong>. Click <strong>Next<\/strong>.<\/p>\n<p><strong><strong><strong><strong><strong><br \/>\n<img decoding=\"async\" src=\"https:\/\/blogs.devhorizon.com\/reza\/wp-content\/uploads\/2009\/05\/051309-1628-workingwith15.png\" \/><br \/>\n<\/strong><\/strong><\/strong><\/strong><\/strong><\/p>\n<p>20)From <strong>Create a hyperlink<\/strong> on dropdown box , select <strong>SupplierID <\/strong>and click <strong>Next<\/strong>.<br \/>\n21)Click on the <strong>Finish<\/strong> button.<br \/>\n22)Switch to &#8220;<strong>Split View<\/strong>&#8221; by clicking the <strong>Split<\/strong> tab at the lower left of the design surface.  In the &#8220;<strong>Design View<\/strong>&#8221; half, highlight the one of the columns below Supplier Info heading.<br \/>\n<strong><strong><strong><strong><strong><strong><img decoding=\"async\" src=\"https:\/\/blogs.devhorizon.com\/reza\/wp-content\/uploads\/2009\/05\/051309-1628-workingwith16.png\" \/><br \/>\n<\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/p>\n<p>23) Replace the selected XSLT code with the word &#8220;<strong>View&#8221;<\/strong>.<\/p>\n<p><strong><strong><strong><strong><strong><strong><br \/>\n<img decoding=\"async\" src=\"https:\/\/blogs.devhorizon.com\/reza\/wp-content\/uploads\/2009\/05\/051309-1628-workingwith17.png\" \/><br \/>\n<\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/p>\n<p>24)Save <strong>Products.aspx<\/strong> page.<br \/>\n25)Open Internet explorer and browse to <strong>http:\/\/litwaredemo\/Products.aspx<\/strong>.<br \/>\n26)Click on the <strong>View<\/strong> link for each product. Notice how <strong>Suppliers list<\/strong> will be filtered to show information only about that product&#8217;s supplier.<\/p>\n<p><strong>Master\/Detail filtering across two pages via query string<\/strong><\/p>\n<p>A common pattern in many web applications is to have the master records on one web page and details shown on another . In this section , we will implement this pattern and build a master\/detail filtering with master records coming from Northwind database and detail record(s) filtered in Suppliers List (See <a href=\"https:\/\/blogs.devhorizon.com\/reza\/?p=832\">Part 1<\/a>) sitting on another page.<\/p>\n<p>1)browse to  <strong>http:\/\/litwaredemo<\/strong>.<br \/>\n2)Click on the <strong>Site Actions<\/strong> and choose <strong>Create Page.<br \/>\n<\/strong>3)In the title box, type <strong>SupplierInfo<\/strong> and choose (<strong>Welcome Page) <\/strong>Blank Web Part Page as the Page Layout. Click on the Create button.<br \/>\n<img decoding=\"async\" src=\"https:\/\/blogs.devhorizon.com\/reza\/wp-content\/uploads\/2009\/05\/051309-1628-workingwith18.png\" \/><\/p>\n<p>4)Add the <strong>suppliers list<\/strong> view Web Part to the <strong>Center <\/strong>zone.<br \/>\n5)Add the <strong>Query String (URL) Filter Web Part<\/strong> to the center right zone.<br \/>\n6)Go to <strong>Query String (URL) Filter Web Part <\/strong>properties and in <strong>Query String Parameter Name<\/strong> text box, enter <strong>SupplierID<\/strong><\/p>\n<p><strong><br \/>\n<\/strong> <img decoding=\"async\" src=\"https:\/\/blogs.devhorizon.com\/reza\/wp-content\/uploads\/2009\/05\/051309-1628-workingwith19.png\" \/><br \/>\n7)Click <strong>Ok<\/strong>.<br \/>\n.8)Click on the <strong>edit <\/strong>menu on the <strong>Query String(URL) Filer Web Part <\/strong>, click on <strong>Connections <\/strong>,<strong>Send Filer Value To<\/strong> and Choose <strong>Suppliers<\/strong>.<br \/>\n<strong><strong><strong><strong><strong><strong><img decoding=\"async\" src=\"https:\/\/blogs.devhorizon.com\/reza\/wp-content\/uploads\/2009\/05\/051309-1628-workingwith20.png\" \/><strong><br \/>\n<\/strong><br \/>\n<\/strong><\/strong><\/strong><\/strong><\/strong><\/strong> 9)<strong>Configure Connection<\/strong> dialog box will appear.<br \/>\n10)Choose <strong>SupplierID<\/strong> from the <strong>Consumer Field Name<\/strong> dropdown box.<br \/>\n<strong><strong><strong><strong><strong><strong><strong><img decoding=\"async\" src=\"https:\/\/blogs.devhorizon.com\/reza\/wp-content\/uploads\/2009\/05\/051309-1628-workingwith21.png\" \/><br \/>\n<\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/p>\n<p><strong><strong><strong><strong><strong><strong><strong> <\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong>11)Click on the <strong>Publish <\/strong>button , <strong>SupplierInfo.aspx <\/strong>without the query string shows all the suppliers.<\/p>\n<p><strong><strong><strong><strong><strong><strong><strong><br \/>\n<img decoding=\"async\" src=\"https:\/\/blogs.devhorizon.com\/reza\/wp-content\/uploads\/2009\/05\/051309-1628-workingwith22.png\" \/><br \/>\n<\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/p>\n<p>12)Test the filtering on <strong>SupplierInfo.aspx <\/strong>page by browsing to the page , passing along supplier&#8217;s <strong>SupplierID<\/strong> in the query string.<br \/>\n<strong><strong><strong><strong><strong><strong><strong><img decoding=\"async\" src=\"https:\/\/blogs.devhorizon.com\/reza\/wp-content\/uploads\/2009\/05\/051309-1628-workingwith23.png\" \/><br \/>\n<\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/p>\n<p><strong><strong><strong><strong><strong><strong><strong> <\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong>12)With the filtering working properly  in the detail page(<strong>SupplierInfo.aspx<\/strong>), let&#8217;s get back to the <strong>Products.aspx <\/strong>and modify the <strong>Data Form Web Part<\/strong> to pass the <strong>supplier&#8217;s SupplierID <\/strong>in the query string.<br \/>\n13)In the <strong>products.aspx<\/strong> page , we need both static and data-driven values. <strong>\/Pages\/SupplierInfo.aspx?SupplierID  <\/strong>portion of the link&#8217;s URL is static, whereas the <strong>SupplierID<\/strong> portion is data-driven as its value is each row&#8217;s own <strong>SupplierID<\/strong>.<br \/>\n14)Switch to &#8220;<strong>Split View<\/strong>&#8221; by clicking the <strong>Split <\/strong>tab at the lower left of the design surface.  In the &#8220;<strong>Design View<\/strong>&#8221; half, Click next to one of the data values of the Supplier Info column in the first row of your view.<br \/>\n<strong><strong><strong><strong><strong><strong><strong><img decoding=\"async\" src=\"https:\/\/blogs.devhorizon.com\/reza\/wp-content\/uploads\/2009\/05\/051309-1628-workingwith24.png\" \/><br \/>\n<\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/p>\n<p><strong><strong><strong><strong><strong><strong><strong> <\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong>15) Replace the highlighted <strong>XSLT <\/strong>with the following:<\/p>\n<div id=\"ig-sh-1\" class=\"syntax_hilite\">\n\n\t\t<div class=\"toolbar\">\n\n\t\t<div class=\"view-different-container\">\n\t\t\t\t\t\t<a href=\"#\" class=\"view-different\">&lt; View <span>plain text<\/span> &gt;<\/a>\n\t\t\t\t\t<\/div>\n\n\t\t<div class=\"language-name\">xml<\/div>\n\n\t\t\n\t\t<br clear=\"both\">\n\n\t<\/div>\n\t\n\t<div class=\"code\">\n\t\t<ol class=\"xml\" style=\"font-family:monospace\"><li style=\"font-weight: normal;vertical-align:top\"><div style=\"font: normal normal 1em\/1.2em monospace;margin:0;padding:0;background:none;vertical-align:top\"><span style=\"color: #009900\"><span style=\"color: #000000;font-weight: bold\">&lt;a<\/span> <span style=\"color: #000066\">target<\/span>=<span style=\"color: #ff0000\">&quot;_self&quot;<\/span><span style=\"color: #000000;font-weight: bold\">&gt;<\/span><\/span><\/div><\/li>\n<li style=\"font-weight: normal;vertical-align:top\"><div style=\"font: normal normal 1em\/1.2em monospace;margin:0;padding:0;background:none;vertical-align:top\">&nbsp; <span style=\"color: #009900\"><span style=\"color: #000000;font-weight: bold\">&lt;xsl:attribute<\/span> <span style=\"color: #000066\">name<\/span>=<span style=\"color: #ff0000\">&quot;href&quot;<\/span><span style=\"color: #000000;font-weight: bold\">&gt;<\/span><\/span><\/div><\/li>\n<li style=\"font-weight: normal;vertical-align:top\"><div style=\"font: normal normal 1em\/1.2em monospace;margin:0;padding:0;background:none;vertical-align:top\">&nbsp; &nbsp; &nbsp;<span style=\"color: #009900\"><span style=\"color: #000000;font-weight: bold\">&lt;xsl:variable<\/span> <span style=\"color: #000066\">xmlns:xsl<\/span>=<span style=\"color: #ff0000\">&quot;http:\/\/www.w3.org\/1999\/XSL\/Transform&quot;<\/span> <span style=\"color: #000066\">name<\/span>=<span style=\"color: #ff0000\">&quot;fields&quot;<\/span><span style=\"color: #000000;font-weight: bold\">&gt;<\/span><\/span>SupplierID=<\/div><\/li>\n<li style=\"font-weight: normal;vertical-align:top\"><div style=\"font: normal normal 1em\/1.2em monospace;margin:0;padding:0;background:none;vertical-align:top\">&nbsp; &nbsp; &nbsp; &nbsp; <span style=\"color: #009900\"><span style=\"color: #000000;font-weight: bold\">&lt;xsl:value-of<\/span> <span style=\"color: #000066\">select<\/span>=<span style=\"color: #ff0000\">&quot;ddwrt:ConnEncode(string(@SupplierID))&quot;<\/span><span style=\"color: #000000;font-weight: bold\">&gt;<\/span><\/span><\/div><\/li>\n<li style=\"font-weight: normal;vertical-align:top\"><div style=\"font: normal normal 1em\/1.2em monospace;margin:0;padding:0;background:none;vertical-align:top\">&nbsp; &nbsp; &nbsp; &nbsp; <span style=\"color: #009900\"><span style=\"color: #000000;font-weight: bold\">&lt;\/xsl:value-of<span style=\"color: #000000;font-weight: bold\">&gt;<\/span><\/span><\/span><\/div><\/li>\n<li style=\"font-weight: normal;vertical-align:top\"><div style=\"font: normal normal 1em\/1.2em monospace;margin:0;padding:0;background:none;vertical-align:top\">&nbsp; &nbsp; &nbsp; &nbsp; <span style=\"color: #009900\"><span style=\"color: #000000;font-weight: bold\">&lt;xsl:text<span style=\"color: #000000;font-weight: bold\">&gt;<\/span><\/span><\/span>\/Pages\/SupplierInfo.aspx?<span style=\"color: #009900\"><span style=\"color: #000000;font-weight: bold\">&lt;\/xsl:text<span style=\"color: #000000;font-weight: bold\">&gt;<\/span><\/span><\/span><\/div><\/li>\n<li style=\"font-weight: normal;vertical-align:top\"><div style=\"font: normal normal 1em\/1.2em monospace;margin:0;padding:0;background:none;vertical-align:top\">&nbsp; &nbsp; &nbsp; &nbsp; <span style=\"color: #009900\"><span style=\"color: #000000;font-weight: bold\">&lt;xsl:value-of<\/span> <span style=\"color: #000066\">select<\/span>=<span style=\"color: #ff0000\">&quot;$fields&quot;<\/span><span style=\"color: #000000;font-weight: bold\">&gt;<\/span><span style=\"color: #000000;font-weight: bold\">&lt;\/xsl:value-of<span style=\"color: #000000;font-weight: bold\">&gt;<\/span><\/span><\/span><\/div><\/li>\n<li style=\"font-weight: normal;vertical-align:top\"><div style=\"font: normal normal 1em\/1.2em monospace;margin:0;padding:0;background:none;vertical-align:top\">&nbsp; &nbsp; &nbsp;<span style=\"color: #009900\"><span style=\"color: #000000;font-weight: bold\">&lt;\/xsl:variable<span style=\"color: #000000;font-weight: bold\">&gt;<\/span><\/span><\/span> View<\/div><\/li>\n<li style=\"font-weight: normal;vertical-align:top\"><div style=\"font: normal normal 1em\/1.2em monospace;margin:0;padding:0;background:none;vertical-align:top\">&nbsp; &nbsp;<span style=\"color: #009900\"><span style=\"color: #000000;font-weight: bold\">&lt;\/xsl:attribute<span style=\"color: #000000;font-weight: bold\">&gt;<\/span><\/span><\/span><\/div><\/li>\n<li style=\"font-weight: normal;vertical-align:top\"><div style=\"font: normal normal 1em\/1.2em monospace;margin:0;padding:0;background:none;vertical-align:top\"><span style=\"color: #009900\"><span style=\"color: #000000;font-weight: bold\">&lt;\/a<span style=\"color: #000000;font-weight: bold\">&gt;<\/span><\/span><\/span><\/div><\/li>\n<\/ol>\t<\/div>\n\n<\/div>\n\n<p>16)Save <strong>Products.aspx<\/strong> page.<br \/>\n17)Open Internet explorer and browse to <strong>http:\/\/litwaredemo\/Products.aspx<\/strong>. Notice how correct query string built based on the <strong>SupplierID<\/strong> of the product.<br \/>\n<img decoding=\"async\" src=\"https:\/\/blogs.devhorizon.com\/reza\/wp-content\/uploads\/2009\/05\/051309-1628-workingwith25.png\" \/><\/p>\n<p><strong>Linked data sources <\/strong><br \/>\nMost enterprises store different types of data in various data stores with different data models. The challenge here is how to provide a complete and easy view into all this data sitting in various stores. It&#8217;s a common practice to use Microsoft Office SharePoint Designer 2007 to link these data sources .By doing so; you can create a single data source that can be treated like any other data source available in Data Source Library. The beauty of process is that You can link data sources of separate types, for example, you can link an SharePoint list to a table which resides in SQL database as long as linked data sources contain data that can be interrelated to each other.<\/p>\n<p>1)Start <strong>SharePoint Designer<\/strong>.<br \/>\n2)Select the <strong>Open Site<\/strong> option in the <strong>File<\/strong> menu.<br \/>\n3)Enter <strong>http:\/\/litwaredem<\/strong> in the <strong>Site name<\/strong> text box.<br \/>\n4)Click in the <strong>File<\/strong> menu , New and then from <strong>Page<\/strong> tab choose <strong>ASPX<\/strong>.<br \/>\n5)Save <strong>untitled.aspx<\/strong> as <strong>LinkDS.aspx<\/strong>.<br \/>\n6)Expand <strong>Linked sources<\/strong> in the <strong>Data Source Library<\/strong> pane and click <strong>Create a new Linked Source<\/strong>&#8230;<br \/>\n7)In the <strong>Data Source Properties<\/strong> dialog box, click on the <strong>Configured Linked Source<\/strong>&#8230;<br \/>\n.8)<strong>Link Data Sources<\/strong> wizard will open.<br \/>\n9)From <strong>Available Data Sources<\/strong> list, select <strong>Products<\/strong> on <strong>Northwind<\/strong> and <strong>Suppliers<\/strong> list. Click <strong>Next<\/strong>.<br \/>\n<img decoding=\"async\" src=\"https:\/\/blogs.devhorizon.com\/reza\/wp-content\/uploads\/2009\/05\/051309-1628-workingwith26.png\" \/><br \/>\n10)Select the option to <strong>join the contents of the data sources<\/strong>. Click <strong>Next.<\/strong><br \/>\n<img decoding=\"async\" src=\"https:\/\/blogs.devhorizon.com\/reza\/wp-content\/uploads\/2009\/05\/051309-1628-workingwith27.png\" \/><\/p>\n<p>11)Click <strong>Finish<\/strong>.<br \/>\n12)Click on the <strong>General Tab<\/strong> and type a name of the new linked data source , for example <strong>SupplierProductsDS<\/strong>.<br \/>\n13)Click <strong>Ok<\/strong>.<br \/>\n14)Click on <strong>SupplierProductsDS<\/strong> and select the <strong>Show Data option<\/strong>.<br \/>\n15)In the tree view , highlight <strong>CompanyName<\/strong> in the <strong>Suppliers <\/strong>data source.<br \/>\n<img decoding=\"async\" src=\"https:\/\/blogs.devhorizon.com\/reza\/wp-content\/uploads\/2009\/05\/051309-1628-workingwith28.png\" \/><\/p>\n<p>16)Drag and drop this field on to the design surface.<br \/>\n17)Delete the <strong>CompanyName<\/strong> title. Your design surface should look like this:<br \/>\n<img decoding=\"async\" src=\"https:\/\/blogs.devhorizon.com\/reza\/wp-content\/uploads\/2009\/05\/051309-1628-workingwith29.png\" \/><\/p>\n<p>18)Click next to one of the data values in the first row of your view &#8211; for example &#8220;<strong>Exotic Liquids<\/strong>&#8220;, and now in the Data <strong>Source Details<\/strong> Pane, Select <strong>ProductName<\/strong> from <strong>Products_on_Northwind<\/strong> data source.<br \/>\n19)Click on <strong>Insert Selected Fields as<\/strong>&#8230; and choose to insert as &#8220;<strong>Joined SubView<\/strong>&#8221; in the menu shown below:<br \/>\n<img decoding=\"async\" src=\"https:\/\/blogs.devhorizon.com\/reza\/wp-content\/uploads\/2009\/05\/051309-1628-workingwith30.png\" \/><\/p>\n<p>20)Specify <strong>SupplierID <\/strong>from left list and <strong>SupplierID<\/strong> from right list to be the join columns for both data sources.<br \/>\n<img decoding=\"async\" src=\"https:\/\/blogs.devhorizon.com\/reza\/wp-content\/uploads\/2009\/05\/051309-1628-workingwith31.png\" \/><\/p>\n<p>21)Your design surface should look like this:<br \/>\n<img decoding=\"async\" src=\"https:\/\/blogs.devhorizon.com\/reza\/wp-content\/uploads\/2009\/05\/051309-1628-workingwith32.png\" \/><br \/>\n22)Change the <strong>ProductName <\/strong>to <strong>Products<\/strong>.<br \/>\n23)Click on the left side of one of the data values in the first row of your view &#8211; for example &#8220;<strong>Exotic Liquids<\/strong>&#8220;.<br \/>\n24)Type &#8220;<strong>Supplier:<\/strong>&#8221; and make it bold.<br \/>\n25)Click next to one of the data values in the first row of your view.  Using the <strong>Quick Tag Selector<\/strong>, select the whole row by clicking the <strong>TR<\/strong> button.<br \/>\n<img decoding=\"async\" src=\"https:\/\/blogs.devhorizon.com\/reza\/wp-content\/uploads\/2009\/05\/051309-1628-workingwith33.png\" \/><\/p>\n<p>26)Paste &lt;tr&gt;&lt;td&gt;&lt;hr\/&gt;&lt;\/td&gt;&lt;\/tr&gt; right after this <strong>TR <\/strong>ends. This will add a line between each supplier.<br \/>\n27)Save <strong>LinkDS.aspx<\/strong>.<br \/>\n28)Open Internet explorer and browse to <strong>http:\/\/litwaredemo\/ LinkDS.aspx<\/strong>.<\/p>\n<p><strong>Create your own Data Form Web Part<\/strong><\/p>\n<p>In nutshell, Data Form Web Part is just an XSLT-rendering Web Part that receives its data in xml format from a Data Source Control. Most of the time , people use Microsoft SharePoint Designer 2007 to create Data Form Web Part or even for deploying it, but the truth is, SharePoint Designer is not the only way you can benefit from all the great things, Data Form Web Part offers to get data on the page with minimal effort and coding! Imagine this: a WebPart that you can just drag and drop on a page, set couple of properties and it renders the data from your backend system . Picture this: you can completely change the look and feel of your Web Part by editing its associated XSL stylesheets . I am not going to walk you through a full-blown custom Data Form Web Part here. Instead, I&#8217;d like to demonstrate how easily you can create a generic one and I will leave the specific implementation up to you.<\/p>\n<p style=\"margin-left: 23pt\">\n<table style=\"border-collapse: collapse\" border=\"0\">\n<tr style=\"background: #d9d9d9 none repeat scroll 0% 0%; -moz-background-inline-policy: -moz-initial; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial\">\n<td style=\"border: 0.5pt solid black; padding-left: 7px; padding-right: 7px\"><strong>Important<\/strong><\/td>\n<\/tr>\n<tr>\n<td style=\"border-style: none solid solid; border-color: -moz-use-text-color black black; border-width: medium 0.5pt 0.5pt; padding-left: 7px\">Unless you have not noticed so far, many of the out of the box Web Parts are derived from Data Form Web Part &#8211; for example, RSS Web Part, Business DataList Web Part and Business Data Related Web Part .<\/td>\n<\/tr>\n<\/table>\n<p>In order to create a generic Data Form Web Part, there are only three properties that matter the most:<\/p>\n<ol>\n<li>Data Source.<\/li>\n<li>XSL Stylesheets.<\/li>\n<li>Parameter bindings.<\/li>\n<\/ol>\n<p>When you inherit your Web Part from Microsoft.SharePoint.WebPartPages.DataFormWebPart class, you will automatically get the XSLT and Parameter bindings properties along with bunch of other properties specific to Data Form Web Part. Having said this, all we need to do in our generic Data Form Web Part is to expose the data source as a custom property, hook it up to DataSourceString property of Data Form Web Part and then call the DataBind method at runtime. Let&#8217;s get this Web Part coded:<\/p>\n<p>1)Start <strong>Visual Studio<\/strong>.<br \/>\n2)Create a new <strong>Class Library<\/strong> project and name it <strong>DFWP<\/strong>.<br \/>\n3)Add a new class and name it <strong>DFWPx.cs<\/strong>.<br \/>\n4)Make that class inherit from <strong>Microsoft.SharePoint.WebPartPages.DataFormWebPart<\/strong>.<br \/>\n5)Add a property to the class and name it <strong>GenericDataSource<\/strong>. This is the property that appears in the Web Part&#8217;s  properties and gives you the ability to type the data source at runtime.<\/p>\n<p>[CSharp]<\/p>\n<p>private string genericDataSource;<\/p>\n<p>[WebBrowsable(true)]<br \/>\n[DefaultValue(&#8220;&#8221;)]<br \/>\n[WebDescription(&#8220;Enter the data source for this Data View Web Part&#8221;)]<br \/>\n[WebDisplayName(&#8220;DataSource&#8221;)]<br \/>\n[Personalizable(PersonalizationScope.Shared)]<br \/>\n[Category(&#8220;Data Source&#8221;)]<br \/>\n[ReadOnly(false)]<br \/>\npublic string GenericDataSource<br \/>\n{<br \/>\n  get<br \/>\n   {<br \/>\n     return genericDataSource;<br \/>\n   }<br \/>\n  set<br \/>\n   {<br \/>\n     genericDataSource = value;<br \/>\n   }<br \/>\n[\/CSharp]<\/p>\n<p>6)Override the OnInit method and copy and paste the following code snippet into this method:<\/p>\n<p>[CSharp]<\/p>\n<p>protected override void OnInit(EventArgs e)<br \/>\n {<br \/>\n   base.OnInit(e);<br \/>\n   if (! string.IsNullOrEmpty(this.GenericDataSource))<br \/>\n     {<br \/>\n       BuiildGenericDataSource();<br \/>\n       this.DataBind();<br \/>\n     }<br \/>\n }<br \/>\n[\/CSharp]<\/p>\n<p>7)Add the following helper method to your class:<\/p>\n<p>[CSharp]<br \/>\nprivate void BuiildGenericDataSource()<br \/>\n {<br \/>\n   string registerTagPrefix = &#8220;&lt;%@Register TagPrefix=\\&#8221;sharepoint\\&#8221; Namespace=\\&#8221;Microsoft.SharePoint.WebControls\\&#8221;<br \/>\n   Assembly=\\&#8221;Microsoft.SharePoint, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c\\&#8221; %&gt;&#8221;;<br \/>\n   this.DataSourcesString = string.Concat(registerTagPrefix, this.GenericDataSource);<br \/>\n }<br \/>\n[\/CSharp]<\/p>\n<p>Source code for this class can be download at <a href=\"https:\/\/blogs.devhorizon.com\/reza\/wp-content\/uploads\/2008\/03\/DFWPx.%20rar%%3C\/p%3E%3Cp%3E20\">https:\/\/blogs.devhorizon.com\/reza\/wp-content\/uploads\/2008\/03\/DFWPx. rar<\/a> .<\/p>\n<p>.8)Compile the project and deploy the Web Part (Deployment steps are not covered here).<br \/>\n9)For the first time , we you add the Web Part to a zone, you get an error like what is shown below.  It is just complaining that there is no <strong>XSLT<\/strong>. Move on to the next step.<br \/>\n<img decoding=\"async\" src=\"https:\/\/blogs.devhorizon.com\/reza\/wp-content\/uploads\/2009\/05\/051309-1628-workingwith35.png\" \/><br \/>\n10)Click on the <strong>edit<\/strong> menu on the Web Part and select <strong>Modify Shared Web Part<\/strong>.<br \/>\n11)This will open DFWPx Web Part&#8217;s <strong>properties<\/strong> pane. Notice our custom <strong>DataSource<\/strong> property shown underneath <strong>Data Source <\/strong>section. In the <strong>properties<\/strong> pane, you need to change three properties as marked in the picture below:<br \/>\n<img decoding=\"async\" src=\"https:\/\/blogs.devhorizon.com\/reza\/wp-content\/uploads\/2009\/05\/051309-1628-workingwith36.png\" \/><\/p>\n<p>12)Open the <strong>LinkDS.aspx<\/strong> page we created in the previous section in <strong>Microsoft SharePoint Designer 2007<\/strong>. What we are going to do here , is one of the many example that <strong>Microsoft SharePoint Designer 2007<\/strong> can make you life much easier both as developer or non-developer.<br \/>\n13)Switch to &#8220;<strong>Split View<\/strong>&#8221; by clicking the Split tab at the lower left of the design surface.  In the &#8220;<strong>Design View<\/strong>&#8221; half, click next to the first row. In the &#8220;Code View&#8221;, locate <strong>&lt;XSL&gt;<\/strong> tag and highlight  the whole <strong>&lt;xsl:stylesheet&gt;<\/strong> tag. Copy it to the clipboard.<br \/>\n<img decoding=\"async\" src=\"https:\/\/blogs.devhorizon.com\/reza\/wp-content\/uploads\/2009\/05\/051309-1628-workingwith37.png\" \/><\/p>\n<p>14)In the Web Part&#8217;s <strong>properties<\/strong> pane, click on the <strong>XSLT<\/strong> Editor&#8230; and paste it in the text entry dialog box. Click Save.<br \/>\n<img decoding=\"async\" src=\"https:\/\/blogs.devhorizon.com\/reza\/wp-content\/uploads\/2009\/05\/051309-1628-workingwith38.png\" \/><\/p>\n<p>15) Back to <strong>SharePoint designer<\/strong>. This time , locate <strong>&lt;ParamtereBindings&gt;<\/strong> tag and copy and paste the content into the clipboard.<br \/>\n<img decoding=\"async\" src=\"https:\/\/blogs.devhorizon.com\/reza\/wp-content\/uploads\/2009\/05\/051309-1628-workingwith39.png\" \/><\/p>\n<p>16)In the Web Part&#8217;s <strong>properties <\/strong>pane, click on the <strong>Parameters Editor<\/strong>&#8230; and paste it in the text entry dialog box. Click <strong>Save<\/strong>.<br \/>\n<img decoding=\"async\" src=\"https:\/\/blogs.devhorizon.com\/reza\/wp-content\/uploads\/2009\/05\/051309-1628-workingwith40.png\" \/><\/p>\n<p>17) This time in <strong>SharePoint designer<\/strong>,  locate &lt;<strong>DataSources&gt;<\/strong> tag and copy and paste the content.<br \/>\n<img decoding=\"async\" src=\"https:\/\/blogs.devhorizon.com\/reza\/wp-content\/uploads\/2009\/05\/051309-1628-workingwith41.png\" \/><\/p>\n<p>18)In the Web Part&#8217;s <strong>properties <\/strong>pane, underneath <strong>Data Source<\/strong> section click on the &#8230;  next to <strong>DataSource<\/strong> text box<br \/>\n19) Paste it in the text entry dialog box. Notice the <strong>SSO <\/strong>connection string that <strong>SharePoint Designer<\/strong> has generated. Click <strong>OK<\/strong>.<br \/>\n<img decoding=\"async\" src=\"https:\/\/blogs.devhorizon.com\/reza\/wp-content\/uploads\/2009\/05\/051309-1628-workingwith42.png\" \/><br \/>\n20)Click <strong>Ok <\/strong>in the <strong>properties <\/strong>page (You may not see the result yet).<br \/>\n21)Click <strong>Publish <\/strong>on the page toolbar. Here is the result.<br \/>\n22)Paginate through the result to make sure it works properly.<br \/>\n<img decoding=\"async\" src=\"https:\/\/blogs.devhorizon.com\/reza\/wp-content\/uploads\/2009\/05\/051309-1628-workingwith43.png\" \/><br \/>\n23)If you start up a new trace in the <strong>SQL Server Profiler <\/strong>and monitor <strong>SQL:BatchStarting<\/strong> and <strong>SQL:BacthCompleted  <\/strong>events, you will see how <strong>Litwareinc\\administrator<\/strong> (the account that was browsing to the <strong>DFWP <\/strong>page shown in the picture above)  is mapped to the <strong>Litwareinc\\SSOAccount<\/strong> which was set up as <strong>SSO <\/strong>account in <strong>Northwind<\/strong> Application definition.<br \/>\n<img decoding=\"async\" src=\"https:\/\/blogs.devhorizon.com\/reza\/wp-content\/uploads\/2009\/05\/051309-1628-workingwith44.png\" \/><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Summary: Explore different options you have to work with structured data in a high volume while you need to perform complex queries and actions against such data ranging from authoring, approval and landing information on Web Part pages, all the way down to physical storage. This blog post is part 4 of a blog post [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[43],"tags":[],"class_list":["post-972","post","type-post","status-publish","format-standard","hentry","category-moss-2007"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.3 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Working with Structured Data in Microsoft Office SharePoint Server 2007 (Part 4): SharePoint Designer - Reza Alirezaei&#039;s Blog %<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/blogs.devhorizon.com\/reza\/2009\/05\/13\/working-with-structured-data-in-microsoft-office-sharepoint-server-2007-part-4-sharepoint-designer\/\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Reza Alirezaei\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"16 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/blogs.devhorizon.com\\\/reza\\\/2009\\\/05\\\/13\\\/working-with-structured-data-in-microsoft-office-sharepoint-server-2007-part-4-sharepoint-designer\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/blogs.devhorizon.com\\\/reza\\\/2009\\\/05\\\/13\\\/working-with-structured-data-in-microsoft-office-sharepoint-server-2007-part-4-sharepoint-designer\\\/\"},\"author\":{\"name\":\"Reza Alirezaei\",\"@id\":\"https:\\\/\\\/blogs.devhorizon.com\\\/reza\\\/#\\\/schema\\\/person\\\/cdbb24d283697a65951cb4a14e474938\"},\"headline\":\"Working with Structured Data in Microsoft Office SharePoint Server 2007 (Part 4): SharePoint Designer\",\"datePublished\":\"2009-05-13T16:34:04+00:00\",\"dateModified\":\"2009-05-16T18:25:25+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/blogs.devhorizon.com\\\/reza\\\/2009\\\/05\\\/13\\\/working-with-structured-data-in-microsoft-office-sharepoint-server-2007-part-4-sharepoint-designer\\\/\"},\"wordCount\":3317,\"commentCount\":6,\"image\":{\"@id\":\"https:\\\/\\\/blogs.devhorizon.com\\\/reza\\\/2009\\\/05\\\/13\\\/working-with-structured-data-in-microsoft-office-sharepoint-server-2007-part-4-sharepoint-designer\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/blogs.devhorizon.com\\\/reza\\\/wp-content\\\/uploads\\\/2009\\\/05\\\/051309-1628-workingwith1.png\",\"articleSection\":[\"MOSS 2007\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/blogs.devhorizon.com\\\/reza\\\/2009\\\/05\\\/13\\\/working-with-structured-data-in-microsoft-office-sharepoint-server-2007-part-4-sharepoint-designer\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/blogs.devhorizon.com\\\/reza\\\/2009\\\/05\\\/13\\\/working-with-structured-data-in-microsoft-office-sharepoint-server-2007-part-4-sharepoint-designer\\\/\",\"url\":\"https:\\\/\\\/blogs.devhorizon.com\\\/reza\\\/2009\\\/05\\\/13\\\/working-with-structured-data-in-microsoft-office-sharepoint-server-2007-part-4-sharepoint-designer\\\/\",\"name\":\"Working with Structured Data in Microsoft Office SharePoint Server 2007 (Part 4): SharePoint Designer - Reza Alirezaei's Blog %\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/blogs.devhorizon.com\\\/reza\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/blogs.devhorizon.com\\\/reza\\\/2009\\\/05\\\/13\\\/working-with-structured-data-in-microsoft-office-sharepoint-server-2007-part-4-sharepoint-designer\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/blogs.devhorizon.com\\\/reza\\\/2009\\\/05\\\/13\\\/working-with-structured-data-in-microsoft-office-sharepoint-server-2007-part-4-sharepoint-designer\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/blogs.devhorizon.com\\\/reza\\\/wp-content\\\/uploads\\\/2009\\\/05\\\/051309-1628-workingwith1.png\",\"datePublished\":\"2009-05-13T16:34:04+00:00\",\"dateModified\":\"2009-05-16T18:25:25+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/blogs.devhorizon.com\\\/reza\\\/#\\\/schema\\\/person\\\/cdbb24d283697a65951cb4a14e474938\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/blogs.devhorizon.com\\\/reza\\\/2009\\\/05\\\/13\\\/working-with-structured-data-in-microsoft-office-sharepoint-server-2007-part-4-sharepoint-designer\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/blogs.devhorizon.com\\\/reza\\\/2009\\\/05\\\/13\\\/working-with-structured-data-in-microsoft-office-sharepoint-server-2007-part-4-sharepoint-designer\\\/#primaryimage\",\"url\":\"https:\\\/\\\/blogs.devhorizon.com\\\/reza\\\/wp-content\\\/uploads\\\/2009\\\/05\\\/051309-1628-workingwith1.png\",\"contentUrl\":\"https:\\\/\\\/blogs.devhorizon.com\\\/reza\\\/wp-content\\\/uploads\\\/2009\\\/05\\\/051309-1628-workingwith1.png\",\"width\":216,\"height\":183},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/blogs.devhorizon.com\\\/reza\\\/#website\",\"url\":\"https:\\\/\\\/blogs.devhorizon.com\\\/reza\\\/\",\"name\":\"Reza Alirezaei's Blog\",\"description\":\"Blogging from the field!\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/blogs.devhorizon.com\\\/reza\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/blogs.devhorizon.com\\\/reza\\\/#\\\/schema\\\/person\\\/cdbb24d283697a65951cb4a14e474938\",\"name\":\"Reza Alirezaei\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/3ba940d84e0ecb909e62e93df4c56daf0395c7e53c914467ab2ee73124a7d7b6?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/3ba940d84e0ecb909e62e93df4c56daf0395c7e53c914467ab2ee73124a7d7b6?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/3ba940d84e0ecb909e62e93df4c56daf0395c7e53c914467ab2ee73124a7d7b6?s=96&d=mm&r=g\",\"caption\":\"Reza Alirezaei\"},\"url\":\"https:\\\/\\\/blogs.devhorizon.com\\\/reza\\\/author\\\/rezaa\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Working with Structured Data in Microsoft Office SharePoint Server 2007 (Part 4): SharePoint Designer - Reza Alirezaei's Blog %","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/blogs.devhorizon.com\/reza\/2009\/05\/13\/working-with-structured-data-in-microsoft-office-sharepoint-server-2007-part-4-sharepoint-designer\/","twitter_misc":{"Written by":"Reza Alirezaei","Est. reading time":"16 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/blogs.devhorizon.com\/reza\/2009\/05\/13\/working-with-structured-data-in-microsoft-office-sharepoint-server-2007-part-4-sharepoint-designer\/#article","isPartOf":{"@id":"https:\/\/blogs.devhorizon.com\/reza\/2009\/05\/13\/working-with-structured-data-in-microsoft-office-sharepoint-server-2007-part-4-sharepoint-designer\/"},"author":{"name":"Reza Alirezaei","@id":"https:\/\/blogs.devhorizon.com\/reza\/#\/schema\/person\/cdbb24d283697a65951cb4a14e474938"},"headline":"Working with Structured Data in Microsoft Office SharePoint Server 2007 (Part 4): SharePoint Designer","datePublished":"2009-05-13T16:34:04+00:00","dateModified":"2009-05-16T18:25:25+00:00","mainEntityOfPage":{"@id":"https:\/\/blogs.devhorizon.com\/reza\/2009\/05\/13\/working-with-structured-data-in-microsoft-office-sharepoint-server-2007-part-4-sharepoint-designer\/"},"wordCount":3317,"commentCount":6,"image":{"@id":"https:\/\/blogs.devhorizon.com\/reza\/2009\/05\/13\/working-with-structured-data-in-microsoft-office-sharepoint-server-2007-part-4-sharepoint-designer\/#primaryimage"},"thumbnailUrl":"https:\/\/blogs.devhorizon.com\/reza\/wp-content\/uploads\/2009\/05\/051309-1628-workingwith1.png","articleSection":["MOSS 2007"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/blogs.devhorizon.com\/reza\/2009\/05\/13\/working-with-structured-data-in-microsoft-office-sharepoint-server-2007-part-4-sharepoint-designer\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/blogs.devhorizon.com\/reza\/2009\/05\/13\/working-with-structured-data-in-microsoft-office-sharepoint-server-2007-part-4-sharepoint-designer\/","url":"https:\/\/blogs.devhorizon.com\/reza\/2009\/05\/13\/working-with-structured-data-in-microsoft-office-sharepoint-server-2007-part-4-sharepoint-designer\/","name":"Working with Structured Data in Microsoft Office SharePoint Server 2007 (Part 4): SharePoint Designer - Reza Alirezaei's Blog %","isPartOf":{"@id":"https:\/\/blogs.devhorizon.com\/reza\/#website"},"primaryImageOfPage":{"@id":"https:\/\/blogs.devhorizon.com\/reza\/2009\/05\/13\/working-with-structured-data-in-microsoft-office-sharepoint-server-2007-part-4-sharepoint-designer\/#primaryimage"},"image":{"@id":"https:\/\/blogs.devhorizon.com\/reza\/2009\/05\/13\/working-with-structured-data-in-microsoft-office-sharepoint-server-2007-part-4-sharepoint-designer\/#primaryimage"},"thumbnailUrl":"https:\/\/blogs.devhorizon.com\/reza\/wp-content\/uploads\/2009\/05\/051309-1628-workingwith1.png","datePublished":"2009-05-13T16:34:04+00:00","dateModified":"2009-05-16T18:25:25+00:00","author":{"@id":"https:\/\/blogs.devhorizon.com\/reza\/#\/schema\/person\/cdbb24d283697a65951cb4a14e474938"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/blogs.devhorizon.com\/reza\/2009\/05\/13\/working-with-structured-data-in-microsoft-office-sharepoint-server-2007-part-4-sharepoint-designer\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/blogs.devhorizon.com\/reza\/2009\/05\/13\/working-with-structured-data-in-microsoft-office-sharepoint-server-2007-part-4-sharepoint-designer\/#primaryimage","url":"https:\/\/blogs.devhorizon.com\/reza\/wp-content\/uploads\/2009\/05\/051309-1628-workingwith1.png","contentUrl":"https:\/\/blogs.devhorizon.com\/reza\/wp-content\/uploads\/2009\/05\/051309-1628-workingwith1.png","width":216,"height":183},{"@type":"WebSite","@id":"https:\/\/blogs.devhorizon.com\/reza\/#website","url":"https:\/\/blogs.devhorizon.com\/reza\/","name":"Reza Alirezaei's Blog","description":"Blogging from the field!","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/blogs.devhorizon.com\/reza\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/blogs.devhorizon.com\/reza\/#\/schema\/person\/cdbb24d283697a65951cb4a14e474938","name":"Reza Alirezaei","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/3ba940d84e0ecb909e62e93df4c56daf0395c7e53c914467ab2ee73124a7d7b6?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/3ba940d84e0ecb909e62e93df4c56daf0395c7e53c914467ab2ee73124a7d7b6?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/3ba940d84e0ecb909e62e93df4c56daf0395c7e53c914467ab2ee73124a7d7b6?s=96&d=mm&r=g","caption":"Reza Alirezaei"},"url":"https:\/\/blogs.devhorizon.com\/reza\/author\/rezaa\/"}]}},"_links":{"self":[{"href":"https:\/\/blogs.devhorizon.com\/reza\/wp-json\/wp\/v2\/posts\/972","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blogs.devhorizon.com\/reza\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blogs.devhorizon.com\/reza\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blogs.devhorizon.com\/reza\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/blogs.devhorizon.com\/reza\/wp-json\/wp\/v2\/comments?post=972"}],"version-history":[{"count":0,"href":"https:\/\/blogs.devhorizon.com\/reza\/wp-json\/wp\/v2\/posts\/972\/revisions"}],"wp:attachment":[{"href":"https:\/\/blogs.devhorizon.com\/reza\/wp-json\/wp\/v2\/media?parent=972"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogs.devhorizon.com\/reza\/wp-json\/wp\/v2\/categories?post=972"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogs.devhorizon.com\/reza\/wp-json\/wp\/v2\/tags?post=972"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}