<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:atom="https://www.w3.org/2005/Atom" xmlns:sy="https://purl.org/rss/1.0/modules/syndication/" xmlns:dc="https://purl.org/dc/elements/1.1/" xmlns:content="https://purl.org/rss/1.0/modules/content/" xmlns:wfw="https://wellformedweb.org/CommentAPI/" xmlns:slash="https://purl.org/rss/1.0/modules/slash/"
  version="2.0">
  <channel>
    <title>Bandar's Blog</title>
    <atom:link
      href="https://docs.microsoft.com/archive/blogs/balsharfi/feed.xml"
      rel="self"
      type="application/rss+xml" />
    <link>https://docs.microsoft.com/archive/blogs/balsharfi/feed.xml</link>
    <description>Sharing thoughts, code, and recommended practice</description>
    <lastBuildDate>Wed, 17 Apr 2019 03:17:37 GMT</lastBuildDate>
    <language>en-US</language>
    <sy:updatePeriod>hourly</sy:updatePeriod>
    <sy:updateFrequency>1</sy:updateFrequency>
    <item>
      <title>Moving to a new blog</title>
      <link>https://docs.microsoft.com/archive/blogs/balsharfi/moving-to-a-new-blog</link>
      <pubDate>Fri, 28 Oct 2016 22:15:55 GMT</pubDate>
      <dc:creator><![CDATA[BALSHARFI]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/balsharfi/?p=995</guid>
      <description><![CDATA[I am starting a new blog here: https://www.codedebate.com/]]></description>
      <content:encoded><![CDATA[I am starting a new blog here: <a href="https://www.codedebate.com/">https://www.codedebate.com/</a>]]></content:encoded>
    </item>
    <item>
      <title>Starting Azure Platform as a Service (PaaS) Development 101 Series: Lesson 3 of n – BLOB</title>
      <link>https://docs.microsoft.com/archive/blogs/balsharfi/starting-azure-platform-as-a-service-paas-development-101-series-lesson-3-of-n-blob</link>
      <pubDate>Fri, 24 Oct 2014 06:32:59 GMT</pubDate>
      <dc:creator><![CDATA[BALSHARFI]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/balsharfi/2014/10/24/starting-azure-platform-as-a-service-paas-development-101-series-lesson-3-of-n-blob/</guid>
      <description><![CDATA[Welcome back to the series  You can always view the list of all lessons here. Lesson 3 will be all...]]></description>
      <content:encoded><![CDATA[<p align="justify">Welcome back to the series <img class="wlEmoticon wlEmoticon-smile" style="border-top-style: none; border-bottom-style: none; border-right-style: none; border-left-style: none" alt="Smile" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/8737.wlEmoticon-smile_47E43C3A.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/8737.wlEmoticon_2D00_smile_5F00_47E43C3A.png" /> You can always view the list of all lessons <a href="https://blogs.msdn.com/b/balsharfi/archive/tags/starting+azure+platform+as+a+service+_2800_paas_2900_+development+101+series/" target="_blank">here</a>. Lesson 3 will be all about Azure BLOB Storage.</p>  <h2>First things first.!</h2>  <p align="justify">BLOB storage is part of storage accounts. BLOB storage enables you to store files in the cloud. When you upload a file into a BLOB container, you will start referring to the file as a BLOB and not a file anymore, don’t ask me why <img class="wlEmoticon wlEmoticon-smilewithtongueout" style="border-top-style: none; border-bottom-style: none; border-right-style: none; border-left-style: none" alt="Smile with tongue out" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/4861.wlEmoticon-smilewithtongueout_7C186580.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/4861.wlEmoticon_2D00_smilewithtongueout_5F00_7C186580.png" />. There are two types of BLOBs, Block BLOBs and Page BLOBs. Block BLOBs can sit in one fixed block of a max of 200GB while Page BLOBs can grow up to 1TB and is used mostly when ranges of bytes in a file are frequently updated. Unfortunately you will get a flat container, meaning you can not have folders and sub folders there. Easiest trick in the book to get organized is to include a “/” in the BLOB name e.g. “images/avatar01.png” instead of “avatar1.png”.&#160; Below diagram quickly illustrates the structure where containers sit inside storage accounts and BLOBs would sit inside the containers.</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/4807.image_4C5D4DB2.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/4807.image_5F00_4C5D4DB2.png"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/5417.image_thumb_4DC17084.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/5417.image_5F00_thumb_5F00_4DC17084.png" width="460" height="286" /></a></p>  <p>To learn more about Azure BLOB Storage click <a href="https://azure.microsoft.com/en-us/documentation/articles/storage-dotnet-how-to-use-blobs/" target="_blank">here</a>.</p>  <h2>What are we building today?</h2>  <p align="justify">Since we have established by now that we won’t have fancy sample applications but instead direct answers in this series, I expect you to go over the <a href="https://blogs.msdn.com/b/balsharfi/archive/2014/09/22/starting-azure-platform-as-a-service-paas-development-101-series-lesson-2-of-n-table-storage.aspx" target="_blank">previous lesson</a> before continuing. I won’t show you how to create a storage account and get your hands on an access key every post <img class="wlEmoticon wlEmoticon-winkingsmile" style="border-top-style: none; border-bottom-style: none; border-right-style: none; border-left-style: none" alt="Winking smile" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/6835.wlEmoticon-winkingsmile_18B77205.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/6835.wlEmoticon_2D00_winkingsmile_5F00_18B77205.png" />&#160;</p>  <p align="justify">In a nutshell, we will build a simple CRUD command line application for an Azure Blob. Checkout the below screenshot of the console application.</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/4606.image_43FE99BD.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/4606.image_5F00_43FE99BD.png"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/6215.image_thumb_7832C303.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/6215.image_5F00_thumb_5F00_7832C303.png" width="640" height="228" /></a></p>  <h2>The Console Application</h2>  <p align="justify">Very straight forward, an endless loop displaying the menu and waiting for the user to input. A switch statement is there to trigger the right function based on user input.</p>  <div id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:d993f4e4-308a-49a5-a8ff-3e84bfe6da1a" class="wlWriterEditableSmartContent" style="float: none; padding-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px"> <div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt"> <div style="background: #ddd; max-height: 300px; overflow: auto"> <ol start="1" style="background: #ffffff; margin: 0 0 0 2.5em; padding: 0 0 0 5px;"> <li><span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#0000ff">private</span><span style="background:#ffffff;color:#000000"> </span><span style="background:#ffffff;color:#0000ff">const</span><span style="background:#ffffff;color:#000000"> </span><span style="background:#ffffff;color:#0000ff">string</span><span style="background:#ffffff;color:#000000"> Protocol = </span><span style="background:#ffffff;color:#a31515">&quot;https&quot;</span><span style="background:#ffffff;color:#000000">;</span></li> <li style="background: #f3f3f3"><span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#0000ff">private</span><span style="background:#ffffff;color:#000000"> </span><span style="background:#ffffff;color:#0000ff">const</span><span style="background:#ffffff;color:#000000"> </span><span style="background:#ffffff;color:#0000ff">string</span><span style="background:#ffffff;color:#000000"> AccountName = </span><span style="background:#ffffff;color:#a31515">&quot;paas101&quot;</span><span style="background:#ffffff;color:#000000">;</span></li> <li><span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#0000ff">private</span><span style="background:#ffffff;color:#000000"> </span><span style="background:#ffffff;color:#0000ff">const</span><span style="background:#ffffff;color:#000000"> </span><span style="background:#ffffff;color:#0000ff">string</span><span style="background:#ffffff;color:#000000"> AccountKey = </span><span style="background:#ffffff;color:#a31515">&quot;XXXXXX-KEY GOES HERE&quot;</span><span style="background:#ffffff;color:#000000">;</span></li> <li style="background: #f3f3f3"><span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#0000ff">private</span><span style="background:#ffffff;color:#000000"> </span><span style="background:#ffffff;color:#0000ff">const</span><span style="background:#ffffff;color:#000000"> </span><span style="background:#ffffff;color:#0000ff">string</span><span style="background:#ffffff;color:#000000"> ContainerName = </span><span style="background:#ffffff;color:#a31515">&quot;lesson03&quot;</span><span style="background:#ffffff;color:#000000">;</span></li> <li><span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#0000ff">private</span><span style="background:#ffffff;color:#000000"> </span><span style="background:#ffffff;color:#0000ff">const</span><span style="background:#ffffff;color:#000000"> </span><span style="background:#ffffff;color:#0000ff">string</span><span style="background:#ffffff;color:#000000"> Success = </span><span style="background:#ffffff;color:#a31515">&quot;&#92;nOperation completed successfuly. Press any key to go back.&quot;</span><span style="background:#ffffff;color:#000000">;</span></li> <li style="background: #f3f3f3">&nbsp;</li> <li><span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#0000ff">private</span><span style="background:#ffffff;color:#000000"> </span><span style="background:#ffffff;color:#0000ff">static</span><span style="background:#ffffff;color:#000000"> </span><span style="background:#ffffff;color:#0000ff">string</span><span style="background:#ffffff;color:#000000"> _connection;</span></li> <li style="background: #f3f3f3">&nbsp;</li> <li><span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#0000ff">static</span><span style="background:#ffffff;color:#000000"> </span><span style="background:#ffffff;color:#0000ff">void</span><span style="background:#ffffff;color:#000000"> Main(</span><span style="background:#ffffff;color:#0000ff">string</span><span style="background:#ffffff;color:#000000">[] args)</span></li> <li style="background: #f3f3f3"><span style="background:#ffffff;color:#000000">{</span></li> <li>    <span style="background:#ffffff;color:#000000">_connection = </span><span style="background:#ffffff;color:#0000ff">string</span><span style="background:#ffffff;color:#000000">.Format(</span><span style="background:#ffffff;color:#a31515">&quot;DefaultEndpointsProtocol={</span><span style="background:#ffffff;color:#3cb371">0}</span><span style="background:#ffffff;color:#a31515">;AccountName={</span><span style="background:#ffffff;color:#3cb371">1}</span><span style="background:#ffffff;color:#a31515">;AccountKey={</span><span style="background:#ffffff;color:#3cb371">2}</span><span style="background:#ffffff;color:#a31515">&quot;</span><span style="background:#ffffff;color:#000000">,</span></li> <li style="background: #f3f3f3">    <span style="background:#ffffff;color:#000000">Protocol, AccountName, AccountKey);</span></li> <li>&nbsp;</li> <li style="background: #f3f3f3">    <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#2b91af">Console</span><span style="background:#ffffff;color:#000000">.TreatControlCAsInput = </span><span style="background:#ffffff;color:#0000ff">true</span><span style="background:#ffffff;color:#000000">;</span></li> <li>    <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#2b91af">Console</span><span style="background:#ffffff;color:#000000">.Clear();</span></li> <li style="background: #f3f3f3">&nbsp;</li> <li>    <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#0000ff">while</span><span style="background:#ffffff;color:#000000"> (</span><span style="background:#ffffff;color:#0000ff">true</span><span style="background:#ffffff;color:#000000">)</span></li> <li style="background: #f3f3f3">    <span style="background:#ffffff;color:#000000">{</span></li> <li>        <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#2b91af">Console</span><span style="background:#ffffff;color:#000000">.Clear();</span></li> <li style="background: #f3f3f3">&nbsp;</li> <li>        <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#2b91af">Console</span><span style="background:#ffffff;color:#000000">.WriteLine(</span><span style="background:#ffffff;color:#a31515">&quot;Welcome to Lesson 03, let&#39;s play with BLOB Storage.&quot;</span><span style="background:#ffffff;color:#000000">);</span></li> <li style="background: #f3f3f3">        <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#2b91af">Console</span><span style="background:#ffffff;color:#000000">.WriteLine(</span><span style="background:#ffffff;color:#a31515">&quot;&#92;t1. Upload a new BLOB&quot;</span><span style="background:#ffffff;color:#000000">);</span></li> <li>        <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#2b91af">Console</span><span style="background:#ffffff;color:#000000">.WriteLine(</span><span style="background:#ffffff;color:#a31515">&quot;&#92;t2. Delete a specific BLOB&quot;</span><span style="background:#ffffff;color:#000000">);</span></li> <li style="background: #f3f3f3">        <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#2b91af">Console</span><span style="background:#ffffff;color:#000000">.WriteLine(</span><span style="background:#ffffff;color:#a31515">&quot;&#92;t3. List all BLOBs&quot;</span><span style="background:#ffffff;color:#000000">);</span></li> <li>        <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#2b91af">Console</span><span style="background:#ffffff;color:#000000">.WriteLine(</span><span style="background:#ffffff;color:#a31515">&quot;&#92;t4. Exit&quot;</span><span style="background:#ffffff;color:#000000">);</span></li> <li style="background: #f3f3f3">&nbsp;</li> <li>        <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#2b91af">Console</span><span style="background:#ffffff;color:#000000">.WriteLine(</span><span style="background:#ffffff;color:#a31515">&quot;So what do you want to do?&quot;</span><span style="background:#ffffff;color:#000000">);</span></li> <li style="background: #f3f3f3">&nbsp;</li> <li>        <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#0000ff">int</span><span style="background:#ffffff;color:#000000"> input;</span></li> <li style="background: #f3f3f3">        <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#0000ff">if</span><span style="background:#ffffff;color:#000000"> (!</span><span style="background:#ffffff;color:#0000ff">int</span><span style="background:#ffffff;color:#000000">.TryParse(</span><span style="background:#ffffff;color:#2b91af">Console</span><span style="background:#ffffff;color:#000000">.ReadKey().KeyChar.ToString(), </span><span style="background:#ffffff;color:#0000ff">out</span><span style="background:#ffffff;color:#000000"> input)) </span><span style="background:#ffffff;color:#0000ff">return</span><span style="background:#ffffff;color:#000000">;</span></li> <li>&nbsp;</li> <li style="background: #f3f3f3">        <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#0000ff">switch</span><span style="background:#ffffff;color:#000000"> (input)</span></li> <li>        <span style="background:#ffffff;color:#000000">{</span></li> <li style="background: #f3f3f3">            <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#0000ff">case</span><span style="background:#ffffff;color:#000000"> 1:</span></li> <li>                <span style="background:#ffffff;color:#000000">UploadNewBlob();</span></li> <li style="background: #f3f3f3">                <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#0000ff">break</span><span style="background:#ffffff;color:#000000">;</span></li> <li>            <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#0000ff">case</span><span style="background:#ffffff;color:#000000"> 2:</span></li> <li style="background: #f3f3f3">                <span style="background:#ffffff;color:#000000">DeleteBlob();</span></li> <li>                <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#0000ff">break</span><span style="background:#ffffff;color:#000000">;</span></li> <li style="background: #f3f3f3">            <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#0000ff">case</span><span style="background:#ffffff;color:#000000"> 3:</span></li> <li>                <span style="background:#ffffff;color:#000000">ListAllBlobs();</span></li> <li style="background: #f3f3f3">                <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#0000ff">break</span><span style="background:#ffffff;color:#000000">;</span></li> <li>            <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#0000ff">case</span><span style="background:#ffffff;color:#000000"> 4:</span></li> <li style="background: #f3f3f3">                <span style="background:#ffffff;color:#000000">Exit();</span></li> <li>                <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#0000ff">break</span><span style="background:#ffffff;color:#000000">;</span></li> <li style="background: #f3f3f3">        <span style="background:#ffffff;color:#000000">}</span></li> <li>    <span style="background:#ffffff;color:#000000">}</span></li> <li style="background: #f3f3f3"><span style="background:#ffffff;color:#000000">}</span></li> <li>&nbsp;</li> <li style="background: #f3f3f3"><span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#0000ff">private</span><span style="background:#ffffff;color:#000000"> </span><span style="background:#ffffff;color:#0000ff">static</span><span style="background:#ffffff;color:#000000"> </span><span style="background:#ffffff;color:#0000ff">void</span><span style="background:#ffffff;color:#000000"> Exit()</span></li> <li><span style="background:#ffffff;color:#000000">{</span></li> <li style="background: #f3f3f3">    <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#2b91af">Environment</span><span style="background:#ffffff;color:#000000">.Exit(0);</span></li> <li><span style="background:#ffffff;color:#000000">}</span></li> </ol> </div> </div> </div>  <p>&#160;</p>  <h2>Upload a new BLOB</h2>  <p>To keep it simple, we will ask the user for the path of a file they would like to upload to the BLOB container. At the main menu, when the user would input 1, they will be directed to the input screen.</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/7416.image_035EDDFF.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/7416.image_5F00_035EDDFF.png"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/0407.image_thumb_37930745.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/0407.image_5F00_thumb_5F00_37930745.png" width="640" height="228" /></a></p>  <p>At the input screen we will ask them about their file path.</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/7268.image_4735A307.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/7268.image_5F00_4735A307.png"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/7380.image_thumb_5B4EBF90.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/7380.image_5F00_thumb_5F00_5B4EBF90.png" width="631" height="193" /></a></p>  <p>Check out the function’s code below. We simply establish a BLOB client, get a reference to the container, ask the user for the file path and execute the upload activity.</p>  <div id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:adb25151-0c1e-45d3-a715-f1e753854e1a" class="wlWriterEditableSmartContent" style="float: none; padding-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px"> <div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt"> <div style="background: #ddd; max-height: 300px; overflow: auto"> <ol start="1" style="background: #ffffff; margin: 0 0 0 2.5em; padding: 0 0 0 5px;"> <li><span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#0000ff">private</span><span style="background:#ffffff;color:#000000"> </span><span style="background:#ffffff;color:#0000ff">static</span><span style="background:#ffffff;color:#000000"> </span><span style="background:#ffffff;color:#0000ff">void</span><span style="background:#ffffff;color:#000000"> UploadNewBlob()</span></li> <li style="background: #f3f3f3"><span style="background:#ffffff;color:#000000">{</span></li> <li>    <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#0000ff">try</span></li> <li style="background: #f3f3f3">    <span style="background:#ffffff;color:#000000">{</span></li> <li>        <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#0000ff">var</span><span style="background:#ffffff;color:#000000"> client = </span><span style="background:#ffffff;color:#2b91af">CloudStorageAccount</span><span style="background:#ffffff;color:#000000">.Parse(_connection).CreateCloudBlobClient();</span></li> <li style="background: #f3f3f3">&nbsp;</li> <li>        <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#2b91af">Console</span><span style="background:#ffffff;color:#000000">.Clear();</span></li> <li style="background: #f3f3f3">        <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#2b91af">Console</span><span style="background:#ffffff;color:#000000">.WriteLine(</span><span style="background:#ffffff;color:#a31515">&quot;Where is your file?&quot;</span><span style="background:#ffffff;color:#000000">);</span></li> <li>        <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#0000ff">var</span><span style="background:#ffffff;color:#000000"> filePath = </span><span style="background:#ffffff;color:#2b91af">Console</span><span style="background:#ffffff;color:#000000">.ReadLine();</span></li> <li style="background: #f3f3f3">&nbsp;</li> <li>        <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#0000ff">var</span><span style="background:#ffffff;color:#000000"> container = client.GetContainerReference(ContainerName);</span></li> <li style="background: #f3f3f3">        <span style="background:#ffffff;color:#000000">container.CreateIfNotExists();</span></li> <li>&nbsp;</li> <li style="background: #f3f3f3">        <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#0000ff">var</span><span style="background:#ffffff;color:#000000"> blob = container.GetBlockBlobReference(filePath.Substring(filePath.LastIndexOf(</span><span style="background:#ffffff;color:#a31515">&quot;&#92;&#92;&quot;</span><span style="background:#ffffff;color:#000000">) + 1));</span></li> <li>&nbsp;</li> <li style="background: #f3f3f3">        <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#0000ff">using</span><span style="background:#ffffff;color:#000000"> (</span><span style="background:#ffffff;color:#0000ff">var</span><span style="background:#ffffff;color:#000000"> fileStream = </span><span style="background:#ffffff;color:#2b91af">File</span><span style="background:#ffffff;color:#000000">.OpenRead(filePath))</span></li> <li>        <span style="background:#ffffff;color:#000000">{</span></li> <li style="background: #f3f3f3">            <span style="background:#ffffff;color:#000000">blob.UploadFromStream(fileStream);</span></li> <li>        <span style="background:#ffffff;color:#000000">}</span></li> <li style="background: #f3f3f3">&nbsp;</li> <li>        <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#2b91af">Console</span><span style="background:#ffffff;color:#000000">.WriteLine(Success);</span></li> <li style="background: #f3f3f3">        <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#2b91af">Console</span><span style="background:#ffffff;color:#000000">.ReadKey();</span></li> <li>    <span style="background:#ffffff;color:#000000">}</span></li> <li style="background: #f3f3f3">    <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#0000ff">catch</span><span style="background:#ffffff;color:#000000"> (</span><span style="background:#ffffff;color:#2b91af">StorageException</span><span style="background:#ffffff;color:#000000"> ex)</span></li> <li>    <span style="background:#ffffff;color:#000000">{</span></li> <li style="background: #f3f3f3">        <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#2b91af">Console</span><span style="background:#ffffff;color:#000000">.WriteLine(ex.Message);</span></li> <li>        <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#2b91af">Console</span><span style="background:#ffffff;color:#000000">.ReadKey();</span></li> <li style="background: #f3f3f3">    <span style="background:#ffffff;color:#000000">}</span></li> <li><span style="background:#ffffff;color:#000000">}</span></li> </ol> </div> </div> </div>  <p>&#160;</p>  <h2>Delete a specific BLOB</h2>  <p>From the main menu, the user will input 2 and be directed to the input screen.</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/1854.image_2B2774CD.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/1854.image_5F00_2B2774CD.png"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/3463.image_thumb_78576E58.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/3463.image_5F00_thumb_5F00_78576E58.png" width="640" height="228" /></a></p>  <p>At the input screen we will ask the user for the name of the BLOB they would like to delete.</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/1234.image_63D4AF8B.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/1234.image_5F00_63D4AF8B.png"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/5852.image_thumb_45F62B8A.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/5852.image_5F00_thumb_5F00_45F62B8A.png" width="600" height="186" /></a></p>  <p>To verify that the Blob was deleted, Browse the Server Explorer to reach the container and list it’s contents. As you can see the Blob03</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/7484.image_4E798AD4.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/7484.image_5F00_4E798AD4.png"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/5344.image_thumb_1DE60D1C.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/5344.image_5F00_thumb_5F00_1DE60D1C.png" width="627" height="480" /></a></p>  <p>Check out the function’s code below. We simply establish a BLOB client, get a reference to the container, ask the user for the BLOB name and execute the deletion activity.</p>  <div id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:c8002592-b7aa-452d-97a5-386dacb38c3d" class="wlWriterEditableSmartContent" style="float: none; padding-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px"> <div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt"> <div style="background: #ddd; max-height: 300px; overflow: auto"> <ol start="1" style="background: #ffffff; margin: 0 0 0 2.5em; padding: 0 0 0 5px;"> <li><span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#0000ff">private</span><span style="background:#ffffff;color:#000000"> </span><span style="background:#ffffff;color:#0000ff">static</span><span style="background:#ffffff;color:#000000"> </span><span style="background:#ffffff;color:#0000ff">void</span><span style="background:#ffffff;color:#000000"> DeleteBlob()</span></li> <li style="background: #f3f3f3"><span style="background:#ffffff;color:#000000">{</span></li> <li>    <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#0000ff">try</span></li> <li style="background: #f3f3f3">    <span style="background:#ffffff;color:#000000">{</span></li> <li>        <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#0000ff">var</span><span style="background:#ffffff;color:#000000"> client = </span><span style="background:#ffffff;color:#2b91af">CloudStorageAccount</span><span style="background:#ffffff;color:#000000">.Parse(_connection).CreateCloudBlobClient();</span></li> <li style="background: #f3f3f3">&nbsp;</li> <li>        <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#0000ff">var</span><span style="background:#ffffff;color:#000000"> container = client.GetContainerReference(ContainerName);</span></li> <li style="background: #f3f3f3">        <span style="background:#ffffff;color:#000000">container.CreateIfNotExists();</span></li> <li>&nbsp;</li> <li style="background: #f3f3f3">        <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#2b91af">Console</span><span style="background:#ffffff;color:#000000">.Clear();</span></li> <li>        <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#2b91af">Console</span><span style="background:#ffffff;color:#000000">.WriteLine(</span><span style="background:#ffffff;color:#a31515">&quot;&#92;nEnter Blob name: &quot;</span><span style="background:#ffffff;color:#000000">);</span></li> <li style="background: #f3f3f3">&nbsp;</li> <li>        <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#0000ff">var</span><span style="background:#ffffff;color:#000000"> blobName = </span><span style="background:#ffffff;color:#2b91af">Console</span><span style="background:#ffffff;color:#000000">.ReadLine();</span></li> <li style="background: #f3f3f3">        <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#0000ff">var</span><span style="background:#ffffff;color:#000000"> blockBlob = container.GetBlockBlobReference(blobName);</span></li> <li>        <span style="background:#ffffff;color:#000000">blockBlob.Delete();</span></li> <li style="background: #f3f3f3">&nbsp;</li> <li>        <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#2b91af">Console</span><span style="background:#ffffff;color:#000000">.WriteLine(Success);</span></li> <li style="background: #f3f3f3">        <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#2b91af">Console</span><span style="background:#ffffff;color:#000000">.ReadKey();</span></li> <li>    <span style="background:#ffffff;color:#000000">}</span></li> <li style="background: #f3f3f3">    <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#0000ff">catch</span><span style="background:#ffffff;color:#000000"> (</span><span style="background:#ffffff;color:#2b91af">StorageException</span><span style="background:#ffffff;color:#000000"> ex)</span></li> <li>    <span style="background:#ffffff;color:#000000">{</span></li> <li style="background: #f3f3f3">        <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#2b91af">Console</span><span style="background:#ffffff;color:#000000">.WriteLine(ex.Message);</span></li> <li>        <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#2b91af">Console</span><span style="background:#ffffff;color:#000000">.ReadKey();</span></li> <li style="background: #f3f3f3">    <span style="background:#ffffff;color:#000000">}</span></li> <li><span style="background:#ffffff;color:#000000">}</span></li> </ol> </div> </div> </div>  <p>&#160;</p>  <h2>List all BLOBs in a Container</h2>  <p>From the main menu, the user will input 3 and be directed to the list screen.</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/0676.image_62290519.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/0676.image_5F00_62290519.png"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/3755.image_thumb_6B189758.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/3755.image_5F00_thumb_5F00_6B189758.png" width="640" height="228" /></a></p>  <p>At the list screen an output of all the BLOB Uri’s will be displayed.</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/5241.image_13B70360.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/5241.image_5F00_13B70360.png"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/2045.image_thumb_23C5D217.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/2045.image_5F00_thumb_5F00_23C5D217.png" width="617" height="178" /></a></p>  <p>Check out the function’s code below. We simply establish a BLOB client, get a reference to the container, and finally loop the container BLOBs printing out the Uri.</p>  <div id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:6993eb2d-6aba-4f40-a237-7bbcbde41c62" class="wlWriterEditableSmartContent" style="float: none; padding-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px"> <div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt"> <div style="background: #ddd; max-height: 300px; overflow: auto"> <ol start="1" style="background: #ffffff; margin: 0 0 0 2.5em; padding: 0 0 0 5px;"> <li><span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#0000ff">private</span><span style="background:#ffffff;color:#000000"> </span><span style="background:#ffffff;color:#0000ff">static</span><span style="background:#ffffff;color:#000000"> </span><span style="background:#ffffff;color:#0000ff">void</span><span style="background:#ffffff;color:#000000"> ListAllBlobs()</span></li> <li style="background: #f3f3f3"><span style="background:#ffffff;color:#000000">{</span></li> <li>    <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#0000ff">try</span></li> <li style="background: #f3f3f3">    <span style="background:#ffffff;color:#000000">{</span></li> <li>        <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#0000ff">var</span><span style="background:#ffffff;color:#000000"> client = </span><span style="background:#ffffff;color:#2b91af">CloudStorageAccount</span><span style="background:#ffffff;color:#000000">.Parse(_connection).CreateCloudBlobClient();</span></li> <li style="background: #f3f3f3">&nbsp;</li> <li>        <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#0000ff">var</span><span style="background:#ffffff;color:#000000"> container = client.GetContainerReference(ContainerName);</span></li> <li style="background: #f3f3f3">        <span style="background:#ffffff;color:#000000">container.CreateIfNotExists();</span></li> <li>&nbsp;</li> <li style="background: #f3f3f3">        <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#2b91af">Console</span><span style="background:#ffffff;color:#000000">.Clear();</span></li> <li>&nbsp;</li> <li style="background: #f3f3f3">        <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#0000ff">foreach</span><span style="background:#ffffff;color:#000000"> (</span><span style="background:#ffffff;color:#0000ff">var</span><span style="background:#ffffff;color:#000000"> item </span><span style="background:#ffffff;color:#0000ff">in</span><span style="background:#ffffff;color:#000000"> container.ListBlobs(</span><span style="background:#ffffff;color:#0000ff">null</span><span style="background:#ffffff;color:#000000">, </span><span style="background:#ffffff;color:#0000ff">false</span><span style="background:#ffffff;color:#000000">))</span></li> <li>        <span style="background:#ffffff;color:#000000">{</span></li> <li style="background: #f3f3f3">            <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#0000ff">var</span><span style="background:#ffffff;color:#000000"> blockBlob = item </span><span style="background:#ffffff;color:#0000ff">as</span><span style="background:#ffffff;color:#000000"> </span><span style="background:#ffffff;color:#2b91af">CloudBlockBlob</span><span style="background:#ffffff;color:#000000">;</span></li> <li>            <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#0000ff">if</span><span style="background:#ffffff;color:#000000"> (blockBlob != </span><span style="background:#ffffff;color:#0000ff">null</span><span style="background:#ffffff;color:#000000">)</span></li> <li style="background: #f3f3f3">            <span style="background:#ffffff;color:#000000">{</span></li> <li>                <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#0000ff">var</span><span style="background:#ffffff;color:#000000"> blob = blockBlob;</span></li> <li style="background: #f3f3f3">                <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#2b91af">Console</span><span style="background:#ffffff;color:#000000">.WriteLine(blob.Uri);</span></li> <li>            <span style="background:#ffffff;color:#000000">}</span></li> <li style="background: #f3f3f3">            <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#0000ff">else</span></li> <li>            <span style="background:#ffffff;color:#000000">{</span></li> <li style="background: #f3f3f3">                <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#0000ff">var</span><span style="background:#ffffff;color:#000000"> blob = item </span><span style="background:#ffffff;color:#0000ff">as</span><span style="background:#ffffff;color:#000000"> </span><span style="background:#ffffff;color:#2b91af">CloudPageBlob</span><span style="background:#ffffff;color:#000000">;</span></li> <li>                <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#0000ff">if</span><span style="background:#ffffff;color:#000000"> (blob != </span><span style="background:#ffffff;color:#0000ff">null</span><span style="background:#ffffff;color:#000000">)</span></li> <li style="background: #f3f3f3">                <span style="background:#ffffff;color:#000000">{</span></li> <li>                    <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#0000ff">var</span><span style="background:#ffffff;color:#000000"> pageBlob = blob;</span></li> <li style="background: #f3f3f3">                    <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#2b91af">Console</span><span style="background:#ffffff;color:#000000">.WriteLine(pageBlob.Uri);</span></li> <li>                <span style="background:#ffffff;color:#000000">}</span></li> <li style="background: #f3f3f3">                <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#0000ff">else</span></li> <li>                <span style="background:#ffffff;color:#000000">{</span></li> <li style="background: #f3f3f3">                    <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#0000ff">var</span><span style="background:#ffffff;color:#000000"> blobDirectory = item </span><span style="background:#ffffff;color:#0000ff">as</span><span style="background:#ffffff;color:#000000"> </span><span style="background:#ffffff;color:#2b91af">CloudBlobDirectory</span><span style="background:#ffffff;color:#000000">;</span></li> <li>                    <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#0000ff">if</span><span style="background:#ffffff;color:#000000"> (blobDirectory == </span><span style="background:#ffffff;color:#0000ff">null</span><span style="background:#ffffff;color:#000000">) </span><span style="background:#ffffff;color:#0000ff">continue</span><span style="background:#ffffff;color:#000000">;</span></li> <li style="background: #f3f3f3">                    <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#0000ff">var</span><span style="background:#ffffff;color:#000000"> directory = blobDirectory;</span></li> <li>                    <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#2b91af">Console</span><span style="background:#ffffff;color:#000000">.WriteLine(</span><span style="background:#ffffff;color:#a31515">&quot;Directory: {</span><span style="background:#ffffff;color:#3cb371">0}</span><span style="background:#ffffff;color:#a31515">&quot;</span><span style="background:#ffffff;color:#000000">, directory.Uri);</span></li> <li style="background: #f3f3f3">                <span style="background:#ffffff;color:#000000">}</span></li> <li>            <span style="background:#ffffff;color:#000000">}</span></li> <li style="background: #f3f3f3">        <span style="background:#ffffff;color:#000000">}</span></li> <li>&nbsp;</li> <li style="background: #f3f3f3">        <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#2b91af">Console</span><span style="background:#ffffff;color:#000000">.WriteLine(Success);</span></li> <li>        <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#2b91af">Console</span><span style="background:#ffffff;color:#000000">.ReadKey();</span></li> <li style="background: #f3f3f3">    <span style="background:#ffffff;color:#000000">}</span></li> <li>    <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#0000ff">catch</span><span style="background:#ffffff;color:#000000"> (</span><span style="background:#ffffff;color:#2b91af">StorageException</span><span style="background:#ffffff;color:#000000"> ex)</span></li> <li style="background: #f3f3f3">    <span style="background:#ffffff;color:#000000">{</span></li> <li>        <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#2b91af">Console</span><span style="background:#ffffff;color:#000000">.WriteLine(ex.Message);</span></li> <li style="background: #f3f3f3">        <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#2b91af">Console</span><span style="background:#ffffff;color:#000000">.ReadKey();</span></li> <li>    <span style="background:#ffffff;color:#000000">}</span></li> <li style="background: #f3f3f3"><span style="background:#ffffff;color:#000000">}</span></li> </ol> </div> </div> </div>  <p>aaaand we are done with the lesson. Let me know if you have any questions or comments <img class="wlEmoticon wlEmoticon-smile" style="border-top-style: none; border-bottom-style: none; border-right-style: none; border-left-style: none" alt="Smile" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/8737.wlEmoticon-smile_47E43C3A.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/8737.wlEmoticon_2D00_smile_5F00_47E43C3A.png" /></p>]]></content:encoded>
    </item>
    <item>
      <title>Starting Azure Platform as a Service (PaaS) Development 101 Series: Lesson 2 of n – Table Storage</title>
      <link>https://docs.microsoft.com/archive/blogs/balsharfi/starting-azure-platform-as-a-service-paas-development-101-series-lesson-2-of-n-table-storage</link>
      <pubDate>Sun, 21 Sep 2014 15:55:00 GMT</pubDate>
      <dc:creator><![CDATA[BALSHARFI]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/balsharfi/2014/09/21/starting-azure-platform-as-a-service-paas-development-101-series-lesson-2-of-n-table-storage/</guid>
      <description><![CDATA[Welcome back to the series  You can always view the list of all lessons here. Lesson 2 will be all...]]></description>
      <content:encoded><![CDATA[<p>Welcome back to the series <img class="wlEmoticon wlEmoticon-smile" style="border-top-style: none; border-bottom-style: none; border-right-style: none; border-left-style: none" alt="Smile" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/8867.wlEmoticon-smile_0BA5920C.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/8867.wlEmoticon_2D00_smile_5F00_0BA5920C.png" /> You can always view the list of all lessons <a href="https://blogs.msdn.com/b/balsharfi/archive/tags/starting+azure+platform+as+a+service+_2800_paas_2900_+development+101+series/" target="_blank">here</a>. Lesson 2 will be all about Azure Table Storage.</p>  <h2>First things first.!</h2>  <p>Azure Storage Tables are part of Storage Accounts. In addition to tables, Storage Accounts host Queues, BLOBs, and Files. So what’s cool about tables? well, if you are looking for a scalable, convenient, and very cost effective solution to store non-relational data with a clustered index. Then you are in the right place. Below diagram quickly illustrates the structure where tables sit inside storage accounts and entities would sit inside the tables.</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/7824.image_4DAC014D.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/7824.image_5F00_4DAC014D.png"><img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/8741.image_thumb_0173F79F.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/8741.image_5F00_thumb_5F00_0173F79F.png" width="468" height="247" /></a></p>  <p>To learn more about Azure Table Storage click <a href="https://azure.microsoft.com/en-us/documentation/articles/storage-dotnet-how-to-use-tables/#what-is" target="_blank">here</a>.</p>  <h2>What are we building today?</h2>  <p>As you will get used to meaningless examples in this series <img class="wlEmoticon wlEmoticon-winkingsmile" style="border-top-style: none; border-bottom-style: none; border-right-style: none; border-left-style: none" alt="Winking smile" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/6622.wlEmoticon-winkingsmile_53893597.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/6622.wlEmoticon_2D00_winkingsmile_5F00_53893597.png" /> we will build a simple CRUD command line application for an Azure table. Checkout the below screenshot of the console application:</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/3823.image_79EB18E2.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/3823.image_5F00_79EB18E2.png"><img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/0310.image_thumb_7091E45F.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/0310.image_5F00_thumb_5F00_7091E45F.png" width="640" height="205" /></a></p>  <p>In addition to the CRUD operations, I will show you how to do a batch insert as well. Don’t get too excited though, according to this <a href="https://msdn.microsoft.com/en-us/library/azure/microsoft.windowsazure.storage.table.tablebatchoperation.aspx" target="_blank">link</a> over MSDN: A batch operation may contain up to 100 individual table operations, with the requirement that each operation entity must have same partition key. A batch with a retrieve operation cannot contain any other operations. Note that the total payload of a batch operation is limited to 4MB. I hope this will change in the near future.</p>  <h2>Let’s get cracking and create the Storage Account and the Azure Table</h2>  <p>Navigate to the Azure portal and start with creating a storage account. I called it “paas101”. Unfortunately, up till now you can not use the Azure portal to manage the tables. You need to use a tool for this. Personally I use Visual Studio. A quick search on Bing will do the trick for you.    <br /><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/1205.image_46B1702A.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/1205.image_5F00_46B1702A.png"><img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/8883.image_thumb_5D09A620.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/8883.image_5F00_thumb_5F00_5D09A620.png" width="640" height="273" /></a></p>  <p>Launch Visual Studio and open the Server Explorer. You will find an Azure node. If this is the first time you do this, Visual Studio will ask you to login using your Microsoft Account. Look for your Storage Account, expand it, right click Tables, and create a new table. I called it Lesson02.</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/0820.image_3A486E63.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/0820.image_5F00_3A486E63.png"><img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/5672.image_thumb_509E13A8.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/5672.image_5F00_thumb_5F00_509E13A8.png" width="640" height="311" /></a></p>  <p>Once the table is created, you will notice that by default 3 columns are created: the clustered index aka Partition Key, the Row Key, and an automatically generated Timestamp. Add an additional property and call it “SomeRandomNumber”. Yeah I know <img class="wlEmoticon wlEmoticon-smilewithtongueout" style="border-top-style: none; border-bottom-style: none; border-right-style: none; border-left-style: none" alt="Smile with tongue out" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/7824.wlEmoticon-smilewithtongueout_4D8BB5B3.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/7824.wlEmoticon_2D00_smilewithtongueout_5F00_4D8BB5B3.png" /></p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/3326.image_36CC6E2A.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/3326.image_5F00_36CC6E2A.png"><img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/3858.image_thumb_11650B6D.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/3858.image_5F00_thumb_5F00_11650B6D.png" width="640" height="457" /></a></p>  <p>I just added an entity manually, notice the Timestamp being populated automatically in the below screenshot.</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/4863.image_274E7DBD.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/4863.image_5F00_274E7DBD.png"><img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/3660.image_thumb_24A852BD.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/3660.image_5F00_thumb_5F00_24A852BD.png" width="640" height="182" /></a></p>  <p>Next step would be adding the “Windows Azure Storage” NuGet package to the project:</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/8322.image_56365103.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/8322.image_5F00_56365103.png"><img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/5432.image_thumb_791EC4C6.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/5432.image_5F00_thumb_5F00_791EC4C6.png" width="640" height="433" /></a></p>  <p>and now the last step before we start writing code is getting our hands on the access key. Without the access key our client application will not be able to interact with the Storage Account. Navigate to your Storage Account on the Azure portal and click on the Manage Access Keys button on the bottom:</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/8015.image_07EB8B50.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/8015.image_5F00_07EB8B50.png"><img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/2350.image_thumb_29D6EDD4.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/2350.image_5F00_thumb_5F00_29D6EDD4.png" width="513" height="138" /></a></p>  <p>Copy one of the access keys to the clipboard.</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/1541.image_32C68013.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/1541.image_5F00_32C68013.png"><img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/7851.image_thumb_16B851D9.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/7851.image_5F00_thumb_5F00_16B851D9.png" width="579" height="480" /></a></p>  <p>Now go back to your command line solution and add a new Class that will represent the entity. For the sake of the demo I called it “SomeEntity” <img class="wlEmoticon wlEmoticon-smile" style="border-top-style: none; border-bottom-style: none; border-right-style: none; border-left-style: none" alt="Smile" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/8867.wlEmoticon-smile_0BA5920C.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/8867.wlEmoticon_2D00_smile_5F00_0BA5920C.png" /> Notice from the code below that it is inheriting from the TableEntity class:</p>  <div id="scid:9D7513F9-C04C-4721-824A-2B34F0212519:e65fd76f-b6fd-481b-a166-704febb0c8dc" class="wlWriterEditableSmartContent" style="float: none; padding-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px"><pre style=" width: 827px; height: 405px;background-color:White;white-space:-moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; white-space: pre-wrap; word-wrap: break-word;overflow: auto;"><div><!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
https://www.CodeHighlighter.com/

--><span style="color: #008080;"> 1</span> <span style="color: #0000FF;">using</span><span style="color: #000000;"> Microsoft.WindowsAzure.Storage.Table;
</span><span style="color: #008080;"> 2</span> <span style="color: #000000;">
</span><span style="color: #008080;"> 3</span> <span style="color: #000000;"></span><span style="color: #0000FF;">namespace</span><span style="color: #000000;"> PaaS101.Lesson2
</span><span style="color: #008080;"> 4</span> <span style="color: #000000;">{
</span><span style="color: #008080;"> 5</span> <span style="color: #000000;">    </span><span style="color: #0000FF;">public</span><span style="color: #000000;"> </span><span style="color: #0000FF;">class</span><span style="color: #000000;"> SomeEntity : TableEntity
</span><span style="color: #008080;"> 6</span> <span style="color: #000000;">    {
</span><span style="color: #008080;"> 7</span> <span style="color: #000000;">        </span><span style="color: #0000FF;">public</span><span style="color: #000000;"> </span><span style="color: #0000FF;">string</span><span style="color: #000000;"> SomeRandomNumber { </span><span style="color: #0000FF;">get</span><span style="color: #000000;">; </span><span style="color: #0000FF;">set</span><span style="color: #000000;">; }
</span><span style="color: #008080;"> 8</span> <span style="color: #000000;">        
</span><span style="color: #008080;"> 9</span> <span style="color: #000000;">        </span><span style="color: #0000FF;">public</span><span style="color: #000000;"> SomeEntity(</span><span style="color: #0000FF;">string</span><span style="color: #000000;"> entityPartitionKey,
</span><span style="color: #008080;">10</span> <span style="color: #000000;">            </span><span style="color: #0000FF;">string</span><span style="color: #000000;"> entityRowKey,
</span><span style="color: #008080;">11</span> <span style="color: #000000;">            </span><span style="color: #0000FF;">string</span><span style="color: #000000;"> someRandomNumber)
</span><span style="color: #008080;">12</span> <span style="color: #000000;">        {
</span><span style="color: #008080;">13</span> <span style="color: #000000;">            PartitionKey </span><span style="color: #000000;">=</span><span style="color: #000000;"> entityPartitionKey;
</span><span style="color: #008080;">14</span> <span style="color: #000000;">            RowKey </span><span style="color: #000000;">=</span><span style="color: #000000;"> entityRowKey;
</span><span style="color: #008080;">15</span> <span style="color: #000000;">            SomeRandomNumber </span><span style="color: #000000;">=</span><span style="color: #000000;"> someRandomNumber;
</span><span style="color: #008080;">16</span> <span style="color: #000000;">        }
</span><span style="color: #008080;">17</span> <span style="color: #000000;">
</span><span style="color: #008080;">18</span> <span style="color: #000000;">        </span><span style="color: #0000FF;">public</span><span style="color: #000000;"> SomeEntity() { }
</span><span style="color: #008080;">19</span> <span style="color: #000000;">    }
</span><span style="color: #008080;">20</span> <span style="color: #000000;">}</span></div></pre><!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  https://dunnhq.com --></div>

<h2>The console application</h2>

<p>Very straight forward, an endless loop displaying the menu and waiting for the user to input. A switch statement is there to trigger the right function based on user input. </p>

<div id="scid:9D7513F9-C04C-4721-824A-2B34F0212519:e69a103e-a640-4601-85fc-465d9125df5a" class="wlWriterEditableSmartContent" style="float: none; padding-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px"><pre style=" width: 827px; height: 405px;background-color:White;white-space:-moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; white-space: pre-wrap; word-wrap: break-word;overflow: auto;"><div><!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
https://www.CodeHighlighter.com/

--><span style="color: #008080;"> 1</span> <span style="color: #000000;">        </span><span style="color: #0000FF;">private</span><span style="color: #000000;"> </span><span style="color: #0000FF;">const</span><span style="color: #000000;"> </span><span style="color: #0000FF;">string</span><span style="color: #000000;"> Protocol </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #800000;">&quot;</span><span style="color: #800000;">https</span><span style="color: #800000;">&quot;</span><span style="color: #000000;">;
</span><span style="color: #008080;"> 2</span> <span style="color: #000000;">        </span><span style="color: #0000FF;">private</span><span style="color: #000000;"> </span><span style="color: #0000FF;">const</span><span style="color: #000000;"> </span><span style="color: #0000FF;">string</span><span style="color: #000000;"> AccountName </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #800000;">&quot;</span><span style="color: #800000;">paas101</span><span style="color: #800000;">&quot;</span><span style="color: #000000;">;
</span><span style="color: #008080;"> 3</span> <span style="color: #000000;">        </span><span style="color: #0000FF;">private</span><span style="color: #000000;"> </span><span style="color: #0000FF;">const</span><span style="color: #000000;"> </span><span style="color: #0000FF;">string</span><span style="color: #000000;"> AccountKey </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #800000;">&quot;</span><span style="color: #800000;">XXXXXX-KEY GOES HERE</span><span style="color: #800000;">&quot;</span><span style="color: #000000;">;
</span><span style="color: #008080;"> 4</span> <span style="color: #000000;">        </span><span style="color: #0000FF;">private</span><span style="color: #000000;"> </span><span style="color: #0000FF;">const</span><span style="color: #000000;"> </span><span style="color: #0000FF;">string</span><span style="color: #000000;"> TableName </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #800000;">&quot;</span><span style="color: #800000;">Lesson02</span><span style="color: #800000;">&quot;</span><span style="color: #000000;">;
</span><span style="color: #008080;"> 5</span> <span style="color: #000000;">        </span><span style="color: #0000FF;">private</span><span style="color: #000000;"> </span><span style="color: #0000FF;">const</span><span style="color: #000000;"> </span><span style="color: #0000FF;">string</span><span style="color: #000000;"> PartitionName </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #800000;">&quot;</span><span style="color: #800000;">Lesson02</span><span style="color: #800000;">&quot;</span><span style="color: #000000;">;
</span><span style="color: #008080;"> 6</span> <span style="color: #000000;">        </span><span style="color: #0000FF;">private</span><span style="color: #000000;"> </span><span style="color: #0000FF;">const</span><span style="color: #000000;"> </span><span style="color: #0000FF;">string</span><span style="color: #000000;"> Success </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #800000;">&quot;</span><span style="color: #800000;">\nOperation completed successfuly. Press any key to go back.</span><span style="color: #800000;">&quot;</span><span style="color: #000000;">;
</span><span style="color: #008080;"> 7</span> <span style="color: #000000;">        </span><span style="color: #0000FF;">private</span><span style="color: #000000;"> </span><span style="color: #0000FF;">const</span><span style="color: #000000;"> </span><span style="color: #0000FF;">string</span><span style="color: #000000;"> Fail </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #800000;">&quot;</span><span style="color: #800000;">\nSomething went wrong, press any key to go back.</span><span style="color: #800000;">&quot;</span><span style="color: #000000;">;
</span><span style="color: #008080;"> 8</span> <span style="color: #000000;">
</span><span style="color: #008080;"> 9</span> <span style="color: #000000;">        </span><span style="color: #0000FF;">private</span><span style="color: #000000;"> </span><span style="color: #0000FF;">static</span><span style="color: #000000;"> </span><span style="color: #0000FF;">string</span><span style="color: #000000;"> _connection;
</span><span style="color: #008080;">10</span> <span style="color: #000000;">
</span><span style="color: #008080;">11</span> <span style="color: #000000;">        </span><span style="color: #0000FF;">static</span><span style="color: #000000;"> </span><span style="color: #0000FF;">void</span><span style="color: #000000;"> Main(</span><span style="color: #0000FF;">string</span><span style="color: #000000;">[] args)
</span><span style="color: #008080;">12</span> <span style="color: #000000;">        {
</span><span style="color: #008080;">13</span> <span style="color: #000000;">            _connection </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #0000FF;">string</span><span style="color: #000000;">.Format(</span><span style="color: #800000;">&quot;</span><span style="color: #800000;">DefaultEndpointsProtocol={0};AccountName={1};AccountKey={2}</span><span style="color: #800000;">&quot;</span><span style="color: #000000;">,
</span><span style="color: #008080;">14</span> <span style="color: #000000;">            Protocol, AccountName, AccountKey);
</span><span style="color: #008080;">15</span> <span style="color: #000000;">
</span><span style="color: #008080;">16</span> <span style="color: #000000;">            Console.TreatControlCAsInput </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #0000FF;">true</span><span style="color: #000000;">;
</span><span style="color: #008080;">17</span> <span style="color: #000000;">            Console.Clear();
</span><span style="color: #008080;">18</span> <span style="color: #000000;">
</span><span style="color: #008080;">19</span> <span style="color: #000000;">            </span><span style="color: #0000FF;">while</span><span style="color: #000000;"> (</span><span style="color: #0000FF;">true</span><span style="color: #000000;">)
</span><span style="color: #008080;">20</span> <span style="color: #000000;">            {
</span><span style="color: #008080;">21</span> <span style="color: #000000;">                Console.Clear();
</span><span style="color: #008080;">22</span> <span style="color: #000000;">
</span><span style="color: #008080;">23</span> <span style="color: #000000;">                Console.WriteLine(</span><span style="color: #800000;">&quot;</span><span style="color: #800000;">Welcome to Lesson 02, let's play with Table Storage.</span><span style="color: #800000;">&quot;</span><span style="color: #000000;">);
</span><span style="color: #008080;">24</span> <span style="color: #000000;">                Console.WriteLine(</span><span style="color: #800000;">&quot;</span><span style="color: #800000;">\t1. Insert a new entity</span><span style="color: #800000;">&quot;</span><span style="color: #000000;">);
</span><span style="color: #008080;">25</span> <span style="color: #000000;">                Console.WriteLine(</span><span style="color: #800000;">&quot;</span><span style="color: #800000;">\t2. Update a specific entity</span><span style="color: #800000;">&quot;</span><span style="color: #000000;">);
</span><span style="color: #008080;">26</span> <span style="color: #000000;">                Console.WriteLine(</span><span style="color: #800000;">&quot;</span><span style="color: #800000;">\t3. Delete a specific entity</span><span style="color: #800000;">&quot;</span><span style="color: #000000;">);
</span><span style="color: #008080;">27</span> <span style="color: #000000;">                Console.WriteLine(</span><span style="color: #800000;">&quot;</span><span style="color: #800000;">\t4. Insert a new batch of entities</span><span style="color: #800000;">&quot;</span><span style="color: #000000;">);
</span><span style="color: #008080;">28</span> <span style="color: #000000;">                Console.WriteLine(</span><span style="color: #800000;">&quot;</span><span style="color: #800000;">\t5. Display all entities</span><span style="color: #800000;">&quot;</span><span style="color: #000000;">);
</span><span style="color: #008080;">29</span> <span style="color: #000000;">                Console.WriteLine(</span><span style="color: #800000;">&quot;</span><span style="color: #800000;">\t6. Exit</span><span style="color: #800000;">&quot;</span><span style="color: #000000;">);
</span><span style="color: #008080;">30</span> <span style="color: #000000;">
</span><span style="color: #008080;">31</span> <span style="color: #000000;">                Console.WriteLine(</span><span style="color: #800000;">&quot;</span><span style="color: #800000;">So what do you want to do?</span><span style="color: #800000;">&quot;</span><span style="color: #000000;">);
</span><span style="color: #008080;">32</span> <span style="color: #000000;">
</span><span style="color: #008080;">33</span> <span style="color: #000000;">                </span><span style="color: #0000FF;">int</span><span style="color: #000000;"> input;
</span><span style="color: #008080;">34</span> <span style="color: #000000;">                </span><span style="color: #0000FF;">if</span><span style="color: #000000;"> (</span><span style="color: #000000;">!</span><span style="color: #0000FF;">int</span><span style="color: #000000;">.TryParse(Console.ReadKey().KeyChar.ToString(), </span><span style="color: #0000FF;">out</span><span style="color: #000000;"> input)) </span><span style="color: #0000FF;">return</span><span style="color: #000000;">;
</span><span style="color: #008080;">35</span> <span style="color: #000000;">
</span><span style="color: #008080;">36</span> <span style="color: #000000;">                </span><span style="color: #0000FF;">switch</span><span style="color: #000000;"> (input)
</span><span style="color: #008080;">37</span> <span style="color: #000000;">                {
</span><span style="color: #008080;">38</span> <span style="color: #000000;">                    </span><span style="color: #0000FF;">case</span><span style="color: #000000;"> </span><span style="color: #800080;">1</span><span style="color: #000000;">:
</span><span style="color: #008080;">39</span> <span style="color: #000000;">                        InsertNewEntity();
</span><span style="color: #008080;">40</span> <span style="color: #000000;">                        </span><span style="color: #0000FF;">break</span><span style="color: #000000;">;
</span><span style="color: #008080;">41</span> <span style="color: #000000;">                    </span><span style="color: #0000FF;">case</span><span style="color: #000000;"> </span><span style="color: #800080;">2</span><span style="color: #000000;">:
</span><span style="color: #008080;">42</span> <span style="color: #000000;">                        UpdateSpecificEntity();
</span><span style="color: #008080;">43</span> <span style="color: #000000;">                        </span><span style="color: #0000FF;">break</span><span style="color: #000000;">;
</span><span style="color: #008080;">44</span> <span style="color: #000000;">                    </span><span style="color: #0000FF;">case</span><span style="color: #000000;"> </span><span style="color: #800080;">3</span><span style="color: #000000;">:
</span><span style="color: #008080;">45</span> <span style="color: #000000;">                        DeleteSpecificEntity();
</span><span style="color: #008080;">46</span> <span style="color: #000000;">                        </span><span style="color: #0000FF;">break</span><span style="color: #000000;">;
</span><span style="color: #008080;">47</span> <span style="color: #000000;">                    </span><span style="color: #0000FF;">case</span><span style="color: #000000;"> </span><span style="color: #800080;">4</span><span style="color: #000000;">:
</span><span style="color: #008080;">48</span> <span style="color: #000000;">                        InsertNewBatch();
</span><span style="color: #008080;">49</span> <span style="color: #000000;">                        </span><span style="color: #0000FF;">break</span><span style="color: #000000;">;
</span><span style="color: #008080;">50</span> <span style="color: #000000;">                    </span><span style="color: #0000FF;">case</span><span style="color: #000000;"> </span><span style="color: #800080;">5</span><span style="color: #000000;">:
</span><span style="color: #008080;">51</span> <span style="color: #000000;">                        DisplayAllEntities();
</span><span style="color: #008080;">52</span> <span style="color: #000000;">                        </span><span style="color: #0000FF;">break</span><span style="color: #000000;">;
</span><span style="color: #008080;">53</span> <span style="color: #000000;">                    </span><span style="color: #0000FF;">case</span><span style="color: #000000;"> </span><span style="color: #800080;">6</span><span style="color: #000000;">:
</span><span style="color: #008080;">54</span> <span style="color: #000000;">                        Exit();
</span><span style="color: #008080;">55</span> <span style="color: #000000;">                        </span><span style="color: #0000FF;">break</span><span style="color: #000000;">;
</span><span style="color: #008080;">56</span> <span style="color: #000000;">                }          
</span><span style="color: #008080;">57</span> <span style="color: #000000;">            }
</span><span style="color: #008080;">58</span> <span style="color: #000000;">        }
</span><span style="color: #008080;">59</span> <span style="color: #000000;">
</span><span style="color: #008080;">60</span> <span style="color: #000000;">        </span><span style="color: #0000FF;">private</span><span style="color: #000000;"> </span><span style="color: #0000FF;">static</span><span style="color: #000000;"> </span><span style="color: #0000FF;">void</span><span style="color: #000000;"> Exit()
</span><span style="color: #008080;">61</span> <span style="color: #000000;">        {
</span><span style="color: #008080;">62</span> <span style="color: #000000;">            Environment.Exit(</span><span style="color: #800080;">0</span><span style="color: #000000;">);
</span><span style="color: #008080;">63</span> <span style="color: #000000;">        }</span></div></pre><!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  https://dunnhq.com --></div>

<h2>Insert a new entity</h2>

<div id="scid:9D7513F9-C04C-4721-824A-2B34F0212519:23ff91f9-32bc-4313-9783-88c7d94bf353" class="wlWriterEditableSmartContent" style="float: none; padding-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px"><pre style=" width: 827px; height: 405px;background-color:White;white-space:-moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; white-space: pre-wrap; word-wrap: break-word;overflow: auto;"><div><!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
https://www.CodeHighlighter.com/

--><span style="color: #008080;"> 1</span> <span style="color: #000000;">        </span><span style="color: #0000FF;">private</span><span style="color: #000000;"> </span><span style="color: #0000FF;">static</span><span style="color: #000000;"> </span><span style="color: #0000FF;">void</span><span style="color: #000000;"> InsertNewEntity()
</span><span style="color: #008080;"> 2</span> <span style="color: #000000;">        {
</span><span style="color: #008080;"> 3</span> <span style="color: #000000;">            </span><span style="color: #0000FF;">try</span><span style="color: #000000;">
</span><span style="color: #008080;"> 4</span> <span style="color: #000000;">            {
</span><span style="color: #008080;"> 5</span> <span style="color: #000000;">                var client </span><span style="color: #000000;">=</span><span style="color: #000000;"> CloudStorageAccount.Parse(_connection).CreateCloudTableClient();
</span><span style="color: #008080;"> 6</span> <span style="color: #000000;">
</span><span style="color: #008080;"> 7</span> <span style="color: #000000;">                var table </span><span style="color: #000000;">=</span><span style="color: #000000;"> client.GetTableReference(TableName);
</span><span style="color: #008080;"> 8</span> <span style="color: #000000;">                table.CreateIfNotExists();
</span><span style="color: #008080;"> 9</span> <span style="color: #000000;">
</span><span style="color: #008080;">10</span> <span style="color: #000000;">                table.Execute(TableOperation.Insert(
</span><span style="color: #008080;">11</span> <span style="color: #000000;">                    </span><span style="color: #0000FF;">new</span><span style="color: #000000;"> SomeEntity(PartitionName, Guid.NewGuid().ToString(),
</span><span style="color: #008080;">12</span> <span style="color: #000000;">                        </span><span style="color: #0000FF;">new</span><span style="color: #000000;"> Random().Next(</span><span style="color: #800080;">0</span><span style="color: #000000;">,</span><span style="color: #800080;">9</span><span style="color: #000000;">).ToString())));
</span><span style="color: #008080;">13</span> <span style="color: #000000;">                
</span><span style="color: #008080;">14</span> <span style="color: #000000;">                Console.Clear();
</span><span style="color: #008080;">15</span> <span style="color: #000000;">                Console.WriteLine(Success);
</span><span style="color: #008080;">16</span> <span style="color: #000000;">                Console.ReadKey();
</span><span style="color: #008080;">17</span> <span style="color: #000000;">            }
</span><span style="color: #008080;">18</span> <span style="color: #000000;">            </span><span style="color: #0000FF;">catch</span><span style="color: #000000;"> (StorageException ex)
</span><span style="color: #008080;">19</span> <span style="color: #000000;">            {
</span><span style="color: #008080;">20</span> <span style="color: #000000;">                Console.WriteLine(ex.Message);
</span><span style="color: #008080;">21</span> <span style="color: #000000;">            }
</span><span style="color: #008080;">22</span> <span style="color: #000000;">        }</span></div></pre><!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  https://dunnhq.com --></div>

<p>Once I enter 1 as my choice, the function will be called to create a new entity with a random number between 0 and 9. When done it will display a message, either a success or an exception. Hitting any key will take you back to the main menu.</p>

<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/3582.image_5A8F16E1.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/3582.image_5F00_5A8F16E1.png"><img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/7737.image_thumb_78702B93.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/7737.image_5F00_thumb_5F00_78702B93.png" width="640" height="134" /></a></p>

<p>Below is the newly added entity to the Azure table.</p>

<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/6366.image_60D87E20.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/6366.image_5F00_60D87E20.png"><img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/6138.image_thumb_779A565A.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/6138.image_5F00_thumb_5F00_779A565A.png" width="640" height="139" /></a></p>

<h2>Update a specific entity</h2>

<p>To do that, you will have to do a retrieve operation first to get the entity and then afterwards update it and finally push it back. We will need both the Partition Key and Row Key to be able to retrieve the entity and update it.</p>

<div id="scid:9D7513F9-C04C-4721-824A-2B34F0212519:fb929edf-0947-4fbe-9f66-198bfab0b964" class="wlWriterEditableSmartContent" style="float: none; padding-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px"><pre style=" width: 827px; height: 405px;background-color:White;white-space:-moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; white-space: pre-wrap; word-wrap: break-word;overflow: auto;"><div><!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
https://www.CodeHighlighter.com/

--><span style="color: #008080;"> 1</span> <span style="color: #000000;">        </span><span style="color: #0000FF;">private</span><span style="color: #000000;"> </span><span style="color: #0000FF;">static</span><span style="color: #000000;"> </span><span style="color: #0000FF;">void</span><span style="color: #000000;"> UpdateSpecificEntity()
</span><span style="color: #008080;"> 2</span> <span style="color: #000000;">        {
</span><span style="color: #008080;"> 3</span> <span style="color: #000000;">            </span><span style="color: #0000FF;">try</span><span style="color: #000000;">
</span><span style="color: #008080;"> 4</span> <span style="color: #000000;">            {
</span><span style="color: #008080;"> 5</span> <span style="color: #000000;">                var client </span><span style="color: #000000;">=</span><span style="color: #000000;"> CloudStorageAccount.Parse(_connection).CreateCloudTableClient();
</span><span style="color: #008080;"> 6</span> <span style="color: #000000;">
</span><span style="color: #008080;"> 7</span> <span style="color: #000000;">                var table </span><span style="color: #000000;">=</span><span style="color: #000000;"> client.GetTableReference(TableName);
</span><span style="color: #008080;"> 8</span> <span style="color: #000000;">                table.CreateIfNotExists();
</span><span style="color: #008080;"> 9</span> <span style="color: #000000;">
</span><span style="color: #008080;">10</span> <span style="color: #000000;">                Console.Clear();
</span><span style="color: #008080;">11</span> <span style="color: #000000;">
</span><span style="color: #008080;">12</span> <span style="color: #000000;">                Console.WriteLine(</span><span style="color: #800000;">&quot;</span><span style="color: #800000;">\nEnter partition key: </span><span style="color: #800000;">&quot;</span><span style="color: #000000;">);
</span><span style="color: #008080;">13</span> <span style="color: #000000;">                var partitionKey </span><span style="color: #000000;">=</span><span style="color: #000000;"> Console.ReadLine();
</span><span style="color: #008080;">14</span> <span style="color: #000000;">
</span><span style="color: #008080;">15</span> <span style="color: #000000;">                Console.WriteLine(</span><span style="color: #800000;">&quot;</span><span style="color: #800000;">\nEnter row key: </span><span style="color: #800000;">&quot;</span><span style="color: #000000;">);
</span><span style="color: #008080;">16</span> <span style="color: #000000;">                var rowKey </span><span style="color: #000000;">=</span><span style="color: #000000;"> Console.ReadLine();
</span><span style="color: #008080;">17</span> <span style="color: #000000;">
</span><span style="color: #008080;">18</span> <span style="color: #000000;">                Console.WriteLine(</span><span style="color: #800000;">&quot;</span><span style="color: #800000;">\nEnter some number: </span><span style="color: #800000;">&quot;</span><span style="color: #000000;">);
</span><span style="color: #008080;">19</span> <span style="color: #000000;">                var someNumber </span><span style="color: #000000;">=</span><span style="color: #000000;"> Console.ReadLine();
</span><span style="color: #008080;">20</span> <span style="color: #000000;">
</span><span style="color: #008080;">21</span> <span style="color: #000000;">                var retrieveOperation </span><span style="color: #000000;">=</span><span style="color: #000000;"> TableOperation.Retrieve</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">SomeEntity</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">(partitionKey, rowKey);
</span><span style="color: #008080;">22</span> <span style="color: #000000;">                var retrievedResult </span><span style="color: #000000;">=</span><span style="color: #000000;"> table.Execute(retrieveOperation);
</span><span style="color: #008080;">23</span> <span style="color: #000000;">
</span><span style="color: #008080;">24</span> <span style="color: #000000;">                var updateEntity </span><span style="color: #000000;">=</span><span style="color: #000000;"> (SomeEntity)retrievedResult.Result;
</span><span style="color: #008080;">25</span> <span style="color: #000000;">
</span><span style="color: #008080;">26</span> <span style="color: #000000;">                </span><span style="color: #0000FF;">if</span><span style="color: #000000;"> (updateEntity </span><span style="color: #000000;">!=</span><span style="color: #000000;"> </span><span style="color: #0000FF;">null</span><span style="color: #000000;">)
</span><span style="color: #008080;">27</span> <span style="color: #000000;">                {
</span><span style="color: #008080;">28</span> <span style="color: #000000;">                    updateEntity.SomeRandomNumber </span><span style="color: #000000;">=</span><span style="color: #000000;"> someNumber;
</span><span style="color: #008080;">29</span> <span style="color: #000000;">
</span><span style="color: #008080;">30</span> <span style="color: #000000;">                    var updateOperation </span><span style="color: #000000;">=</span><span style="color: #000000;"> TableOperation.InsertOrReplace(updateEntity);
</span><span style="color: #008080;">31</span> <span style="color: #000000;">                    table.Execute(updateOperation);
</span><span style="color: #008080;">32</span> <span style="color: #000000;">
</span><span style="color: #008080;">33</span> <span style="color: #000000;">                    Console.WriteLine(Success);
</span><span style="color: #008080;">34</span> <span style="color: #000000;">                }
</span><span style="color: #008080;">35</span> <span style="color: #000000;">                </span><span style="color: #0000FF;">else</span><span style="color: #000000;">
</span><span style="color: #008080;">36</span> <span style="color: #000000;">                {
</span><span style="color: #008080;">37</span> <span style="color: #000000;">                    Console.WriteLine(Fail);
</span><span style="color: #008080;">38</span> <span style="color: #000000;">                }
</span><span style="color: #008080;">39</span> <span style="color: #000000;">
</span><span style="color: #008080;">40</span> <span style="color: #000000;">                Console.ReadKey();
</span><span style="color: #008080;">41</span> <span style="color: #000000;">            }
</span><span style="color: #008080;">42</span> <span style="color: #000000;">            </span><span style="color: #0000FF;">catch</span><span style="color: #000000;"> (StorageException ex)
</span><span style="color: #008080;">43</span> <span style="color: #000000;">            {
</span><span style="color: #008080;">44</span> <span style="color: #000000;">                Console.WriteLine(ex.Message);
</span><span style="color: #008080;">45</span> <span style="color: #000000;">            }          
</span><span style="color: #008080;">46</span> <span style="color: #000000;">        }</span></div></pre><!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  https://dunnhq.com --></div>

<p>In the below screenshots you can see me updating one of the entities with Partition Key “Lesson02” and RowKey “aab27b1a-4a97-44b4-994c-daef89865d9a”.</p>

<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/1374.image_546CEBA8.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/1374.image_5F00_546CEBA8.png"><img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/3324.image_thumb_51C6C0A8.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/3324.image_5F00_thumb_5F00_51C6C0A8.png" width="640" height="273" /></a></p>

<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/4745.image_337E9A63.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/4745.image_5F00_337E9A63.png"><img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/4784.image_thumb_205D6DB7.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/4784.image_5F00_thumb_5F00_205D6DB7.png" width="640" height="221" /></a></p>

<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/6646.image_7272ABAF.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/6646.image_5F00_7272ABAF.png"><img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/4666.image_thumb_43AF83BE.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/4666.image_5F00_thumb_5F00_43AF83BE.png" width="640" height="272" /></a></p>

<h2>Delete a specific entity</h2>

<p>Delete shares the same logic as updates. You will have to retrieve the entity before deleting it.</p>

<div id="scid:9D7513F9-C04C-4721-824A-2B34F0212519:435cf293-a379-4bd3-8840-3e46cc474479" class="wlWriterEditableSmartContent" style="float: none; padding-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px"><pre style=" width: 827px; height: 405px;background-color:White;white-space:-moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; white-space: pre-wrap; word-wrap: break-word;overflow: auto;"><div><!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
https://www.CodeHighlighter.com/

--><span style="color: #008080;"> 1</span> <span style="color: #000000;">        </span><span style="color: #0000FF;">private</span><span style="color: #000000;"> </span><span style="color: #0000FF;">static</span><span style="color: #000000;"> </span><span style="color: #0000FF;">void</span><span style="color: #000000;"> DeleteSpecificEntity()
</span><span style="color: #008080;"> 2</span> <span style="color: #000000;">        {
</span><span style="color: #008080;"> 3</span> <span style="color: #000000;">            </span><span style="color: #0000FF;">try</span><span style="color: #000000;">
</span><span style="color: #008080;"> 4</span> <span style="color: #000000;">            {
</span><span style="color: #008080;"> 5</span> <span style="color: #000000;">                var client </span><span style="color: #000000;">=</span><span style="color: #000000;"> CloudStorageAccount.Parse(_connection).CreateCloudTableClient();
</span><span style="color: #008080;"> 6</span> <span style="color: #000000;">
</span><span style="color: #008080;"> 7</span> <span style="color: #000000;">                var table </span><span style="color: #000000;">=</span><span style="color: #000000;"> client.GetTableReference(TableName);
</span><span style="color: #008080;"> 8</span> <span style="color: #000000;">                table.CreateIfNotExists();
</span><span style="color: #008080;"> 9</span> <span style="color: #000000;">
</span><span style="color: #008080;">10</span> <span style="color: #000000;">                Console.Clear();
</span><span style="color: #008080;">11</span> <span style="color: #000000;">
</span><span style="color: #008080;">12</span> <span style="color: #000000;">                Console.WriteLine(</span><span style="color: #800000;">&quot;</span><span style="color: #800000;">\nEnter partition key: </span><span style="color: #800000;">&quot;</span><span style="color: #000000;">);
</span><span style="color: #008080;">13</span> <span style="color: #000000;">                var partitionKey </span><span style="color: #000000;">=</span><span style="color: #000000;"> Console.ReadLine();
</span><span style="color: #008080;">14</span> <span style="color: #000000;">
</span><span style="color: #008080;">15</span> <span style="color: #000000;">                Console.WriteLine(</span><span style="color: #800000;">&quot;</span><span style="color: #800000;">\nEnter row key: </span><span style="color: #800000;">&quot;</span><span style="color: #000000;">);
</span><span style="color: #008080;">16</span> <span style="color: #000000;">                var rowKey </span><span style="color: #000000;">=</span><span style="color: #000000;"> Console.ReadLine();
</span><span style="color: #008080;">17</span> <span style="color: #000000;">
</span><span style="color: #008080;">18</span> <span style="color: #000000;">                var retrieveOperation </span><span style="color: #000000;">=</span><span style="color: #000000;"> TableOperation.Retrieve</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">SomeEntity</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">(partitionKey, rowKey);
</span><span style="color: #008080;">19</span> <span style="color: #000000;">                var retrievedResult </span><span style="color: #000000;">=</span><span style="color: #000000;"> table.Execute(retrieveOperation);
</span><span style="color: #008080;">20</span> <span style="color: #000000;">
</span><span style="color: #008080;">21</span> <span style="color: #000000;">                var deleteEntity </span><span style="color: #000000;">=</span><span style="color: #000000;"> (SomeEntity)retrievedResult.Result;
</span><span style="color: #008080;">22</span> <span style="color: #000000;">
</span><span style="color: #008080;">23</span> <span style="color: #000000;">                </span><span style="color: #0000FF;">if</span><span style="color: #000000;"> (deleteEntity </span><span style="color: #000000;">!=</span><span style="color: #000000;"> </span><span style="color: #0000FF;">null</span><span style="color: #000000;">)
</span><span style="color: #008080;">24</span> <span style="color: #000000;">                {
</span><span style="color: #008080;">25</span> <span style="color: #000000;">                    var deleteOperation </span><span style="color: #000000;">=</span><span style="color: #000000;"> TableOperation.Delete(deleteEntity);
</span><span style="color: #008080;">26</span> <span style="color: #000000;">                    table.Execute(deleteOperation);
</span><span style="color: #008080;">27</span> <span style="color: #000000;">                    
</span><span style="color: #008080;">28</span> <span style="color: #000000;">                    Console.WriteLine(Success);
</span><span style="color: #008080;">29</span> <span style="color: #000000;">                }
</span><span style="color: #008080;">30</span> <span style="color: #000000;">                </span><span style="color: #0000FF;">else</span><span style="color: #000000;">
</span><span style="color: #008080;">31</span> <span style="color: #000000;">                {
</span><span style="color: #008080;">32</span> <span style="color: #000000;">                    Console.WriteLine(Fail);
</span><span style="color: #008080;">33</span> <span style="color: #000000;">                }
</span><span style="color: #008080;">34</span> <span style="color: #000000;">
</span><span style="color: #008080;">35</span> <span style="color: #000000;">                Console.ReadKey();
</span><span style="color: #008080;">36</span> <span style="color: #000000;">            }
</span><span style="color: #008080;">37</span> <span style="color: #000000;">            </span><span style="color: #0000FF;">catch</span><span style="color: #000000;"> (StorageException ex)
</span><span style="color: #008080;">38</span> <span style="color: #000000;">            {
</span><span style="color: #008080;">39</span> <span style="color: #000000;">                Console.WriteLine(ex.Message);
</span><span style="color: #008080;">40</span> <span style="color: #000000;">            }
</span><span style="color: #008080;">41</span> <span style="color: #000000;">        }</span></div></pre><!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  https://dunnhq.com --></div>

<p>In the below screenshots you can see me deleting one of the entities. Remember, you will always need the Partition Key and Row Key to retrieve entities.</p>

<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/3426.image_2084A9BD.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/3426.image_5F00_2084A9BD.png"><img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/3056.image_thumb_57618EB4.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/3056.image_5F00_thumb_5F00_57618EB4.png" width="640" height="176" /></a></p>

<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/4478.image_4D9C273C.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/4478.image_5F00_4D9C273C.png"><img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/1145.image_thumb_1D08A984.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/1145.image_5F00_thumb_5F00_1D08A984.png" width="640" height="277" /></a></p>

<h2>Insert a new batch of entities</h2>

<p>To insert a batch of entities, you will have to use a batch operation. In the below code we will insert 10 new entities every time the function is called.</p>

<div id="scid:9D7513F9-C04C-4721-824A-2B34F0212519:ed45f9a9-9ddf-4e3c-b0b2-8516ff587379" class="wlWriterEditableSmartContent" style="float: none; padding-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px"><pre style=" width: 827px; height: 405px;background-color:White;white-space:-moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; white-space: pre-wrap; word-wrap: break-word;overflow: auto;"><div><!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
https://www.CodeHighlighter.com/

--><span style="color: #008080;"> 1</span> <span style="color: #000000;">        </span><span style="color: #0000FF;">private</span><span style="color: #000000;"> </span><span style="color: #0000FF;">static</span><span style="color: #000000;"> </span><span style="color: #0000FF;">void</span><span style="color: #000000;"> InsertNewBatch()
</span><span style="color: #008080;"> 2</span> <span style="color: #000000;">        {
</span><span style="color: #008080;"> 3</span> <span style="color: #000000;">            </span><span style="color: #0000FF;">try</span><span style="color: #000000;">
</span><span style="color: #008080;"> 4</span> <span style="color: #000000;">            {
</span><span style="color: #008080;"> 5</span> <span style="color: #000000;">                var client </span><span style="color: #000000;">=</span><span style="color: #000000;"> CloudStorageAccount.Parse(_connection).CreateCloudTableClient();
</span><span style="color: #008080;"> 6</span> <span style="color: #000000;">
</span><span style="color: #008080;"> 7</span> <span style="color: #000000;">                var table </span><span style="color: #000000;">=</span><span style="color: #000000;"> client.GetTableReference(TableName);
</span><span style="color: #008080;"> 8</span> <span style="color: #000000;">                table.CreateIfNotExists();
</span><span style="color: #008080;"> 9</span> <span style="color: #000000;">
</span><span style="color: #008080;">10</span> <span style="color: #000000;">                var batchOperation </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #0000FF;">new</span><span style="color: #000000;"> TableBatchOperation();
</span><span style="color: #008080;">11</span> <span style="color: #000000;">                </span><span style="color: #0000FF;">for</span><span style="color: #000000;"> (var i </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #800080;">0</span><span style="color: #000000;">; i </span><span style="color: #000000;">&lt;</span><span style="color: #000000;"> </span><span style="color: #800080;">10</span><span style="color: #000000;">; i</span><span style="color: #000000;">++</span><span style="color: #000000;">)
</span><span style="color: #008080;">12</span> <span style="color: #000000;">                {
</span><span style="color: #008080;">13</span> <span style="color: #000000;">                    batchOperation.Insert(</span><span style="color: #0000FF;">new</span><span style="color: #000000;"> SomeEntity(PartitionName, Guid.NewGuid().ToString(),i.ToString()));
</span><span style="color: #008080;">14</span> <span style="color: #000000;">                }
</span><span style="color: #008080;">15</span> <span style="color: #000000;">
</span><span style="color: #008080;">16</span> <span style="color: #000000;">                table.ExecuteBatch(batchOperation);
</span><span style="color: #008080;">17</span> <span style="color: #000000;">
</span><span style="color: #008080;">18</span> <span style="color: #000000;">                Console.Clear();
</span><span style="color: #008080;">19</span> <span style="color: #000000;">                Console.WriteLine(Success);
</span><span style="color: #008080;">20</span> <span style="color: #000000;">                Console.ReadKey();
</span><span style="color: #008080;">21</span> <span style="color: #000000;">            }
</span><span style="color: #008080;">22</span> <span style="color: #000000;">            </span><span style="color: #0000FF;">catch</span><span style="color: #000000;"> (StorageException ex)
</span><span style="color: #008080;">23</span> <span style="color: #000000;">            {
</span><span style="color: #008080;">24</span> <span style="color: #000000;">                Console.WriteLine(ex.Message);
</span><span style="color: #008080;">25</span> <span style="color: #000000;">            }
</span><span style="color: #008080;">26</span> <span style="color: #000000;">        }</span></div></pre><!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  https://dunnhq.com --></div>

<p>Once done it will display a message, either a success or an exception. Hitting any key will take you back to the main menu.</p>

<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/0576.image_312456BE.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/0576.image_5F00_312456BE.png"><img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/4237.image_thumb_0C269645.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/4237.image_5F00_thumb_5F00_0C269645.png" width="640" height="134" /></a></p>

<h2>Display all entities of single partition</h2>

<p>Finally, we will use LINQ to query the table and get the entities of a specific partition. Up till now, you can do direct hits on string comparisons with the queries. You can not do stuff like Contains. I have been in project were we loaded tables into cache and did our LINQ queries there with Contains etc. Another option would be using Azure Search.</p>

<div id="scid:9D7513F9-C04C-4721-824A-2B34F0212519:c54a3011-e474-41b1-b843-3b7529388a9c" class="wlWriterEditableSmartContent" style="float: none; padding-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px"><pre style=" width: 827px; height: 405px;background-color:White;white-space:-moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; white-space: pre-wrap; word-wrap: break-word;overflow: auto;"><div><!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
https://www.CodeHighlighter.com/

--><span style="color: #008080;"> 1</span> <span style="color: #000000;">        </span><span style="color: #0000FF;">private</span><span style="color: #000000;"> </span><span style="color: #0000FF;">static</span><span style="color: #000000;"> </span><span style="color: #0000FF;">void</span><span style="color: #000000;"> DisplayAllEntities()
</span><span style="color: #008080;"> 2</span> <span style="color: #000000;">        {
</span><span style="color: #008080;"> 3</span> <span style="color: #000000;">            </span><span style="color: #0000FF;">try</span><span style="color: #000000;">
</span><span style="color: #008080;"> 4</span> <span style="color: #000000;">            {
</span><span style="color: #008080;"> 5</span> <span style="color: #000000;">                var client </span><span style="color: #000000;">=</span><span style="color: #000000;"> CloudStorageAccount.Parse(_connection).CreateCloudTableClient();
</span><span style="color: #008080;"> 6</span> <span style="color: #000000;">
</span><span style="color: #008080;"> 7</span> <span style="color: #000000;">                var table </span><span style="color: #000000;">=</span><span style="color: #000000;"> client.GetTableReference(TableName);
</span><span style="color: #008080;"> 8</span> <span style="color: #000000;">                table.CreateIfNotExists();
</span><span style="color: #008080;"> 9</span> <span style="color: #000000;">
</span><span style="color: #008080;">10</span> <span style="color: #000000;">                var query </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #0000FF;">new</span><span style="color: #000000;"> TableQuery</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">SomeEntity</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">().Where(
</span><span style="color: #008080;">11</span> <span style="color: #000000;">                    TableQuery.GenerateFilterCondition(</span><span style="color: #800000;">&quot;</span><span style="color: #800000;">PartitionKey</span><span style="color: #800000;">&quot;</span><span style="color: #000000;">, QueryComparisons.Equal, PartitionName));
</span><span style="color: #008080;">12</span> <span style="color: #000000;">                var list </span><span style="color: #000000;">=</span><span style="color: #000000;"> table.ExecuteQuery(query).ToList();
</span><span style="color: #008080;">13</span> <span style="color: #000000;">
</span><span style="color: #008080;">14</span> <span style="color: #000000;">                Console.Clear();
</span><span style="color: #008080;">15</span> <span style="color: #000000;">
</span><span style="color: #008080;">16</span> <span style="color: #000000;">                </span><span style="color: #0000FF;">foreach</span><span style="color: #000000;"> (var someEntity </span><span style="color: #0000FF;">in</span><span style="color: #000000;"> list)
</span><span style="color: #008080;">17</span> <span style="color: #000000;">                {
</span><span style="color: #008080;">18</span> <span style="color: #000000;">                    Console.WriteLine(</span><span style="color: #800000;">&quot;</span><span style="color: #800000;">{0}\t{1}\t{2}</span><span style="color: #800000;">&quot;</span><span style="color: #000000;">, someEntity.Timestamp, someEntity.RowKey, someEntity.SomeRandomNumber);
</span><span style="color: #008080;">19</span> <span style="color: #000000;">                }
</span><span style="color: #008080;">20</span> <span style="color: #000000;">
</span><span style="color: #008080;">21</span> <span style="color: #000000;">                Console.WriteLine(Success);
</span><span style="color: #008080;">22</span> <span style="color: #000000;">                Console.ReadKey();
</span><span style="color: #008080;">23</span> <span style="color: #000000;">            }
</span><span style="color: #008080;">24</span> <span style="color: #000000;">            </span><span style="color: #0000FF;">catch</span><span style="color: #000000;"> (StorageException ex)
</span><span style="color: #008080;">25</span> <span style="color: #000000;">            {
</span><span style="color: #008080;">26</span> <span style="color: #000000;">                Console.WriteLine(ex.Message);
</span><span style="color: #008080;">27</span> <span style="color: #000000;">            }
</span><span style="color: #008080;">28</span> <span style="color: #000000;">        }</span></div></pre><!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  https://dunnhq.com --></div>

<p>In the screenshot below you can see the list of all entities sitting in the “Lesson02” partition.</p>

<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/7317.image_50698E42.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/7317.image_5F00_50698E42.png"><img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/3566.image_thumb_71E8BDD1.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/3566.image_5F00_thumb_5F00_71E8BDD1.png" width="640" height="274" /></a></p>

<p>aaaand we are done with the lesson. Let me know if you have any questions or comments <img class="wlEmoticon wlEmoticon-smile" style="border-top-style: none; border-bottom-style: none; border-right-style: none; border-left-style: none" alt="Smile" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/8867.wlEmoticon-smile_0BA5920C.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/8867.wlEmoticon_2D00_smile_5F00_0BA5920C.png" /></p>]]></content:encoded>
    </item>
    <item>
      <title>Starting Azure Platform as a Service (PaaS) Development 101 Series: Lesson 1 of n – Web Jobs</title>
      <link>https://docs.microsoft.com/archive/blogs/balsharfi/starting-azure-platform-as-a-service-paas-development-101-series-lesson-1-of-n-web-jobs</link>
      <pubDate>Sat, 20 Sep 2014 07:11:39 GMT</pubDate>
      <dc:creator><![CDATA[BALSHARFI]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/balsharfi/2014/09/20/starting-azure-platform-as-a-service-paas-development-101-series-lesson-1-of-n-web-jobs/</guid>
      <description><![CDATA[There is a lot of content available to develop for Azure, if you are looking for baby steps this...]]></description>
      <content:encoded><![CDATA[<p>There is a lot of content available to develop for Azure, if you are looking for baby steps this series of lessons is defiantly not for you. However, if you are developer, regardless of background or platform and looking quickly to get your hands dirty, then you are at the right place. I will not be setting up a fixed or target number of lessons, I will share ideas along the way and keep adding more. This does not mean I don’t have an agenda, on the contrary! I started by asking myself about developer tasks during the life cycle of building a PaaS solution on Azure. </p>  <p>As I mentioned earlier, this a special series that focuses on a point, a task, a recipe. So don’t be surprised if we wont be building fancy samples, I am here to help you get on your feet with PaaS development on Azure.</p>  <h2>What’s up for today?</h2>  <p>I’ve been doing Azure PaaS development for a while now, and I can tell you that the best place to start learning the robes are Web Jobs. Let me quiz you quickly here: What would you do if you want to run background tasks, executable files, or even scripts on Azure? I bet you would say: let’s spin a new VM and put all that stuff there. Or at least that’s what we used to say before Web Jobs came to life. So in a nutshell, you can schedule and configure on demand executable applications and scripts to run on Azure without spinning a new VM <img class="wlEmoticon wlEmoticon-winkingsmile" style="border-top-style: none; border-bottom-style: none; border-right-style: none; border-left-style: none" alt="Winking smile" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/2313.wlEmoticon-winkingsmile_2555D9A6.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/2313.wlEmoticon_2D00_winkingsmile_5F00_2555D9A6.png" />&#160;</p>  <h2>Let’s get cracking</h2>  <p>Below is a simple command line application that will print a time stamp. We will create a Web Job and configure it to run this application every one minute. Yeah I know a bit cheesy, but hey if you can come up with more meaningful examples, fire up the comments section below <img class="wlEmoticon wlEmoticon-hotsmile" style="border-top-style: none; border-bottom-style: none; border-right-style: none; border-left-style: none" alt="Hot smile" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/3817.wlEmoticon-hotsmile_675C48E7.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/3817.wlEmoticon_2D00_hotsmile_5F00_675C48E7.png" /></p>  <div id="scid:9D7513F9-C04C-4721-824A-2B34F0212519:3259fe91-75a3-4978-8f91-ee9333e60dc2" class="wlWriterEditableSmartContent" style="float: none; padding-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px"><pre style=" width: 827px; height: 236px;background-color:White;white-space:-moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; white-space: pre-wrap; word-wrap: break-word;overflow: auto;"><div><!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
https://www.CodeHighlighter.com/

--><span style="color: #008080;"> 1</span> <span style="color: #0000FF;">using</span><span style="color: #000000;"> System;
</span><span style="color: #008080;"> 2</span> <span style="color: #000000;">
</span><span style="color: #008080;"> 3</span> <span style="color: #000000;"></span><span style="color: #0000FF;">namespace</span><span style="color: #000000;"> PaaS101.Lesson1
</span><span style="color: #008080;"> 4</span> <span style="color: #000000;">{
</span><span style="color: #008080;"> 5</span> <span style="color: #000000;">    </span><span style="color: #0000FF;">class</span><span style="color: #000000;"> Program
</span><span style="color: #008080;"> 6</span> <span style="color: #000000;">    {
</span><span style="color: #008080;"> 7</span> <span style="color: #000000;">        </span><span style="color: #0000FF;">static</span><span style="color: #000000;"> </span><span style="color: #0000FF;">void</span><span style="color: #000000;"> Main(</span><span style="color: #0000FF;">string</span><span style="color: #000000;">[] args)
</span><span style="color: #008080;"> 8</span> <span style="color: #000000;">        {
</span><span style="color: #008080;"> 9</span> <span style="color: #000000;">            Console.WriteLine(DateTime.Now);
</span><span style="color: #008080;">10</span> <span style="color: #000000;">        }
</span><span style="color: #008080;">11</span> <span style="color: #000000;">    }
</span><span style="color: #008080;">12</span> <span style="color: #000000;">}</span></div></pre><!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  https://dunnhq.com --></div>

<p>Launch the Azure portal and head to Web Sites. Yep that’s right, Web Jobs sit inside Azure Websites and yes you can have multiple web jobs in the same Azure Website. Let’s create a new Website. I will use the same website through all the lessons. I called it paas101 and it will sit on <a href="https://paas101.azurewebsites.net">https://paas101.azurewebsites.net</a>.</p>

<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/0640.image_704BDB26.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/0640.image_5F00_704BDB26.png"><img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/4621.image_thumb_3D7E6563.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/4621.image_5F00_thumb_5F00_3D7E6563.png" width="640" height="311" /></a></p>

<p>Once created, click on paas101, select WEBJOBS tab, and create a new job.</p>

<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/4336.image_4F5D89E1.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/4336.image_5F00_4F5D89E1.png"><img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/0042.image_thumb_3112D2EB.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/0042.image_5F00_thumb_5F00_3112D2EB.png" width="556" height="294" /></a></p>

<p>Now you will have to compress your executable and their dependencies in one zip file. Since we decided to run it every minute then select “Run on a schedule” and choose your schedule region. Mine is “West Europe”.</p>

<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/7737.image_40B56EAD.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/7737.image_5F00_40B56EAD.png"><img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/4532.image_thumb_6B906370.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/4532.image_5F00_thumb_5F00_6B906370.png" width="504" height="480" /></a></p>

<p>Moving on to the next step, select “Recurring Job” for recurrence and set it for one minute. Looks like you have to specify and ending time. I just set it to 11:30PM today my time.</p>

<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/1832.image_3AFCE5B8.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/1832.image_5F00_3AFCE5B8.png"><img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/4011.image_thumb_65D7DA7B.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/4011.image_5F00_thumb_5F00_65D7DA7B.png" width="505" height="480" /></a></p>

<p>Once its done, you will notice that the status is set to “Enabled”. Let’s see how was the execution of our Web Job going. One of the columns is called “LOGS”. Navigate to the URL.</p>

<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/0741.image_313A0EF1.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/0741.image_5F00_313A0EF1.png"><img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/3312.image_thumb_3546ED74.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/3312.image_5F00_thumb_5F00_3546ED74.png" width="640" height="146" /></a></p>

<p>This is the logs URL for our Web Job: <a title="https://paas101.scm.azurewebsites.net/azurejobs/#/jobs/triggered/PrintTimeEveryOneMinute" href="https://paas101.scm.azurewebsites.net/azurejobs/#/jobs/triggered/PrintTimeEveryOneMinute">https://paas101.scm.azurewebsites.net/azurejobs/#/jobs/triggered/PrintTimeEveryOneMinute</a>. Once you land on the logs page you will notice the previous runs below marked with a status:</p>

<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/8055.image_0FDCFA06.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/8055.image_5F00_0FDCFA06.png"><img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/3201.image_thumb_488A34C4.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/3201.image_5F00_thumb_5F00_488A34C4.png" width="640" height="243" /></a></p>

<p>Clicking on the web job will open the Web Job run details. As you can see from the screenshot below, the web job did print the time <img class="wlEmoticon wlEmoticon-smile" style="border-top-style: none; border-bottom-style: none; border-right-style: none; border-left-style: none" alt="Smile" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/6443.wlEmoticon-smile_17F6B70C.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/6443.wlEmoticon_2D00_smile_5F00_17F6B70C.png" /></p>

<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/1462.image_01376F83.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/1462.image_5F00_01376F83.png"><img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/6281.image_thumb_4FCE1C91.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/6281.image_5F00_thumb_5F00_4FCE1C91.png" width="640" height="439" /></a></p>

<p>I hope you enjoyed the quick 101. Let me know if you have any questions or comments. Until next lesson <img class="wlEmoticon wlEmoticon-smile" style="border-top-style: none; border-bottom-style: none; border-right-style: none; border-left-style: none" alt="Smile" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/6443.wlEmoticon-smile_17F6B70C.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/6443.wlEmoticon_2D00_smile_5F00_17F6B70C.png" /></p>]]></content:encoded>
    </item>
    <item>
      <title>Calendar Item Aggregates with Exchange Web Services (EWS) Managed API 2.2</title>
      <link>https://docs.microsoft.com/archive/blogs/balsharfi/calendar-item-aggregates-with-exchange-web-services-ews-managed-api-2-2</link>
      <pubDate>Thu, 11 Sep 2014 07:22:16 GMT</pubDate>
      <dc:creator><![CDATA[BALSHARFI]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/balsharfi/2014/09/11/calendar-item-aggregates-with-exchange-web-services-ews-managed-api-2-2/</guid>
      <description><![CDATA[I love group calendars, who does not?  Yet when you think about it, you would need to have dedicated...]]></description>
      <content:encoded><![CDATA[<p align="justify">I love group calendars, who does not? <img class="wlEmoticon wlEmoticon-smile" style="border-top-style: none; border-bottom-style: none; border-right-style: none; border-left-style: none" alt="Smile" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/6675.wlEmoticon-smile_6CC0572A.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/6675.wlEmoticon_2D00_smile_5F00_6CC0572A.png" /> Yet when you think about it, you would need to have dedicated calendars for specific purpose and I would imagine a nightmare afterwards to track. So, what about getting around this and instead asking people to create blockers on their calendars with specific subject format, type, or even details? This way you can use EWS to aggregate results from the various calendars and display them in one place.</p>  <h2 align="justify">What’s cooking for today?</h2>  <p align="justify">We will use EWS managed API to get a list of calendar items for a specific group of people and put it in a table. To start, you will have to download and install EWS Managed API. At the time of writing this article, the latest version is 2.2 and can be found here: <a title="https://www.microsoft.com/en-us/download/details.aspx?id=42951" href="https://www.microsoft.com/en-us/download/details.aspx?id=42951" target="_blank">https://www.microsoft.com/en-us/download/details.aspx?id=42951</a>. Once it’s installed, we are ready to get some code on. So go ahead and create your project. I will use Web Forms, nothing personal but I could bind quickly to a ASP.NET GridView. You will need to add the API assembly to the project from here: <font face="Courier New">C:\Program Files\Microsoft\Exchange\Web Services\2.2</font>. You will need to add a using statement for this namespace: <font face="Courier New">Microsoft.Exchange.WebServices.Data</font>.</p>  <div id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:8afa5203-b2b0-4ac3-a321-291815cd470d" class="wlWriterEditableSmartContent" style="float: none; padding-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px"> <div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt"> <div style="background: #fff; max-height: 300px; overflow: auto"> <ol style="background: #ffffff; margin: 0; padding: 0 0 0 5px;"> <li><span style="background:#ffffff;color:#0000ff">using</span><span style="background:#ffffff;color:#000000"> Microsoft.Exchange.WebServices.Data;</span></li> <li style="background: #f3f3f3"><span style="background:#ffffff;color:#0000ff">using</span><span style="background:#ffffff;color:#000000"> System;</span></li> <li><span style="background:#ffffff;color:#0000ff">using</span><span style="background:#ffffff;color:#000000"> System.Collections.Generic;</span></li> <li style="background: #f3f3f3"><span style="background:#ffffff;color:#0000ff">using</span><span style="background:#ffffff;color:#000000"> System.Data;</span></li> </ol> </div> </div> </div>  <h2 align="justify">&#160;</h2>  <h2 align="justify">Connect me to EWS</h2>  <p align="justify">Since this is a Web Form, I will have my fun on <font face="Courier New">Page_Load</font>. I created a function called <font face="Courier New">Populate Appointments</font> to run the query for me. Notice that I defined the time period of the next 60 days. So logically I will get all appointments that will take place in the next 60 days for a specific group of people.</p>  <p align="justify"></p>  <div id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:f2a5b8df-f682-4937-a2a9-b0b8754b03a2" class="wlWriterEditableSmartContent" style="float: none; padding-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px"> <div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt"> <div style="background: #fff; max-height: 300px; overflow: auto"> <ol style="background: #ffffff; margin: 0; padding: 0 0 0 5px; white-space: nowrap"> <li><span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#0000ff">protected</span><span style="background:#ffffff;color:#000000"> </span><span style="background:#ffffff;color:#0000ff">void</span><span style="background:#ffffff;color:#000000"> Page_Load(</span><span style="background:#ffffff;color:#0000ff">object</span><span style="background:#ffffff;color:#000000"> sender, </span><span style="background:#ffffff;color:#2b91af">EventArgs</span><span style="background:#ffffff;color:#000000"> e)</span></li> <li style="background: #f3f3f3"><span style="background:#ffffff;color:#000000">{</span></li> <li>    <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#008000">//Let&#39;s create a reference to an Exchange service, I am running 2010 with SP2 in my Azure Lab</span></li> <li style="background: #f3f3f3">    <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#0000ff">var</span><span style="background:#ffffff;color:#000000"> service = </span><span style="background:#ffffff;color:#0000ff">new</span><span style="background:#ffffff;color:#000000"> </span><span style="background:#ffffff;color:#2b91af">ExchangeService</span><span style="background:#ffffff;color:#000000">(</span><span style="background:#ffffff;color:#2b91af">ExchangeVersion</span><span style="background:#ffffff;color:#000000">.Exchange2010_SP2);</span></li> <li>&nbsp;</li> <li style="background: #f3f3f3">    <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#008000">//and use Auto Discover to figure out where Exchange sits</span></li> <li>    <span style="background:#ffffff;color:#000000">service.AutodiscoverUrl(</span><span style="background:#ffffff;color:#a31515">&quot;your@li.as&quot;</span><span style="background:#ffffff;color:#000000">, RedirectionUrlValidationCallback);</span></li> <li style="background: #f3f3f3">    <span style="background:#ffffff;color:#000000">service.UseDefaultCredentials = </span><span style="background:#ffffff;color:#0000ff">true</span><span style="background:#ffffff;color:#000000">;</span></li> <li>&nbsp;</li> <li style="background: #f3f3f3">    <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#008000">//Define the query period time span</span></li> <li>    <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#0000ff">var</span><span style="background:#ffffff;color:#000000"> startDate = </span><span style="background:#ffffff;color:#2b91af">DateTime</span><span style="background:#ffffff;color:#000000">.Now;</span></li> <li style="background: #f3f3f3">    <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#0000ff">var</span><span style="background:#ffffff;color:#000000"> endDate = startDate.AddDays(60);</span></li> <li>&nbsp;</li> <li style="background: #f3f3f3">    <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#008000">//Call the Popuolate Appoinments fuctions, which I will explain in a bit :-)</span></li> <li>    <span style="background:#ffffff;color:#000000">PopulateAppointments(service, GetAttendees(), GetAvailabilityOptions(),</span></li> <li style="background: #f3f3f3">       <span style="background:#ffffff;color:#000000">startDate, endDate);</span></li> <li><span style="background:#ffffff;color:#000000">}</span></li> </ol> </div> </div> </div>    <p align="justify">The <font face="Courier New">PopulateAppointments</font> function requires the following parameters:</p>  <ul>   <li>     <div align="justify">Instance of the Exchange Service which we defined at the beginning of the code block</div>   </li>    <li>     <div align="justify">The group of people I want to query there calendars, To loosely-couple it, I created another function for you that returns the list of people called <font face="Courier New">GetAttendees</font>. It will return an <font face="Courier New">IReadOnlyList</font> of AttendeeInfo (<font face="Courier New">Microsoft.Exchange.WebServices.Data.AttendeeInfo)</font>.</div>   </li>    <li>     <div align="justify">A list of the types of meetings/empty slots to look for. The logic is kind of twisted here, yeah I get it. I could not find a way to send a query to get current meetings of a specific person, but if you do a lookup to schedule a meeting request you will get both empty and filled slots which is what we are looking for <img class="wlEmoticon wlEmoticon-hotsmile" style="border-top-style: none; border-bottom-style: none; border-right-style: none; border-left-style: none" alt="Hot smile" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/7120.wlEmoticon-hotsmile_0ECA0337.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/7120.wlEmoticon_2D00_hotsmile_5F00_0ECA0337.png" /></div>   </li>    <li>     <div align="justify">The time span, I used here 60 days. Note that by max you can do 62 days for a single request to EWS. I did not find this documented, I learned it when I got the following exception: (I used 90 days)</div>   </li> </ul>  <p align="justify"><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/5516.image_49B13600.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/5516.image_5F00_49B13600.png"><img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/0272.image_thumb_34C2443E.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/0272.image_5F00_thumb_5F00_34C2443E.png" width="640" height="394" /></a>&#160;</p>  <p align="justify">Finally, handle the redirection to validate if the callback is happening over a secure connection. I copied it from here: <a title="https://msdn.microsoft.com/en-us/library/office/dn567668(v=exchg.150).aspx" href="https://msdn.microsoft.com/en-us/library/office/dn567668(v=exchg.150).aspx">https://msdn.microsoft.com/en-us/library/office/dn567668(v=exchg.150).aspx</a></p>    <div id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:f86a08ff-6a28-4002-9a00-cda72dce34ea" class="wlWriterEditableSmartContent" style="float: none; padding-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px"> <div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt"> <div style="background: #fff; max-height: 300px; overflow: auto"> <ol style="background: #ffffff; margin: 0; padding: 0 0 0 5px;"> <li><span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#0000ff">private</span><span style="background:#ffffff;color:#000000"> </span><span style="background:#ffffff;color:#0000ff">static</span><span style="background:#ffffff;color:#000000"> </span><span style="background:#ffffff;color:#0000ff">bool</span><span style="background:#ffffff;color:#000000"> RedirectionUrlValidationCallback(</span><span style="background:#ffffff;color:#0000ff">string</span><span style="background:#ffffff;color:#000000"> redirectionUrl)</span></li> <li style="background: #f3f3f3"><span style="background:#ffffff;color:#000000">{</span></li> <li>    <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#008000">// The default for the validation callback is to reject the URL.</span></li> <li style="background: #f3f3f3">    <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#0000ff">var</span><span style="background:#ffffff;color:#000000"> result = </span><span style="background:#ffffff;color:#0000ff">false</span><span style="background:#ffffff;color:#000000">;</span></li> <li>&nbsp;</li> <li style="background: #f3f3f3">    <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#008000">// Validate the contents of the redirection URL. In this simple validation</span></li> <li>    <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#008000">// callback, the redirection URL is considered valid if it is using HTTPS</span></li> <li style="background: #f3f3f3">    <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#008000">// to encrypt the authentication credentials. </span></li> <li>    <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#0000ff">var</span><span style="background:#ffffff;color:#000000"> redirectionUri = </span><span style="background:#ffffff;color:#0000ff">new</span><span style="background:#ffffff;color:#000000"> </span><span style="background:#ffffff;color:#2b91af">Uri</span><span style="background:#ffffff;color:#000000">(redirectionUrl);</span></li> <li style="background: #f3f3f3">&nbsp;</li> <li>    <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#0000ff">if</span><span style="background:#ffffff;color:#000000"> (redirectionUri.Scheme == </span><span style="background:#ffffff;color:#a31515">&quot;https&quot;</span><span style="background:#ffffff;color:#000000">)</span></li> <li style="background: #f3f3f3">    <span style="background:#ffffff;color:#000000">{</span></li> <li>        <span style="background:#ffffff;color:#000000">result = </span><span style="background:#ffffff;color:#0000ff">true</span><span style="background:#ffffff;color:#000000">;</span></li> <li style="background: #f3f3f3">    <span style="background:#ffffff;color:#000000">}</span></li> <li>&nbsp;</li> <li style="background: #f3f3f3">    <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#0000ff">return</span><span style="background:#ffffff;color:#000000"> result;</span></li> <li><span style="background:#ffffff;color:#000000">}</span></li> </ol> </div> </div> </div>    <h2>Let’s get some items</h2>  <p align="justify">Before we can get the query to happen, let’s first look at the functions we used as parameter inputs for the <font face="Courier New">PopulateAppointments</font> function.</p>  <div id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:d5eecb7c-6cf0-4dc1-be64-3564eb367dff" class="wlWriterEditableSmartContent" style="float: none; padding-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px"> <div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt"> <div style="background: #fff; max-height: 300px; overflow: auto"> <ol style="background: #ffffff; margin: 0; padding: 0 0 0 5px;"> <li><span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#0000ff">private</span><span style="background:#ffffff;color:#000000"> </span><span style="background:#ffffff;color:#2b91af">AvailabilityOptions</span><span style="background:#ffffff;color:#000000"> GetAvailabilityOptions()</span></li> <li style="background: #f3f3f3"><span style="background:#ffffff;color:#000000">{</span></li> <li>    <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#008000">//As I explained, logic is a bit twisted, </span></li> <li style="background: #f3f3f3">    <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#008000">//I pretend to schedule a meeting and thereofore I ask for a time slot </span></li> <li>    <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#008000">//from the specifc person, and by design I would get back both free </span></li> <li style="background: #f3f3f3">    <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#008000">//and busy slots with there details</span></li> <li>&nbsp;</li> <li style="background: #f3f3f3">    <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#0000ff">var</span><span style="background:#ffffff;color:#000000"> myOptions = </span><span style="background:#ffffff;color:#0000ff">new</span><span style="background:#ffffff;color:#000000"> </span><span style="background:#ffffff;color:#2b91af">AvailabilityOptions</span></li> <li>    <span style="background:#ffffff;color:#000000">{</span></li> <li style="background: #f3f3f3">        <span style="background:#ffffff;color:#000000">MeetingDuration = 30,</span></li> <li>        <span style="background:#ffffff;color:#000000">RequestedFreeBusyView = </span><span style="background:#ffffff;color:#2b91af">FreeBusyViewType</span><span style="background:#ffffff;color:#000000">.DetailedMerged</span></li> <li style="background: #f3f3f3">    <span style="background:#ffffff;color:#000000">};</span></li> <li>&nbsp;</li> <li style="background: #f3f3f3">    <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#0000ff">return</span><span style="background:#ffffff;color:#000000"> myOptions;</span></li> <li><span style="background:#ffffff;color:#000000">}</span></li> </ol> </div> </div> </div>  <p align="justify">&#160;</p>  <div id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:9d52a980-49d1-4536-a9c7-7a21dd95b251" class="wlWriterEditableSmartContent" style="float: none; padding-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px"> <div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt"> <div style="background: #fff; max-height: 300px; overflow: auto"> <ol style="background: #ffffff; margin: 0; padding: 0 0 0 5px;"> <li><span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#0000ff">private</span><span style="background:#ffffff;color:#000000"> </span><span style="background:#ffffff;color:#2b91af">IReadOnlyList</span><span style="background:#ffffff;color:#000000">&lt;</span><span style="background:#ffffff;color:#2b91af">AttendeeInfo</span><span style="background:#ffffff;color:#000000">&gt; GetAttendees()</span></li> <li style="background: #f3f3f3"><span style="background:#ffffff;color:#000000">{</span></li> <li>    <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#008000">//Populate a static list of meeting attendees. This list will be the group</span></li> <li style="background: #f3f3f3">    <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#008000">//of people we are querying their calendar</span></li> <li>    <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#0000ff">var</span><span style="background:#ffffff;color:#000000"> attendees = </span><span style="background:#ffffff;color:#0000ff">new</span><span style="background:#ffffff;color:#000000"> </span><span style="background:#ffffff;color:#2b91af">List</span><span style="background:#ffffff;color:#000000">&lt;</span><span style="background:#ffffff;color:#2b91af">AttendeeInfo</span><span style="background:#ffffff;color:#000000">&gt;</span></li> <li style="background: #f3f3f3">    <span style="background:#ffffff;color:#000000">{</span></li> <li>        <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#0000ff">new</span><span style="background:#ffffff;color:#000000"> </span><span style="background:#ffffff;color:#2b91af">AttendeeInfo</span><span style="background:#ffffff;color:#000000">(</span><span style="background:#ffffff;color:#a31515">&quot;your@ali.as&quot;</span><span style="background:#ffffff;color:#000000">, </span></li> <li style="background: #f3f3f3">            <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#2b91af">MeetingAttendeeType</span><span style="background:#ffffff;color:#000000">.Required, </span><span style="background:#ffffff;color:#0000ff">false</span><span style="background:#ffffff;color:#000000">),</span></li> <li>        <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#0000ff">new</span><span style="background:#ffffff;color:#000000"> </span><span style="background:#ffffff;color:#2b91af">AttendeeInfo</span><span style="background:#ffffff;color:#000000">(</span><span style="background:#ffffff;color:#a31515">&quot;another@ali.as&quot;</span><span style="background:#ffffff;color:#000000">, </span></li> <li style="background: #f3f3f3">            <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#2b91af">MeetingAttendeeType</span><span style="background:#ffffff;color:#000000">.Required, </span><span style="background:#ffffff;color:#0000ff">false</span><span style="background:#ffffff;color:#000000">)</span></li> <li>    <span style="background:#ffffff;color:#000000">};</span></li> <li style="background: #f3f3f3">&nbsp;</li> <li>    <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#0000ff">return</span><span style="background:#ffffff;color:#000000"> attendees;</span></li> <li style="background: #f3f3f3"><span style="background:#ffffff;color:#000000">}</span></li> </ol> </div> </div> </div>  <p align="justify">So far we have an Exchange Server to query; a the time period less than 62 days, and a list of people. Let’s start digging in the <font face="Courier New">PopulateAppointments</font> function. </p>  <div id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:6eb4169c-a150-4c0b-b574-83e6e8d30a2d" class="wlWriterEditableSmartContent" style="float: none; padding-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px"> <div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt"> <div style="background: #fff; max-height: 300px; overflow: auto"> <ol style="background: #ffffff; margin: 0; padding: 0 0 0 5px;"> <li><span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#0000ff">const</span><span style="background:#ffffff;color:#000000"> </span><span style="background:#ffffff;color:#0000ff">string</span><span style="background:#ffffff;color:#000000"> ResourceName = </span><span style="background:#ffffff;color:#a31515">&quot;Resource Name&quot;</span><span style="background:#ffffff;color:#000000">;</span></li> <li style="background: #f3f3f3">&nbsp;</li> <li><span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#0000ff">private</span><span style="background:#ffffff;color:#000000"> </span><span style="background:#ffffff;color:#0000ff">void</span><span style="background:#ffffff;color:#000000"> PopulateAppointments(</span><span style="background:#ffffff;color:#2b91af">ExchangeService</span><span style="background:#ffffff;color:#000000"> service, </span></li> <li style="background: #f3f3f3">    <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#2b91af">IReadOnlyList</span><span style="background:#ffffff;color:#000000">&lt;</span><span style="background:#ffffff;color:#2b91af">AttendeeInfo</span><span style="background:#ffffff;color:#000000">&gt; attendees, </span><span style="background:#ffffff;color:#2b91af">AvailabilityOptions</span><span style="background:#ffffff;color:#000000"> availabilityOptions, </span></li> <li>    <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#2b91af">DateTime</span><span style="background:#ffffff;color:#000000"> startDate, </span><span style="background:#ffffff;color:#2b91af">DateTime</span><span style="background:#ffffff;color:#000000"> endDate)</span></li> <li style="background: #f3f3f3"><span style="background:#ffffff;color:#000000">{</span></li> <li>    <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#008000">//Query Exchange for the Free and Busy timeslots from the specified list of people</span></li> <li style="background: #f3f3f3">    <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#0000ff">var</span><span style="background:#ffffff;color:#000000"> freeBusyResults =</span></li> <li>        <span style="background:#ffffff;color:#000000">service.GetUserAvailability(attendees, </span><span style="background:#ffffff;color:#0000ff">new</span><span style="background:#ffffff;color:#000000"> </span><span style="background:#ffffff;color:#2b91af">TimeWindow</span><span style="background:#ffffff;color:#000000">(startDate, endDate),</span></li> <li style="background: #f3f3f3">            <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#2b91af">AvailabilityData</span><span style="background:#ffffff;color:#000000">.FreeBusy, availabilityOptions);</span></li> <li>&nbsp;</li> <li style="background: #f3f3f3">    <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#008000">//Being a web developer at heart, I think of a DataTable. Put some columns and </span></li> <li>    <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#008000">//add the needed rows, aaaand voilaa just bind</span></li> <li style="background: #f3f3f3">    <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#0000ff">var</span><span style="background:#ffffff;color:#000000"> calendarSet = </span><span style="background:#ffffff;color:#0000ff">new</span><span style="background:#ffffff;color:#000000"> </span><span style="background:#ffffff;color:#2b91af">DataTable</span><span style="background:#ffffff;color:#000000">();</span></li> <li>&nbsp;</li> <li style="background: #f3f3f3">    <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#008000">//The table will have one column for an Alias and then the rest of the columns will</span></li> <li>    <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#008000">//contain the meetings we are looking for to aggregate</span></li> <li style="background: #f3f3f3">&nbsp;</li> <li>    <span style="background:#ffffff;color:#000000">calendarSet.Columns.Add(ResourceName);</span></li> <li style="background: #f3f3f3">&nbsp;</li> <li>    <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#008000">//Create columns for the each day with the date as a title</span></li> <li style="background: #f3f3f3">    <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#0000ff">for</span><span style="background:#ffffff;color:#000000"> (</span><span style="background:#ffffff;color:#0000ff">var</span><span style="background:#ffffff;color:#000000"> col = 0; col &lt; (endDate - startDate).Days; col++)</span></li> <li>    <span style="background:#ffffff;color:#000000">{</span></li> <li style="background: #f3f3f3">        <span style="background:#ffffff;color:#000000">calendarSet.Columns.Add(startDate.AddDays(col).ToShortDateString());</span></li> <li>    <span style="background:#ffffff;color:#000000">}</span></li> <li style="background: #f3f3f3">&nbsp;</li> <li>    <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#0000ff">var</span><span style="background:#ffffff;color:#000000"> i = 0;</span></li> <li style="background: #f3f3f3">    <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#008000">//Let&#39;s loop the results set</span></li> <li>    <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#0000ff">foreach</span><span style="background:#ffffff;color:#000000"> (</span><span style="background:#ffffff;color:#0000ff">var</span><span style="background:#ffffff;color:#000000"> availability </span><span style="background:#ffffff;color:#0000ff">in</span><span style="background:#ffffff;color:#000000"> freeBusyResults.AttendeesAvailability)</span></li> <li style="background: #f3f3f3">    <span style="background:#ffffff;color:#000000">{</span></li> <li>        <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#008000">//Logically table rows will be person driven, right? ;-)</span></li> <li style="background: #f3f3f3">        <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#0000ff">var</span><span style="background:#ffffff;color:#000000"> userForecastRow = calendarSet.NewRow();</span></li> <li>        <span style="background:#ffffff;color:#000000">userForecastRow[ResourceName] = attendees[i].SmtpAddress;</span></li> <li style="background: #f3f3f3">&nbsp;</li> <li>        <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#008000">//Let&#39;s loop the calendar items</span></li> <li style="background: #f3f3f3">        <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#0000ff">foreach</span><span style="background:#ffffff;color:#000000"> (</span><span style="background:#ffffff;color:#0000ff">var</span><span style="background:#ffffff;color:#000000"> calendarItem </span><span style="background:#ffffff;color:#0000ff">in</span><span style="background:#ffffff;color:#000000"> availability.CalendarEvents)</span></li> <li>        <span style="background:#ffffff;color:#000000">{</span></li> <li style="background: #f3f3f3">            <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#008000">//Are you a null? Would you break my code?</span></li> <li>            <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#0000ff">if</span><span style="background:#ffffff;color:#000000"> (calendarItem != </span><span style="background:#ffffff;color:#0000ff">null</span><span style="background:#ffffff;color:#000000">)</span></li> <li style="background: #f3f3f3">                <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#008000">//Do you have the details I need?</span></li> <li>                <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#0000ff">if</span><span style="background:#ffffff;color:#000000"> (calendarItem.Details != </span><span style="background:#ffffff;color:#0000ff">null</span><span style="background:#ffffff;color:#000000">)</span></li> <li style="background: #f3f3f3">                    <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#008000">//Do you have a subject? Remember, I am interested in meetings </span></li> <li>                    <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#008000">//where the subject would contain specific prefix</span></li> <li style="background: #f3f3f3">                    <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#0000ff">if</span><span style="background:#ffffff;color:#000000"> (!</span><span style="background:#ffffff;color:#0000ff">string</span><span style="background:#ffffff;color:#000000">.IsNullOrEmpty(calendarItem.Details.Subject))</span></li> <li>                    <span style="background:#ffffff;color:#000000">{</span></li> <li style="background: #f3f3f3">                        <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#008000">//Do you have Prefix1 or Prefix2 in your subject?</span></li> <li>                        <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#0000ff">if</span><span style="background:#ffffff;color:#000000"> (calendarItem.Details.Subject.ToUpper().Replace(</span><span style="background:#ffffff;color:#a31515">&quot; &quot;</span><span style="background:#ffffff;color:#000000">, </span></li> <li style="background: #f3f3f3">                            <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#0000ff">string</span><span style="background:#ffffff;color:#000000">.Empty).Trim().IndexOf(</span><span style="background:#ffffff;color:#a31515">&quot;PREFIX1-&quot;</span><span style="background:#ffffff;color:#000000">, </span><span style="background:#ffffff;color:#2b91af">StringComparison</span><span style="background:#ffffff;color:#000000">.Ordinal) == 0 ||</span></li> <li>                            <span style="background:#ffffff;color:#000000">calendarItem.Details.Subject.ToUpper().Replace(</span><span style="background:#ffffff;color:#a31515">&quot; &quot;</span><span style="background:#ffffff;color:#000000">, </span></li> <li style="background: #f3f3f3">                                <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#0000ff">string</span><span style="background:#ffffff;color:#000000">.Empty).Trim().IndexOf(</span><span style="background:#ffffff;color:#a31515">&quot;PREFIX2-&quot;</span><span style="background:#ffffff;color:#000000">, </span><span style="background:#ffffff;color:#2b91af">StringComparison</span><span style="background:#ffffff;color:#000000">.Ordinal) == 0)</span></li> <li>                        <span style="background:#ffffff;color:#000000">{</span></li> <li style="background: #f3f3f3">                            <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#008000">//If so then let&#39;s figure where in which column it will sit aka calendar day</span></li> <li>                            <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#0000ff">int</span><span style="background:#ffffff;color:#000000"> colIndex = 0;</span></li> <li style="background: #f3f3f3">                            <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#0000ff">foreach</span><span style="background:#ffffff;color:#000000"> (</span><span style="background:#ffffff;color:#2b91af">DataColumn</span><span style="background:#ffffff;color:#000000"> col </span><span style="background:#ffffff;color:#0000ff">in</span><span style="background:#ffffff;color:#000000"> calendarSet.Columns)</span></li> <li>                            <span style="background:#ffffff;color:#000000">{</span></li> <li style="background: #f3f3f3">                                <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#008000">//Focus only on calendar days</span></li> <li>                                <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#0000ff">if</span><span style="background:#ffffff;color:#000000"> (col.ColumnName != ResourceName)</span></li> <li style="background: #f3f3f3">                                <span style="background:#ffffff;color:#000000">{</span></li> <li>                                    <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#0000ff">if</span><span style="background:#ffffff;color:#000000"> (</span><span style="background:#ffffff;color:#2b91af">DateTime</span><span style="background:#ffffff;color:#000000">.Parse(col.ColumnName).Date &gt;= calendarItem.StartTime &amp;&amp;</span></li> <li style="background: #f3f3f3">                                            <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#2b91af">DateTime</span><span style="background:#ffffff;color:#000000">.Parse(col.ColumnName).Date &lt;= calendarItem.EndTime.AddHours(-1))</span></li> <li>                                    <span style="background:#ffffff;color:#000000">{</span></li> <li style="background: #f3f3f3">                                        <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#008000">//Are you a weekend end day?</span></li> <li>                                        <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#0000ff">if</span><span style="background:#ffffff;color:#000000"> (</span><span style="background:#ffffff;color:#2b91af">DateTime</span><span style="background:#ffffff;color:#000000">.Parse(col.ColumnName).DayOfWeek == </span><span style="background:#ffffff;color:#2b91af">DayOfWeek</span><span style="background:#ffffff;color:#000000">.Sunday)</span></li> <li style="background: #f3f3f3">                                        <span style="background:#ffffff;color:#000000">{</span></li> <li>                                            <span style="background:#ffffff;color:#000000">userForecastRow[colIndex] = </span><span style="background:#ffffff;color:#0000ff">string</span><span style="background:#ffffff;color:#000000">.Empty;</span></li> <li style="background: #f3f3f3">                                        <span style="background:#ffffff;color:#000000">}</span></li> <li>                                        <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#008000">//Are you a weekend end day?</span></li> <li style="background: #f3f3f3">                                        <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#0000ff">else</span><span style="background:#ffffff;color:#000000"> </span><span style="background:#ffffff;color:#0000ff">if</span><span style="background:#ffffff;color:#000000"> (</span><span style="background:#ffffff;color:#2b91af">DateTime</span><span style="background:#ffffff;color:#000000">.Parse(col.ColumnName).DayOfWeek == </span><span style="background:#ffffff;color:#2b91af">DayOfWeek</span><span style="background:#ffffff;color:#000000">.Saturday)</span></li> <li>                                        <span style="background:#ffffff;color:#000000">{</span></li> <li style="background: #f3f3f3">                                            <span style="background:#ffffff;color:#000000">userForecastRow[colIndex] = </span><span style="background:#ffffff;color:#0000ff">string</span><span style="background:#ffffff;color:#000000">.Empty;</span></li> <li>                                        <span style="background:#ffffff;color:#000000">}</span></li> <li style="background: #f3f3f3">                                        <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#0000ff">else</span></li> <li>                                        <span style="background:#ffffff;color:#000000">{</span></li> <li style="background: #f3f3f3">                                            <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#008000">//You are the meeting I am looking for, let&#39;s add you to the calendar day column</span></li> <li>                                            <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#0000ff">string</span><span style="background:#ffffff;color:#000000"> preSeparator = </span><span style="background:#ffffff;color:#0000ff">string</span><span style="background:#ffffff;color:#000000">.Empty;</span></li> <li style="background: #f3f3f3">                                            <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#0000ff">if</span><span style="background:#ffffff;color:#000000"> (userForecastRow[colIndex].ToString().IndexOf(</span><span style="background:#ffffff;color:#a31515">&quot;-&quot;</span><span style="background:#ffffff;color:#000000">, </span><span style="background:#ffffff;color:#2b91af">StringComparison</span><span style="background:#ffffff;color:#000000">.Ordinal) &gt; 0)</span></li> <li>                                            <span style="background:#ffffff;color:#000000">{</span></li> <li style="background: #f3f3f3">                                                <span style="background:#ffffff;color:#000000">preSeparator = </span><span style="background:#ffffff;color:#a31515">&quot;, &quot;</span><span style="background:#ffffff;color:#000000">;</span></li> <li>                                            <span style="background:#ffffff;color:#000000">}</span></li> <li style="background: #f3f3f3">                                            <span style="background:#ffffff;color:#000000">userForecastRow[colIndex] += preSeparator + calendarItem.Details.Subject;</span></li> <li>                                        <span style="background:#ffffff;color:#000000">}</span></li> <li style="background: #f3f3f3">                                    <span style="background:#ffffff;color:#000000">}</span></li> <li>                                <span style="background:#ffffff;color:#000000">}</span></li> <li style="background: #f3f3f3">                                <span style="background:#ffffff;color:#000000">colIndex++;</span></li> <li>                            <span style="background:#ffffff;color:#000000">}</span></li> <li style="background: #f3f3f3">                        <span style="background:#ffffff;color:#000000">}</span></li> <li>                    <span style="background:#ffffff;color:#000000">}</span></li> <li style="background: #f3f3f3">        <span style="background:#ffffff;color:#000000">}</span></li> <li>&nbsp;</li> <li style="background: #f3f3f3">        <span style="background:#ffffff;color:#000000">i++;</span></li> <li>        <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#008000">//Done with this person, let&#39;s go and do it again untill we loop the list of people</span></li> <li style="background: #f3f3f3">        <span style="background:#ffffff;color:#000000">calendarSet.Rows.Add(userForecastRow);</span></li> <li>    <span style="background:#ffffff;color:#000000">}</span></li> <li style="background: #f3f3f3">&nbsp;</li> <li>    <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#008000">//Since we have the DataTable ready, let&#39;s sort it by name and bind it to the GridView :-)</span></li> <li style="background: #f3f3f3">    <span style="background:#ffffff;color:#000000"></span><span style="background:#ffffff;color:#0000ff">var</span><span style="background:#ffffff;color:#000000"> viewCalendarSet = calendarSet.DefaultView;</span></li> <li>    <span style="background:#ffffff;color:#000000">viewCalendarSet.Sort = ResourceName;</span></li> <li style="background: #f3f3f3">    <span style="background:#ffffff;color:#000000">ForecastView.DataSource = viewCalendarSet;</span></li> <li>    <span style="background:#ffffff;color:#000000">ForecastView.DataBind();</span></li> <li style="background: #f3f3f3"><span style="background:#ffffff;color:#000000">}</span></li> </ol> </div> </div> </div>  <h2 align="justify">&#160;</h2>  <h2 align="justify">aaand this is how it looks</h2>  <p align="justify">Yepee <img class="wlEmoticon wlEmoticon-smile" style="border-top-style: none; border-bottom-style: none; border-right-style: none; border-left-style: none" alt="Smile" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/6675.wlEmoticon-smile_6CC0572A.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/6675.wlEmoticon_2D00_smile_5F00_6CC0572A.png" /> We can see now only the meetings that matched our prefixes for a specific group of people and a specific time period. You can take this an extra level and place some fields to allow users to select the time period, or an export button to push this GridView into an Excel sheet, etc.</p>  <p align="justify"><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/0624.image_066B4F42.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/0624.image_5F00_066B4F42.png"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/2211.image_thumb_4F24C806.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/2211.image_5F00_thumb_5F00_4F24C806.png" width="720" height="239" /></a></p>  <p align="justify">Let me know if you have any questions in the comments section below. Enjoy.! <img class="wlEmoticon wlEmoticon-thumbsup" style="border-top-style: none; border-bottom-style: none; border-right-style: none; border-left-style: none" alt="Thumbs up" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/3617.wlEmoticon-thumbsup_2CCFC33E.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/3617.wlEmoticon_2D00_thumbsup_5F00_2CCFC33E.png" /></p>]]></content:encoded>
    </item>
    <item>
      <title>Starting Windows Phone Development: Lesson 4 of n – Communicating with Services and Databinding</title>
      <link>https://docs.microsoft.com/archive/blogs/balsharfi/starting-windows-phone-development-lesson-4-of-n-communicating-with-services-and-databinding</link>
      <pubDate>Thu, 21 Feb 2013 07:39:00 GMT</pubDate>
      <dc:creator><![CDATA[BALSHARFI-OLD]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/balsharfi/2013/02/21/starting-windows-phone-development-lesson-4-of-n-communicating-with-services-and-databinding/</guid>
      <description><![CDATA[Before we move on, you need to have a basic understanding of event handling and navigation. I went...]]></description>
      <content:encoded><![CDATA[<p>Before we move on, you need to have a basic understanding of event handling and navigation. I went through this in <a href="file:///C:/b/balsharfi/archive/2013/01/06/starting-windows-phone-development-lesson-1-of-n-application-layout-and-events-handling.aspx" target="_blank">Lesson 1</a> and <a href="https://blogs.msdn.com/b/balsharfi/archive/2013/01/16/starting-windows-phone-development-lesson-3-of-n-navigation-between-pages-and-passing-parameters.aspx" target="_blank">Lesson 3</a>. Please finish it first before moving on.</p>  <p><em><span style="background-color: rgb(255, 255, 0);">You can always find the lesson source code attached at the end of the blog post.</span></em></p>  <p>As promised, by the end of this lesson you will start feeling like a Windows Phone developer. Till now, we learned how to build GUI using XAML, create event handlers, a little bit about the page cycle, saving data offline using the local storage, and finally navigating and sharing between pages. The only thing left to start producing real applications is data binding and communication with services.</p>  <h1>What is Databinding?</h1>  <p>Do you remember the News application from <a href="https://blogs.msdn.com/b/balsharfi/archive/2013/01/16/starting-windows-phone-development-lesson-3-of-n-navigation-between-pages-and-passing-parameters.aspx" target="_blank">Lesson 3</a>? Lets say we have bunch of news that we want to display to users. first thing we would ask our selves is how this news look like and how I want to display it to the user. For me, a news item should include a title, a small description, a picture maybe, and the actual text details of the news. </p>  <p>The process of attaching the news items to the UI is called Databinding, so when I have a data source and I want to display it contents on a page controls. Final part of Databinding is the fact that each attribute of the data will be bound to a control on the page. and that’s why its called Databinding.</p>  <p>However, we cant really display all the news with all its details on one page, this way the user will have to keep on scrolling to get to the next news item <img class="wlEmoticon wlEmoticon-confusedsmile" alt="Confused smile" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/0216.wlEmoticon-confusedsmile_32E69779.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/0216.wlEmoticon_2D00_confusedsmile_5F00_32E69779.png" /> So what I would do is use 2 pages, one to display a list of the news, and when a news item is tapped we navigate to another page to display that news item details, sounds cool.</p>  <h1>How to Databind?</h1>  <p>Below is a list box defined. Notice that we can include a definition for how the list item would look like under the ListBox.ItemTemplate tag. DataTemplate will contain the blueprint aka the controls with the binding information. To bind a control, we look for the attribute we want to bind, for example we bind an image source to an Image control, and we bind a text to a TextBlock control.</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/4403.image_569FBF13.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/4403.image_5F00_569FBF13.png"><img title="image" style="border: 0px currentcolor; display: inline; background-image: none;" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/0601.image_thumb_5C7A62AC.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/0601.image_5F00_thumb_5F00_5C7A62AC.png" width="472" height="257" /></a></p>  <p>I used a StackPanel to layout the item contents, simply an Image with a TextBlock next to it. It will look close to this:</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/0525.image_104258FE.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/0525.image_5F00_104258FE.png"><img title="image" style="border: 0px currentcolor; display: inline; background-image: none;" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/4722.image_thumb_012B7A24.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/4722.image_5F00_thumb_5F00_012B7A24.png" width="401" height="240" /></a></p>  <h1>Using the WCF service</h1>  <p>I wont babble about WCF here, I will explain what this service is doing, download the code lazy and check it out, this is a Windows Phone post <img class="wlEmoticon wlEmoticon-smile" style="style" alt="Smile" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/4810.wlEmoticon-smile_2001EE02.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/4810.wlEmoticon_2D00_smile_5F00_2001EE02.png" /> I have one class called WindowsPhoneLessonNews that contains a Title, Content, and Thumb properties. In addition, I have 2 Operation Contracts, one I will use to get all news items and the other will get a specific news item based on an index.</p>  <p>Let’s add a reference to our service to be able to consume it. Right click References and choose Add Service Reference.</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/2656.image_58AC980F.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/2656.image_5F00_58AC980F.png"><img title="image" style="border: 0px currentcolor; display: inline; background-image: none;" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/1373.image_thumb_4CAAA7DB.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/1373.image_5F00_thumb_5F00_4CAAA7DB.png" width="340" height="176" /></a></p>  <p>I hosted the service in my local host at port 8080. Navigate to your service and select it. I gave the reference the name of Lesson4PhoneNewsService.</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/6560.image_7DC9E27B.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/6560.image_5F00_7DC9E27B.png"><img title="image" style="border: 0px currentcolor; display: inline; background-image: none;" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/0513.image_thumb_1CA0565A.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/0513.image_5F00_thumb_5F00_1CA0565A.png" width="520" height="421" /></a></p>  <p>Since we have a reference to the service we can start with consuming it. First things first, let’s start with what happens on page load, I am assuming by now you know how to add an event handler for page load, if not go back to the previous lessons. Below you can see that I used an Async call to get all news items when the page loads. We are using Async so we make sure not to lock the GUI until we get a response from the service. </p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/6866.image_4870AA49.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/6866.image_5F00_4870AA49.png"><img title="image" style="border: 0px currentcolor; display: inline; background-image: none;" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/0272.image_thumb_67471E27.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/0272.image_5F00_thumb_5F00_67471E27.png" width="368" height="229" /></a></p>  <p>To spice the user experience I added a progress bar to the page and as long as we are expecting results from the service it will keep animating, otherwise it will be invisible for the user.</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/2678.image_58303F4D.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/2678.image_5F00_58303F4D.png"><img title="image" style="border: 0px currentcolor; display: inline; background-image: none;" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/5481.image_thumb_3EC83C13.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/5481.image_5F00_thumb_5F00_3EC83C13.png" width="518" height="75" /></a></p>  <p>Since this is Async programming, we need to tell our application what to do when it gets a response back from the service. OK now the response is back, I will simply assign the ItemsSource of our ListBox to the result response I got from the service and hide the progress bar.</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/3326.image_106EB666.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/3326.image_5F00_106EB666.png"><img title="image" style="border: 0px currentcolor; display: inline; background-image: none;" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/6567.image_thumb_6F7B43BE.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/6567.image_5F00_thumb_5F00_6F7B43BE.png" width="389" height="154" /></a></p>  <p>Makes sense right? <img class="wlEmoticon wlEmoticon-winkingsmile" style="style" alt="Winking smile" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/7041.wlEmoticon-winkingsmile_6783A15C.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/7041.wlEmoticon_2D00_winkingsmile_5F00_6783A15C.png" /> I see the progress bar when the Aync call is active and it disappears when I have a response. Since I know that my service will return a generic list that I can bind to the ListBox, I directly set the source to the result.</p>  <h1>So, what happens if I tap an item?</h1>  <p>To handle the tap, lets create an event handler for when the list selected index is changed. I simply check that I have a valid index selected and then take the user to the details page passing the news item index in the query string. This way when the NewsDetails page loads, it can figure out which news item details to query render.</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/4314.image_7C08F0DA.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/4314.image_5F00_7C08F0DA.png"><img title="image" style="border: 0px currentcolor; display: inline; background-image: none;" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/7853.image_thumb_05EDE246.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/7853.image_5F00_thumb_5F00_05EDE246.png" width="342" height="164" /></a></p>  <p>As for the details page, we will go through the same process. When loaded, consume the service to get the news item with the index passed in the query string.</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/0284.image_24C45624.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/0284.image_5F00_24C45624.png"><img title="image" style="border: 0px currentcolor; display: inline; background-image: none;" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/8130.image_thumb_46AFB8A8.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/8130.image_5F00_thumb_5F00_46AFB8A8.png" width="447" height="149" /></a></p>  <p>and almost identical when comes to the delegated completion of the Async call</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/8524.image_25BC4601.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/8524.image_5F00_25BC4601.png"><img title="image" style="border: 0px currentcolor; display: inline; background-image: none;" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/7140.image_thumb_56DB80A1.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/7140.image_5F00_thumb_5F00_56DB80A1.png" width="378" height="136" /></a></p>  <p>If you want to go back to the all news list just tap the back button on the phone.</p>  <h1>Mirror Mirror who is the most beautiful of them all?</h1>  <p>Below is the markup for the main page, Just included a TextBlock to say that we are getting the content from a web service bla bla <img class="wlEmoticon wlEmoticon-smilewithtongueout" style="style" alt="Smile with tongue out" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/3733.wlEmoticon-smilewithtongueout_07FABB42.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/3733.wlEmoticon_2D00_smilewithtongueout_5F00_07FABB42.png" /> (just felt like it hehe)</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/0020.image_03843A7B.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/0020.image_5F00_03843A7B.png"><img title="image" style="border: 0px currentcolor; display: inline; background-image: none;" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/0020.image_thumb_34374226.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/0020.image_5F00_thumb_5F00_34374226.png" width="495" height="354" /></a></p>  <p>With that lets move to the NewsDetails page. Almost same XAML markup from the main page, I just changed the StackPanel orientation to Vertical, removed the image and included the news content. In addition, notice that I changed the font size to 40 for the news title.</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/8611.image_79DBCC44.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/8611.image_5F00_79DBCC44.png"><img title="image" style="border: 0px currentcolor; display: inline; background-image: none;" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/0284.image_thumb_18B24023.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/0284.image_5F00_thumb_5F00_18B24023.png" width="500" height="256" /></a></p>  <h1>Let’s test it out..!</h1>  <p>When I first load the application I get the list of news, I did not really get creative about the news content <img class="wlEmoticon wlEmoticon-smilewithtongueout" style="style" alt="Smile with tongue out" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/3733.wlEmoticon-smilewithtongueout_07FABB42.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/3733.wlEmoticon_2D00_smilewithtongueout_5F00_07FABB42.png" /> just got phone models and their pictures and some lipsum content for the details.</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/8117.image_099B6149.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/8117.image_5F00_099B6149.png"><img title="image" style="border: 0px currentcolor; display: inline; background-image: none;" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/6545.image_thumb_2E4C78C0.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/6545.image_5F00_thumb_5F00_2E4C78C0.png" width="383" height="618" /></a></p>  <p>When I tap a news item I get the item details page.</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/5383.image_334EB66F.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/5383.image_5F00_334EB66F.png"><img title="image" style="border: 0px currentcolor; display: inline; background-image: none;" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/3817.image_thumb_0A63A166.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/3817.image_5F00_thumb_5F00_0A63A166.png" width="383" height="612" /></a></p>  <h1>Summing things up after 4 lessons</h1>  <p>So by now you have an informative idea about what it takes to write Windows Phone applications, we went through many topics of XAML and Markup Page construct, Layouts, Events Handling, Navigation, Databinding, Threading, and consuming Web Services in the past 4 lessons. Keep tuned, more to come <img class="wlEmoticon wlEmoticon-smile" style="style" alt="Smile" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/4810.wlEmoticon-smile_2001EE02.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/4810.wlEmoticon_2D00_smile_5F00_2001EE02.png" /></p>  <p>Let me know if you have any comments, requests, and feedback.</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Components.PostAttachments/00/10/39/59/08/Lesson4.zip" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-components-postattachments/00-10-39-59-08/Lesson4.zip">Lesson4.zip</a></p>]]></content:encoded>
    </item>
    <item>
      <title>Starting Windows Phone Development: Lesson 3 of n – Navigation between Pages and passing Parameters</title>
      <link>https://docs.microsoft.com/archive/blogs/balsharfi/starting-windows-phone-development-lesson-3-of-n-navigation-between-pages-and-passing-parameters</link>
      <pubDate>Wed, 16 Jan 2013 03:10:00 GMT</pubDate>
      <dc:creator><![CDATA[BALSHARFI-OLD]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/balsharfi/2013/01/16/starting-windows-phone-development-lesson-3-of-n-navigation-between-pages-and-passing-parameters/</guid>
      <description><![CDATA[Before we move on, you need to have a basic understanding of event handling. I went through this in...]]></description>
      <content:encoded><![CDATA[<p>Before we move on, you need to have a basic understanding of event handling. I went through this in <a href="https://blogs.msdn.com/b/balsharfi/archive/2013/01/06/starting-windows-phone-development-lesson-1-of-n-application-layout-and-events-handling.aspx" target="_blank">Lesson 1</a>. Please finish it first before moving on.</p>
<p><em><span style="background-color: #ffff00;">You can always find the lesson source code attached at the end of the blog post.</span></em></p>
<p>As we explained earlier in <a href="https://blogs.msdn.com/b/balsharfi/archive/2013/01/06/starting-windows-phone-development-lesson-1-of-n-application-layout-and-events-handling.aspx" target="_blank">Lesson 1</a>, Windows Phone applications are made up of XAML pages. So the way you would think about it is the same way you think about a website. Every application will have some sort of a navigation logic. So for example if we have a news application, we would have a main page were the application lands when it launches displaying news categories. You then would need to select a category and then it will display the list of news inside that category and if you tap on a news item, it will display the news details. I guess by now you get the drift <img class="wlEmoticon wlEmoticon-winkingsmile" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/5584.wlEmoticon-winkingsmile_23CDCB36.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/5584.wlEmoticon_2D00_winkingsmile_5F00_23CDCB36.png" alt="Winking smile" />&nbsp;</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/7651.image_02DA588F.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/7651.image_5F00_02DA588F.png"><img style="border: 0px currentcolor; display: inline; background-image: none;" title="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/6175.image_thumb_766C3565.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/6175.image_5F00_thumb_5F00_766C3565.png" alt="image" width="500" height="148" border="0" /></a></p>
<p>We will talk in details later during the data binding lesson about templates and capturing selected list items, but for now we will need to navigate between the pages and pass parameters. So lets focus on that. You have my word, by the end of the next lesson where we talk about data binding you will be able to deliver enterprise level applications. Be cool <img class="wlEmoticon wlEmoticon-hotsmile" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/5076.wlEmoticon-hotsmile_7E342807.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/5076.wlEmoticon_2D00_hotsmile_5F00_7E342807.png" alt="Hot smile" /></p>
<h1>So, How does it look like?</h1>
<p>Lets have 2 pages, MainPage labeled as Page1 will accept a text string from you and pass it to Page 2 to be displayed.</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/1768.image_196C8109.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/1768.image_5F00_196C8109.png"><img style="border: 0px currentcolor; display: inline; background-image: none;" title="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/3513.image_thumb_585E01A4.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/3513.image_5F00_thumb_5F00_585E01A4.png" alt="image" width="398" height="329" border="0" /></a></p>
<p>As you guessed, again it&rsquo;s a StackPanel <img class="wlEmoticon wlEmoticon-smile" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/1856.wlEmoticon-smile_3B74DCCF.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/1856.wlEmoticon_2D00_smile_5F00_3B74DCCF.png" alt="Smile" />, TextBlock for our user message, a TextBox to capture the user string, and a button to navigate to Page 2 passing the string.</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/7612.image_41BBB35D.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/7612.image_5F00_41BBB35D.png"><img style="border: 0px currentcolor; display: inline; background-image: none;" title="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/5460.image_thumb_479656F6.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/5460.image_5F00_thumb_5F00_479656F6.png" alt="image" width="429" height="168" border="0" /></a></p>
<p>Now for Page 2:</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/6237.image_34752A4A.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/6237.image_5F00_34752A4A.png"><img style="border: 0px currentcolor; display: inline; background-image: none;" title="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/7215.image_thumb_6C476E6D.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/7215.image_5F00_thumb_5F00_6C476E6D.png" alt="image" width="396" height="318" border="0" /></a></p>
<p>Good guess again, one StackPanel with 2 TextBlocks, one to display our message to the user and another to display the string entered in page 1. I added a button so you tap it will take you back Page 1.</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/4150.image_52070549.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/4150.image_5F00_52070549.png"><img style="border: 0px currentcolor; display: inline; background-image: none;" title="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/3566.image_thumb_1502D3B7.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/3566.image_5F00_thumb_5F00_1502D3B7.png" alt="image" width="389" height="196" border="0" /></a></p>
<h1>Passing Query String Parameter(s)</h1>
<p>On our first page, double click the PassParameter button to create an event handler. To navigate to a new page we use the NavigationService.Navigate function passing to it a URI. Check out below where I simply navigate to page 2:</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/5224.image_68E5D6C5.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/5224.image_5F00_68E5D6C5.png"><img style="border: 0px currentcolor; display: inline; background-image: none;" title="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/3566.image_thumb_5A3B2AE0.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/3566.image_5F00_thumb_5F00_5A3B2AE0.png" alt="image" width="333" height="41" border="0" /></a></p>
<p>and then if you want to add the Query String parameters we can do it add hoc like this:</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/4456.image_6082016E.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/4456.image_5F00_6082016E.png"><img style="border: 0px currentcolor; display: inline; background-image: none;" title="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/3542.image_thumb_46ADCB3F.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/3542.image_5F00_thumb_5F00_46ADCB3F.png" alt="image" width="393" height="59" border="0" /></a></p>
<p>specifying a parameter called UserString and pushing into it the user input from the TextBox. I am a web developer and when I see this you can see me smile <img class="wlEmoticon wlEmoticon-smile" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/1856.wlEmoticon-smile_3B74DCCF.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/1856.wlEmoticon_2D00_smile_5F00_3B74DCCF.png" alt="Smile" /> It&rsquo;s the same process exactly but instead you call Response.Redirect function instead.</p>
<p>For me I prefer to use the string.Format function instead&nbsp; because I feel easy around it in adding a good number of parameters and just using curly brackets with index numbers without worrying about string contacts.</p>
<p>So eventually my button code is simple, I just call for Page2.xaml passing the contents of the TextBox in a parameter called UserString.</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/5102.image_4CF4A1CD.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/5102.image_5F00_4CF4A1CD.png"><img style="border: 0px currentcolor; display: inline; background-image: none;" title="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/2465.image_thumb_300B7CF8.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/2465.image_5F00_thumb_5F00_300B7CF8.png" alt="image" width="475" height="100" border="0" /></a></p>
<h1>Retrieving Query String Parameter(s)</h1>
<p>Logic should be simple for Page2. on page load we need to capture the Query String parameter and display its content inside the TextBox. To access the parameters we access the NavigationContext.</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/3652.image_4EE1F0D6.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/3652.image_5F00_4EE1F0D6.png"><img style="border: 0px currentcolor; display: inline; background-image: none;" title="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/6278.image_thumb_0DD37172.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/6278.image_5F00_thumb_5F00_0DD37172.png" alt="image" width="537" height="87" border="0" /></a></p>
<p>and finally we set the last event handler to take us back on the Go Back button. For that we used the NavigationService.GoBack function.</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/5102.image_61B67480.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/5102.image_5F00_61B67480.png"><img style="border: 0px currentcolor; display: inline; background-image: none;" title="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/7824.image_thumb_47E23E51.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/7824.image_5F00_thumb_5F00_47E23E51.png" alt="image" width="428" height="69" border="0" /></a></p>
<h1>Let&rsquo;s test it out..!</h1>
<p>Run the emulator using the F5 key and please be patient until Visual Studio manages to compile, build, and deploy our application. Input some text into the text box and then hit on Pass Parameter.</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/8308.image_6005A8AC.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/8308.image_5F00_6005A8AC.png"><img style="border: 0px currentcolor; display: inline; background-image: none;" title="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/5661.image_thumb_03DE5A3A.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/5661.image_5F00_thumb_5F00_03DE5A3A.png" alt="image" width="332" height="451" border="0" /></a></p>
<p>and here you go with Page 2 <img class="wlEmoticon wlEmoticon-smile" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/1856.wlEmoticon-smile_3B74DCCF.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/1856.wlEmoticon_2D00_smile_5F00_3B74DCCF.png" alt="Smile" /></p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/7317.image_6C63A608.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/7317.image_5F00_6C63A608.png"><img style="border: 0px currentcolor; display: inline; background-image: none;" title="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/2117.image_thumb_7FA45CA7.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/2117.image_5F00_thumb_5F00_7FA45CA7.png" alt="image" width="340" height="309" border="0" /></a></p>
<p>and when I tapped Go&nbsp; Back, it actually took me back again to the first page. Notice how it preserved the string you entered before navigating away from it. But this is a discussion for another lesson.</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/5228.image_369E3AE1.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/5228.image_5F00_369E3AE1.png"><img style="border: 0px currentcolor; display: inline; background-image: none;" title="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/4667.image_thumb_5BBB854D.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/4667.image_5F00_thumb_5F00_5BBB854D.png" alt="image" width="337" height="285" border="0" /></a></p>
<p>So to warp it up we use NavigationService.Navigate to navigate between pages. The navigate URI can accept parameters which can be shared with target pages. Finally, we use the NavigationContext to access the passed Query String parameters.</p>
<p>I hoped you enjoyed this lesson <img class="wlEmoticon wlEmoticon-smile" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/1856.wlEmoticon-smile_3B74DCCF.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/1856.wlEmoticon_2D00_smile_5F00_3B74DCCF.png" alt="Smile" /></p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Components.PostAttachments/00/10/38/54/74/Lesson3.zip" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-components-postattachments/00-10-38-54-74/Lesson3.zip">Lesson3.zip</a></p>]]></content:encoded>
    </item>
    <item>
      <title>Starting Windows Phone Development: Lesson 2 of n - Access to Application Isolated Local Storage</title>
      <link>https://docs.microsoft.com/archive/blogs/balsharfi/starting-windows-phone-development-lesson-2-of-n-access-to-application-isolated-local-storage</link>
      <pubDate>Mon, 14 Jan 2013 01:13:00 GMT</pubDate>
      <dc:creator><![CDATA[BALSHARFI-OLD]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/balsharfi/2013/01/14/starting-windows-phone-development-lesson-2-of-n-access-to-application-isolated-local-storage/</guid>
      <description><![CDATA[I hope you will find this lesson more interesting as most developers think about phone storage...]]></description>
      <content:encoded><![CDATA[<p>I hope you will find this lesson more interesting as most developers think about phone storage available on devices for their applications and how they can utilize it. Each application will have its own isolated local storage. It is independent from the other applications and OS files and can be only accessed by your application.</p>
<p>Before we move on, you need to have a basic understanding of event handling. I went through this in <a href="https://blogs.msdn.com/b/balsharfi/archive/2013/01/06/starting-windows-phone-development-lesson-1-of-n-application-layout-and-events-handling.aspx" target="_blank">Lesson 1</a>. Please finish it first before moving on.</p>
<p>Two questions would pop in your head, one would be about utilizing storage for your app on an SD card, and the answer <a href="https://msdn.microsoft.com/en-us/library/windowsphone/develop/jj720573(v=vs.105).aspx" target="_blank">yes</a> and the next question would be about the size limit, so as I know (and I know little <img class="wlEmoticon wlEmoticon-smile" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/7853.wlEmoticon-smile_0325C960.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/7853.wlEmoticon_2D00_smile_5F00_0325C960.png" alt="Smile" />) you will have virtually no constraints on the application storage capacity. So as long as you have storage available in your device then your app can utilize it.</p>
<p>The idea of our application is very simple, I will use the local storage to read/write a string message and a counter to a text file. I will be increasing the counter every time we launch the application (aka load the page) and will display the last message stored in the text file.</p>
<p><em><span style="background-color: #ffff00;">You can always find the lesson source code attached at the end of the blog post.</span></em></p>
<h1>So, How does it look like?</h1>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/4807.image_623256B8.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/4807.image_5F00_623256B8.png"><img style="border: 0px currentcolor; display: inline; background-image: none;" title="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/7140.image_thumb_12792B6F.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/7140.image_5F00_thumb_5F00_12792B6F.png" alt="image" width="339" height="347" border="0" /></a></p>
<p>As you figured we used 2 TextBlocks to display the message and the counter and one TextBox to capture the new message if any. So what about the XAML behind this, well as always StackPanel <img class="wlEmoticon wlEmoticon-winkingsmile" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/1273.wlEmoticon-winkingsmile_177B691E.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/1273.wlEmoticon_2D00_winkingsmile_5F00_177B691E.png" alt="Winking smile" /> is my hero:</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/4478.image_36BE0FF1.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/4478.image_5F00_36BE0FF1.png"><img style="border: 0px currentcolor; display: inline; background-image: none;" title="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/1261.image_thumb_1BA540E3.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/1261.image_5F00_thumb_5F00_1BA540E3.png" alt="image" width="504" height="310" border="0" /></a></p>
<p>In this scenario we named the TextBlocks because we will be pushing content to them from our code behind. So lets start with what happens when the page loads.</p>
<h1>So what happens when the page Loads?</h1>
<p>Before we start with the page load logic, please make sure to add the following using statements on the top of the page to be able to use the isolated storage and carry on file operations.</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/0184.image_39371BE2.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/0184.image_5F00_39371BE2.png"><img style="border: 0px currentcolor; display: inline; background-image: none;" title="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/5700.image_thumb_1F62E5B3.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/5700.image_5F00_thumb_5F00_1F62E5B3.png" alt="image" width="281" height="93" border="0" /></a></p>
<p>On page load I need to check if the file I use to store the string and counter exists or not. If it does exist I read the counter and the message and push them to global variables. If the file does not exist, I write 0 and &ldquo;No messages..!&rdquo; in a new file. The file I will be using will be called LS.txt (short for Local Storage), I know very impressive naming skills <img class="wlEmoticon wlEmoticon-smilewithtongueout" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/3817.wlEmoticon-smilewithtongueout_3E395991.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/3817.wlEmoticon_2D00_smilewithtongueout_5F00_3E395991.png" alt="Smile with tongue out" />.</p>
<p>Finally, I push the values to the TextBlocks by replacing the &ldquo;##&rdquo; symbols in my string with the variable values using the string.Replace function.</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/1667.image_3D60F3A7.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/1667.image_5F00_3D60F3A7.png"><img style="border: 0px currentcolor; display: inline; background-image: none;" title="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/3731.image_thumb_02994AD1.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/3731.image_5F00_thumb_5F00_02994AD1.png" alt="image" width="547" height="630" border="0" /></a></p>
<h1>and when it Unloads?</h1>
<p>when the page unloads or navigated away from using the Back or Start buttons, we replace the current LS.txt file with the new content. First we increment the counter and then add the message.</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/1258.image_32E01F87.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/1258.image_5F00_32E01F87.png"><img style="border: 0px currentcolor; display: inline; background-image: none;" title="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/3324.image_thumb_384E902B.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/3324.image_5F00_thumb_5F00_384E902B.png" alt="image" width="434" height="325" border="0" /></a></p>
<p>The final part of our application is saving the new message and exiting the application so that we call the OnNavigatedFrom handler.</p>
<h1>Save New Message</h1>
<p>We push the contents of the TextBox back to our variable and push a message box to the user.</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/8117.image_01FD681C.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/8117.image_5F00_01FD681C.png"><img style="border: 0px currentcolor; display: inline; background-image: none;" title="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/4314.image_thumb_1CC98E28.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/4314.image_5F00_thumb_5F00_1CC98E28.png" alt="image" width="380" height="104" border="0" /></a></p>
<h1>Let&rsquo;s Test it out..!</h1>
<p>Run the emulator using the F5 key and please be patient until Visual Studio manages to compile, build, and deploy our application.</p>
<p>The application loads with the counter set to 0 and I input a message.</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/0268.image_5FC55C95.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/0268.image_5F00_5FC55C95.png"><img style="border: 0px currentcolor; display: inline; background-image: none;" title="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/8015.image_thumb_1D724452.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/8015.image_5F00_thumb_5F00_1D724452.png" alt="image" width="339" height="412" border="0" /></a></p>
<p>Now I will hit save and the application will display the message box. We will exit when the message is dismissed which will call the unloaded and increment the counter and save my new message.</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/4863.image_1A7CDF9F.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/4863.image_5F00_1A7CDF9F.png"><img style="border: 0px currentcolor; display: inline; background-image: none;" title="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/2816.image_thumb_387AED93.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/2816.image_5F00_thumb_5F00_387AED93.png" alt="image" width="339" height="405" border="0" /></a></p>
<p>Once you hit back after dismissing the application, go to the menu again on the phone and click on Lesson 2.</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/8512.image_2BA09775.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/8512.image_5F00_2BA09775.png"><img style="border: 0px currentcolor; display: inline; background-image: none;" title="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/8508.image_thumb_09688BEF.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/8508.image_5F00_thumb_5F00_09688BEF.png" alt="image" width="338" height="379" border="0" /></a></p>
<p>and taraaaaaaaaaaaaaaaaaa..!! <img class="wlEmoticon wlEmoticon-smile" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/7853.wlEmoticon-smile_0325C960.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/7853.wlEmoticon_2D00_smile_5F00_0325C960.png" alt="Smile" /> we have an updated counter and our last message:</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/4885.image_790D1435.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/4885.image_5F00_790D1435.png"><img style="border: 0px currentcolor; display: inline; background-image: none;" title="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/4786.image_thumb_1E2A5EA2.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/4786.image_5F00_thumb_5F00_1E2A5EA2.png" alt="image" width="339" height="326" border="0" /></a></p>
<p>I hope enjoyed your lesson today and have an idea on how to read and write files in Windows Phone.</p>
<p>Let me know if you get stuck somewhere.</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Components.PostAttachments/00/10/38/46/63/Lesson2.zip" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-components-postattachments/00-10-38-46-63/Lesson2.zip">Lesson2.zip</a></p>]]></content:encoded>
    </item>
    <item>
      <title>Starting Windows Phone Development: Lesson 1 of n – Application Layout and Events Handling</title>
      <link>https://docs.microsoft.com/archive/blogs/balsharfi/starting-windows-phone-development-lesson-1-of-n-application-layout-and-events-handling</link>
      <pubDate>Sat, 05 Jan 2013 16:01:00 GMT</pubDate>
      <dc:creator><![CDATA[BALSHARFI-OLD]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/balsharfi/2013/01/05/starting-windows-phone-development-lesson-1-of-n-application-layout-and-events-handling/</guid>
      <description><![CDATA[It often surprises me how much of content is available to develop for Windows Phone, if you are...]]></description>
      <content:encoded><![CDATA[<p>It often surprises me how much of content is available to develop for Windows Phone, if you are looking for baby steps this series of lessons is defiantly not for you. However, if you are developer, regardless of background or platform and looking quickly to get your hands dirty, then you are at the right place. I will not be setting up a fixed or target number of lessons, I will share ideas along the way and keep adding more. This does not mean I don’t have an agenda, on the contrary! I started by asking myself about developer tasks during the life cycle of building an application, and came up with this:</p>  <ul>   <li>Application Layout and Events Handing</li>    <li>Access to Application Isolated Local Storage</li>    <li>Navigation between Pages and passing Parameters</li>    <li>Communicating with Services and Data Binding </li>    <li>Threading and Asynchronous Calls</li>    <li>Access to Phone Resources like Address Book and GPS</li>    <li>Panorama and Pivot Applications</li>    <li>Animation and Transitions using Blend for Visual Studio 2012</li> </ul>  <p>and the list will keep on growing <img class="wlEmoticon wlEmoticon-smile" alt="Smile" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/5342.wlEmoticon-smile_10D0C399.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/5342.wlEmoticon_2D00_smile_5F00_10D0C399.png" />&#160;</p>  <p>To get you up to speed, you need to download the Windows Phone SDK 8.0 from: <a title="https://dev.windowsphone.com/en-us/downloadsdk" href="https://dev.windowsphone.com/en-us/downloadsdk">https://dev.windowsphone.com/en-us/downloadsdk</a>.</p>  <p>As I mentioned earlier, this a special series that focuses on a point, a task, a recipe. So don’t be surprised if we wont be building fancy samples, I am here to help you get on your feet with Windows Phone Development as soon as possible.</p>  <p><em><font style="background-color: rgb(255, 255, 0);">You can always find the lesson source code attached at the end of the blog post.</font></em></p>  <h1>Quick facts before we start</h1>  <ul>   <li>Windows Phone applications are constructed of XAML pages</li>    <li>XAML pages are used to set the page layout and there is a CS or VB file tied to it for our code like event handlers</li>    <li>XAML is somehow like HTML, we describe how the page would look using tags</li> </ul>  <h1>Creating the application</h1>  <p><strong></strong></p>  <table cellspacing="0" cellpadding="2" width="550" border="0"><tbody>     <tr style="background-color: rgb(242, 242, 242);">       <td valign="top" width="36" align="center"><strong>Step</strong></td>        <td valign="top" width="518"><strong>Details</strong></td>     </tr>      <tr>       <td valign="top" width="36" align="center"><strong>1</strong></td>        <td valign="top" width="518">So lets start with launching Visual Studio and creating a new Windows Phone App Project. I will be using Visual C#. I called it Lesson1          <br />          <br /><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/7558.image_30136A6C.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/7558.image_5F00_30136A6C.png"><img title="" style="border: 0px currentcolor; display: inline; background-image: none;" border="0" alt="" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/3240.image_thumb_0E4791DB.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/3240.image_5F00_thumb_5F00_0E4791DB.png" width="500" height="346" /></a>           <br />          <br />You will be prompted to choose the platform you are targeting, 7.1 that is Mango and 8. Up to my knowledge, mostly whatever you build on 7.1 can work on Windows Phone 8 but not the other way around. I choose Windows Phone OS 8.0.           <br />          <br /><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/0020.image_5E3D4059.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/0020.image_5F00_5E3D4059.png"><img title="" style="border: 0px currentcolor; display: inline; background-image: none;" border="0" alt="" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/4401.image_thumb_244DFD6D.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/4401.image_5F00_thumb_5F00_244DFD6D.png" width="300" height="139" /></a>           <br /></td>     </tr>      <tr>       <td valign="top" width="36" align="center"><strong>2</strong></td>        <td valign="top" width="518">Once Visual Studio loads the project files, you will notice that you have live preview on the left and the XAML editor on the right. I will not rely that much on the designer during this series because of the nature of the topics being discussed, almost all topics are code running behind <img class="wlEmoticon wlEmoticon-winkingsmile" alt="Winking smile" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/6064.wlEmoticon-winkingsmile_5C204190.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/6064.wlEmoticon_2D00_winkingsmile_5F00_5C204190.png" /> so for now kiss the designer goodbye.           <br />          <br /><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/2308.image_028224DC.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/2308.image_5F00_028224DC.png"><img title="image" style="border: 0px currentcolor; display: inline; background-image: none;" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/7563.image_thumb_4D28ECA9.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/7563.image_5F00_thumb_5F00_4D28ECA9.png" width="500" height="268" /></a>           <br /></td>     </tr>   </tbody></table>  <h1>How do you describe your application pages using XAML?</h1>  <p>There are lots of controls for you to do so like a Grid, a Canvas, or my favorite a StackPanel. In this lesson we will use the StackPanel to describe our page layout.</p>  <h1>How does a StackPanel actually work?</h1>  <p>I love StackPanels because you can stack controls on either horizontally or vertically with now swat, you can even have a StackPanel stacking another StackPanel, how cool is that? <img class="wlEmoticon wlEmoticon-hotsmile" alt="Hot smile" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/3463.wlEmoticon-hotsmile_4458E45D.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/3463.wlEmoticon_2D00_hotsmile_5F00_4458E45D.png" /></p>  <p>Check the code below: I laid 2 StackPanels inside the ContentPanel, one with Horizontal orientation and the second with Vertical orientation each containg 4 buttons.</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/7651.image_3CCD74F0.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/7651.image_5F00_3CCD74F0.png"><img title="image" style="border: 0px currentcolor; display: inline; background-image: none;" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/1781.image_thumb_2DB69616.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/1781.image_5F00_thumb_5F00_2DB69616.png" width="318" height="229" /></a></p>  <p>and then check the designer screenshot rendering both StackPanels below:</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/2364.image_339139AF.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/2364.image_5F00_339139AF.png"><img title="image" style="border: 0px currentcolor; display: inline; background-image: none;" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/5670.image_thumb_396BDD48.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/5670.image_5F00_thumb_5F00_396BDD48.png" width="300" height="369" /></a></p>  <p>XAML is simple to use, we use the tags to layout controls and predefined properties to describe their behavior or format. You will get used to it quickly.</p>  <h1>So, what’s cooking today?</h1>  <p>A lame sample indeed <img class="wlEmoticon wlEmoticon-smilewithtongueout" alt="Smile with tongue out" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/5076.wlEmoticon-smilewithtongueout_2A54FE6E.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/5076.wlEmoticon_2D00_smilewithtongueout_5F00_2A54FE6E.png" />, So I was thinking of asking the user to enter 2 numbers and then we multiply them and return the result either in a message box or simple push it back in a label somewhere on the page for the user. It will look like this one below:</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/3404.image_50B6E1B9.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/3404.image_5F00_50B6E1B9.png"><img title="image" style="border: 0px currentcolor; display: inline; background-image: none;" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/8371.image_thumb_7DCBCE87.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/8371.image_5F00_thumb_5F00_7DCBCE87.png" width="300" height="240" /></a>&#160;</p>  <p>Layout is simple, we have 2 StackPanels like the first example above with the 4 buttons, but this time instead of stacking buttons in the first StackPanel, I stacked text and input boxes. From now on, we refer to text on application page as TextBlock and input boxes as TextBox.</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/0434.image_03A67221.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/0434.image_5F00_03A67221.png"><img title="image" style="border: 0px currentcolor; display: inline; background-image: none;" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/1805.image_thumb_292FEF82.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/1805.image_5F00_thumb_5F00_292FEF82.png" width="500" height="214" /></a></p>  <p>Notice that I added an InputScope to the TextBox telling the application that we want the numbers keyboard to show up instead of the normal full keyboard when capturing user input:</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/0243.image_5B7E7330.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/0243.image_5F00_5B7E7330.png"><img title="image" style="border: 0px currentcolor; display: inline; background-image: none;" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/4857.image_thumb_20B6CA5A.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/4857.image_5F00_thumb_5F00_20B6CA5A.png" width="250" height="400" /></a></p>  <h1>What about my code?</h1>  <p>We have a the layout ready and all we need to do is tell out application how to behave when something happens on the GUI aka an Event.</p>  <table cellspacing="0" cellpadding="2" width="550" border="0"><tbody>     <tr style="background-color: rgb(242, 242, 242);">       <td valign="top" width="36" align="center"><strong>Step</strong></td>        <td valign="top" width="443"><strong>Details</strong></td>     </tr>      <tr>       <td valign="top" width="36" align="center"><strong>1</strong></td>        <td valign="top" width="443">Wiring up even handlers with the GUI is simple thanks to Visual Studio. Just select your desired control in our case the Messagebox button and double click on it. Another way of doing this is that after selecting go to the Properties pane on the right bottom of your screen (I had to drag it next to the control for the screenshot) click on the Lighting button which will display all the element events and then double click on the empty textbox next to Click.          <br />          <br /><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/6254.image_164B460B.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/6254.image_5F00_164B460B.png"><img title="image" style="border: 0px currentcolor; display: inline; background-image: none;" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/6330.image_thumb_6E3896EB.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/6330.image_5F00_thumb_5F00_6E3896EB.png" width="449" height="267" /></a>           <br /></td>     </tr>      <tr>       <td valign="top" width="36" align="center"><strong>2</strong></td>        <td valign="top" width="443">Visual Studio will load the CS file associated with our XAML page now and create an empty event handler for you.          <br />          <br /><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/0385.image_0CA2D7D5.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/0385.image_5F00_0CA2D7D5.png"><img title="image" style="border: 0px currentcolor; display: inline; background-image: none;" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/3187.image_thumb_39B7C4A3.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/3187.image_5F00_thumb_5F00_39B7C4A3.png" width="500" height="70" /></a>           <br />          <br />The behavior is simple, we are pushing a MessageBox to user with the result. The MessageBox.Show function accepts a string which means I have to do the calculation and then cast it as a string using the ToString function.           <br />          <br /><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/2502.image_0A85D90C.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/2502.image_5F00_0A85D90C.png"><img title="image" style="border: 0px currentcolor; display: inline; background-image: none;" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/4744.image_thumb_02FA699F.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/4744.image_5F00_thumb_5F00_02FA699F.png" width="466" height="17" /></a>           <br />          <br />To give the more context we pull the values of the 2 numbers and push a string to the user that say <strong>2 X 2 = 4</strong>. I hope it looks more simpler now.           <br />          <br />Note that I used the double.Parse method to cast the TextBox string value to a number of type double.           <br /></td>     </tr>      <tr>       <td valign="top" width="36" align="center">3</td>        <td valign="top" width="443">Repeat Step 1 but this time on the other button and update the even handler code.          <br />          <br /><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/7382.image_295C4CEA.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/7382.image_5F00_295C4CEA.png"><img title="image" style="border: 0px currentcolor; display: inline; background-image: none;" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/8372.image_thumb_3D756973.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/8372.image_5F00_thumb_5F00_3D756973.png" width="460" height="77" /></a>           <br />          <br />The behavior code is simpler than the message box because we are not concatenating strings, we just push the result to a TextBlock.           <br /></td>     </tr>   </tbody></table>  <h1>Let’s test it out..!</h1>  <p>The SDK comes equipped with an Emulator, we will cover this in later lessons, but for now just hit ctrl+F5 to Build and Deploy our application to the emulator and run it. Please be patient and wait until it loads our application. Once loaded, enter some values for X and Y. Notice how the numbers keyboard is shown instead of the full keyboard.</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/6813.image_4D5F8433.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/6813.image_5F00_4D5F8433.png"><img title="image" style="border: 0px currentcolor; display: inline; background-image: none;" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/4747.image_thumb_04C59562.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/4747.image_5F00_thumb_5F00_04C59562.png" width="250" height="400" /></a></p>  <p>Now try once to tap the Messagebox button and another time the TextBlock button.</p>  <table cellspacing="0" cellpadding="2" width="550" border="0"><tbody>     <tr>       <td valign="top" width="300"><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/1072.image_0BBA4C1E.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/1072.image_5F00_0BBA4C1E.png"><img title="image" style="border: 0px currentcolor; display: inline; background-image: none;" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/6740.image_thumb_0A75B33F.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/6740.image_5F00_thumb_5F00_0A75B33F.png" width="250" height="397" /></a></td>        <td valign="top" width="300"><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/4278.image_294C271D.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/4278.image_5F00_294C271D.png"><img title="image" style="border: 0px currentcolor; display: inline; background-image: none;" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/7180.image_thumb_35D9D439.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/7180.image_5F00_thumb_5F00_35D9D439.png" width="250" height="400" /></a></td>     </tr>   </tbody></table>  <p>I hope you enjoyed the lesson, to sum it up:</p>  <ul>   <li>Windows Phone applications are made up of XAML pages</li>    <li> We use XAML markup to describe our page layout and code behind CS or VB files to write our event handlers</li>    <li>Controls are represented like HTML markup in tags, each control has its own properties to define its behavior and format like the setting the InputScope for a TextBox</li>    <li>To wire an event handler to a control we simply double click the control on the designer view or select it and navigate the event handlers property sheet using the properties window.</li>    <li>Anything pushed/input to/from the screen is considered a string</li>    <li>We use the double.Parse to cast from a string and ToString to cast to a string</li>    <li>To build, deploy, and run our code we use ctrl+F5 keys, this will launch the emulator, deploy, and run our application</li> </ul>  <p>Let me know if you have any questions <img class="wlEmoticon wlEmoticon-smile" alt="Smile" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/5342.wlEmoticon-smile_10D0C399.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/5342.wlEmoticon_2D00_smile_5F00_10D0C399.png" /></p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Components.PostAttachments/00/10/38/26/31/Lesson1.zip" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-components-postattachments/00-10-38-26-31/Lesson1.zip">Lesson1.zip</a></p>]]></content:encoded>
    </item>
    <item>
      <title>Configure Event Viewer for BizTalk Server Errors</title>
      <link>https://docs.microsoft.com/archive/blogs/balsharfi/configure-event-viewer-for-biztalk-server-errors</link>
      <pubDate>Sat, 04 Aug 2012 14:02:00 GMT</pubDate>
      <dc:creator><![CDATA[BALSHARFI-OLD]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/balsharfi/2012/08/04/configure-event-viewer-for-biztalk-server-errors/</guid>
      <description><![CDATA[It can be sometimes a drag to scroll over the Event Viewer looking for specific events, it gets even...]]></description>
      <content:encoded><![CDATA[<p>It can be sometimes a drag to scroll over the Event Viewer looking for specific events, it gets even worse if you have a busy server with lots of applications running and being accessed through remote desktop! <img class="wlEmoticon wlEmoticon-surprisedsmile" src="https://soacowboy.files.wordpress.com/2012/08/wlemoticon-surprisedsmile.png" alt="Surprised smile" /> Yeah I know the feeling exactly..!</p>
<table style="width: 590px;" border="0" cellspacing="3" cellpadding="3">
<tbody>
<tr style="background-color: #eaeaea;">
<td valign="top" width="28"><strong>Step</strong></td>
<td valign="top" width="551"><strong>Action</strong></td>
</tr>
<tr>
<td valign="top" width="28"><strong>1</strong></td>
<td valign="top" width="551">
<p align="justify">Launch the <strong>BizTalk Server Administration</strong> console from the <strong>Start</strong> menu.</p>
</td>
</tr>
<tr>
<td valign="top" width="28">&nbsp;</td>
<td valign="top" width="551"><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/8875.1_216558F5.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/8875.1_5F00_216558F5.png"><img style="display: inline; background-image: none;" title="1" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/0755.1_thumb_5F1240B1.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/0755.1_5F00_thumb_5F00_5F1240B1.png" alt="1" width="250" height="215" border="0" /></a></td>
</tr>
<tr>
<td valign="top" width="28"><strong>2</strong></td>
<td valign="top" width="551">
<p align="justify">Right click <strong>Custom Views</strong> under <strong>Event Viewer</strong> and select <strong>Create Custom View</strong>.</p>
</td>
</tr>
<tr>
<td valign="top" width="28">&nbsp;</td>
<td valign="top" width="551"><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/3005.2_5D6174DD.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/3005.2_5F00_5D6174DD.png"><img style="display: inline; background-image: none;" title="2" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/4555.2_thumb_3C6E0236.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/4555.2_5F00_thumb_5F00_3C6E0236.png" alt="2" width="361" height="168" border="0" /></a></td>
</tr>
<tr>
<td valign="top" width="28"><strong>3</strong></td>
<td valign="top" width="551">
<p align="justify">Use the <strong>Filter</strong> tab to select the <strong>BizTalk Server</strong> and <strong>XLANG/S</strong> from <strong>Event Sources</strong> dropdown when filtering <strong>By Source</strong>. According to this <a href="https://msdn.microsoft.com/en-us/library/ee250223(v=bts.10).aspx" target="_blank">MSDN article</a> we should consider the <strong>XLANG Scheduler</strong> as an events source too. Its up to you to add as much related sources to your deployment.</p>
<p>In case <strong>Event Sources</strong> dropdown fails to render items, which happened to me couple of times when using <strong>Event Viewer</strong> with <strong>BizTalk Administration</strong> in the same console <img class="wlEmoticon wlEmoticon-confusedsmile" src="https://soacowboy.files.wordpress.com/2012/08/wlemoticon-confusedsmile.png" alt="Confused smile" />. Either launch the <strong>Event Viewer</strong> from <strong>Administrative Tools</strong> or simply click on the <strong>XML</strong> tab and place a check on <strong>Edit query manually</strong>. You can use XPath to write the filter. If you are interested in writing XPath quries to filter events, this article will be an excellent starting point: <a href="https://blogs.technet.com/b/askds/archive/2011/09/26/advanced-xml-filtering-in-the-windows-event-viewer.aspx" target="_blank">Advanced XML filtering in the Windows Event Viewer</a>.</p>
<p>Please note that you can either use XPath in the <strong>XML</strong> tab to write your filter or the GUI in the <strong>Filter</strong> tab. You can't edit your filter using both tabs.</p>
</td>
</tr>
<tr>
<td valign="top" width="28">&nbsp;</td>
<td valign="top" width="551"><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/3581.3-1_4967E247.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/3581.3_2D00_1_5F00_4967E247.png"><img style="display: inline; background-image: none;" title="3-1" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/5732.3-1_thumb_00CDF376.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/5732.3_2D00_1_5F00_thumb_5F00_00CDF376.png" alt="3-1" width="361" height="271" border="0" /></a> <br /> <br /><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/8875.3-2_0A46B1EC.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/8875.3_2D00_2_5F00_0A46B1EC.png"><img style="display: inline; background-image: none;" title="3-2" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/3005.3-2_thumb_0902190D.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/3005.3_2D00_2_5F00_thumb_5F00_0902190D.png" alt="3-2" width="361" height="158" border="0" /></a></td>
</tr>
<tr>
<td valign="top" width="28"><strong>4</strong></td>
<td valign="top" width="551">
<p align="justify">Fill the name of the new custom view. I chose <strong>BizTalk Server</strong>.</p>
</td>
</tr>
<tr>
<td valign="top" width="28">&nbsp;</td>
<td valign="top" width="551"><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/5657.4_35AAD2E6.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/5657.4_5F00_35AAD2E6.png"><img style="display: inline; background-image: none;" title="4" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/51/metablogapi/0358.4_thumb_7B4F5D04.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-51-metablogapi/0358.4_5F00_thumb_5F00_7B4F5D04.png" alt="4" width="300" height="249" border="0" /></a></td>
</tr>
</tbody>
</table>
<p>and you&rsquo;re finished <img class="wlEmoticon wlEmoticon-smile" src="https://soacowboy.files.wordpress.com/2012/08/wlemoticon-smile.png" alt="Smile" /></p>]]></content:encoded>
    </item>
  </channel>
</rss>