<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0"><channel><title>Westin's Technical Log</title><link>http://weblogs.asp.net/wkriebel/default.aspx</link><description /><dc:language>en</dc:language><generator>CommunityServer 2007 SP1 (Build: 20510.895)</generator><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/asp/GCch" /><feedburner:info uri="asp/gcch" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item><title>Creating Interactive SharePoint List Views Using the JavaScript Client Object Model</title><link>http://feedproxy.google.com/~r/asp/GCch/~3/SfKc6G8AJis/creating-interactive-sharepoint-list-views-using-the-javascript-client-object-model.aspx</link><pubDate>Tue, 31 Jul 2012 02:05:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:8801562</guid><dc:creator>wkriebel</dc:creator><slash:comments>0</slash:comments><wfw:commentRss>http://weblogs.asp.net/wkriebel/rsscomments.aspx?PostID=8801562</wfw:commentRss><wfw:comment>http://weblogs.asp.net/wkriebel/commentapi.aspx?PostID=8801562</wfw:comment><comments>http://weblogs.asp.net/wkriebel/archive/2012/07/30/creating-interactive-sharepoint-list-views-using-the-javascript-client-object-model.aspx#comments</comments><description>&lt;p&gt;There are some situations where you prefer to allow users to directly interact with list items directly within the row of the list view. Normally interaction occurs through the edit control block (ECB), the ribbon, or one of the list item forms. However, sometimes the action is a simple toggle activity that the user should simply be able to directly initiate directly from the list view UI.&lt;/p&gt;  &lt;p&gt;Here is a general approach for enabling this.&lt;/p&gt;  &lt;p&gt;There are four components:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;1. The XSLT to cause render the interface on each list item&lt;/li&gt;    &lt;li&gt;2. A JavaScript file to handle the interaction using the SharePoint Client Side Object Model for JavaScript&lt;/li&gt;    &lt;li&gt;3. (Optional) a form to handle optional input for the change&lt;/li&gt;    &lt;li&gt;4. Some images for the interaction&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;In this example, we will allow the user to toggle the Status column of a document library between to arbitrary values “True” and “False”, and specify a comment in the comment history when toggling the value to “False”. Using this method you can allow the users to put a toggle switch on any list item, and have it write that value back to the list item directly from the list view.&lt;/p&gt;  &lt;h2&gt;Steps&lt;/h2&gt;  &lt;p&gt;Create a document library, or navigate to an existing one.&lt;/p&gt;  &lt;p&gt;Modify the desired SharePoint view using SharePoint Designer (See: &lt;a href="http://office.microsoft.com/en-us/sharepoint-designer-help/create-a-custom-list-view-using-sharepoint-designer-HA010379079.aspx" mce_href="http://office.microsoft.com/en-us/sharepoint-designer-help/create-a-custom-list-view-using-sharepoint-designer-HA010379079.aspx"&gt;Create a custom list view using SharePoint Designer&lt;/a&gt;). Using Table layout tools, add a column to hold the toggle XSL (not another data column, just a layout column).&lt;/p&gt;  &lt;p&gt;Add the following snippet to the column in code view, which looks at the Status column and displays the appropriate toggle UI, and wraps it with an OnClick event handler with the ID of the list item.&lt;/p&gt;  &lt;p&gt;&amp;lt;!-- BEGIN Toggle Control --&amp;gt;&lt;/p&gt;  &lt;p&gt;&amp;lt;xsl:if test="normalize-space($thisNode/@_Status) != 'False'" ddwrt:cf_explicit="1"&amp;gt;&lt;/p&gt;  &lt;p&gt;&amp;lt;div &amp;gt;&lt;/p&gt;  &lt;p&gt;&amp;lt;xsl:attribute name="onclick"&amp;gt; ToggleOff('&amp;lt;xsl:value-of select="$thisNode/@ID"/&amp;gt;');&lt;/p&gt;  &lt;p&gt;&amp;lt;/xsl:attribute&amp;gt;&lt;/p&gt;  &lt;p&gt;&amp;lt;div style='width:30px;display:inline-block'&amp;gt;On&amp;lt;/div&amp;gt; &amp;lt;img src='/style library/images/ToggleIn.png' alt='Click to Toggle Off' title='Click to Toggle Off'/&amp;gt;&lt;/p&gt;  &lt;p&gt;&amp;lt;/div&amp;gt;&lt;/p&gt;  &lt;p&gt;&amp;lt;/xsl:if&amp;gt;&lt;/p&gt;  &lt;p&gt;&amp;lt;xsl:if test="normalize-space($thisNode/@_Status) = 'False'" ddwrt:cf_explicit="1"&amp;gt;&lt;/p&gt;  &lt;p&gt;&amp;lt;div &amp;gt;&lt;/p&gt;  &lt;p&gt;&amp;lt;xsl:attribute name="onclick"&amp;gt; ToggleOn('&amp;lt;xsl:value-of select="$thisNode/@ID"/&amp;gt;');&lt;/p&gt;  &lt;p&gt;&amp;lt;/xsl:attribute&amp;gt;&lt;/p&gt;  &lt;p&gt;&amp;lt;div style='width:30px;display:inline-block'&amp;gt;Off&amp;lt;/div&amp;gt; &amp;lt;img src='/style library/images/ToggleOut.png' alt='Click to Toggle On' title='Click to Toggle On' /&amp;gt;&amp;lt;/div&amp;gt;&lt;/p&gt;  &lt;p&gt;&amp;lt;/xsl:if&amp;gt;&lt;/p&gt;  &lt;p&gt;&amp;lt;!-- END Toggle Control –&amp;gt;&lt;/p&gt;  &lt;p&gt;Add a content editor web part to the page and put a script reference in the HTML of the content editor web part such as:&lt;/p&gt;  &lt;blockquote&gt;   &lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;script&lt;/span&gt; &lt;span class="attr"&gt;src&lt;/span&gt;=”/&lt;span class="attr"&gt;style&lt;/span&gt; &lt;span class="attr"&gt;library&lt;/span&gt;/&lt;span class="attr"&gt;SPQuickToggle&lt;/span&gt;.&lt;span class="attr"&gt;js&lt;/span&gt;”&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;script&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
  &lt;style type="text/css"&gt;
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;&lt;/blockquote&gt;

&lt;p&gt;Upload the attached images to site collection /Style Library/Images/ and the .js and .aspx page to the /Style Library/.&amp;nbsp; In this case we are using two simple graphics that resemble the &lt;a href="http://msdn.microsoft.com/en-us/library/windows/apps/hh465475.aspx" mce_href="http://msdn.microsoft.com/en-us/library/windows/apps/hh465475.aspx"&gt;Metro toggle control&lt;/a&gt; and we are prompting the user to provide a reason for turning off the switch. Note: you can, of course, put them anywhere, but you’ll have to simply change the references.&lt;/p&gt;

&lt;p mce_keep="true"&gt;&amp;nbsp;&lt;/p&gt;

&lt;p&gt;You can look at the source of the JS file, but the key portions are:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;the use of the &lt;a href="http://msdn.microsoft.com/en-us/library/ff408909.aspx" mce_href="http://msdn.microsoft.com/en-us/library/ff408909.aspx"&gt;SP.UI.ModalDialog&lt;/a&gt; to take in a reason, and then handle the comment return result.&amp;nbsp; &lt;/li&gt;

  &lt;li&gt;Using the &lt;a href="http://msdn.microsoft.com/en-us/library/ee549053.aspx" mce_href="http://msdn.microsoft.com/en-us/library/ee549053.aspx"&gt;SP.ListItem.set_item&lt;/a&gt; method, which uses the &lt;a href="http://msdn.microsoft.com/en-us/library/ee659277.aspx" mce_href="http://msdn.microsoft.com/en-us/library/ee659277.aspx"&gt;update&lt;/a&gt; method, followed by the &lt;a href="http://msdn.microsoft.com/en-us/library/ff411085.aspx" mce_href="http://msdn.microsoft.com/en-us/library/ff411085.aspx"&gt;executeQueryAsync&lt;/a&gt; method of the &lt;a href="http://msdn.microsoft.com/en-us/library/ff408569" mce_href="http://msdn.microsoft.com/en-us/library/ff408569"&gt;SP.ClientContext&lt;/a&gt;. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Here is the relevant snippet:&lt;/p&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;var&lt;/span&gt; ToggleDialog;&lt;/pre&gt;
&lt;/div&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre&gt;&lt;span class="kwrd"&gt;var&lt;/span&gt; SPQuickToggleConfig = {&lt;/pre&gt;
&lt;/div&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre class="alt"&gt;    ReasonDialogURL: &lt;span class="str"&gt;"/style library/ToggleReason.aspx"&lt;/span&gt;,&lt;/pre&gt;
&lt;/div&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre&gt;    ToggleListTitle: &lt;span class="str"&gt;"Documents"&lt;/span&gt;,&lt;/pre&gt;
&lt;/div&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre class="alt"&gt;    ToggleField: &lt;span class="str"&gt;"_Status"&lt;/span&gt;,&lt;/pre&gt;
&lt;/div&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre&gt;    ToggleOnValue:&lt;span class="str"&gt;"True"&lt;/span&gt;,&lt;/pre&gt;
&lt;/div&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre class="alt"&gt;    ToggleOffValue: &lt;span class="str"&gt;"False"&lt;/span&gt;,&lt;/pre&gt;
&lt;/div&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre&gt;    ToggleReasonField: &lt;span class="str"&gt;"ItemHistory"&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre class="alt"&gt;};&lt;/pre&gt;
&lt;/div&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre&gt;&amp;nbsp;&lt;/pre&gt;
&lt;/div&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;function&lt;/span&gt; ToggleOut(itemID) {&lt;/pre&gt;
&lt;/div&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre&gt;    &lt;span class="rem"&gt;///&amp;lt;summary&amp;gt;Prompts the user for a reason for tailoring out an item&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre class="alt"&gt;    &lt;span class="rem"&gt;///&amp;lt;param name="itemID" type="integer" mayBeNull="false" integer="true"&amp;gt;The list item ID that is to be toggled off&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre&gt;    SP.UI.ModalDialog.commonModalDialogOpen(SPQuickToggleConfig.ReasonDialogURL, {&lt;/pre&gt;
&lt;/div&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre class="alt"&gt;        title: &lt;span class="str"&gt;"Reason for Toggling"&lt;/span&gt;,&lt;/pre&gt;
&lt;/div&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre&gt;        width: 300,&lt;/pre&gt;
&lt;/div&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre class="alt"&gt;        height: 175&lt;/pre&gt;
&lt;/div&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre&gt;&amp;nbsp;&lt;/pre&gt;
&lt;/div&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre class="alt"&gt;    }, ToggleWithReason, itemID);&lt;/pre&gt;
&lt;/div&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre&gt;&amp;nbsp;&lt;/pre&gt;
&lt;/div&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre class="alt"&gt;}&lt;/pre&gt;
&lt;/div&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre&gt;&amp;nbsp;&lt;/pre&gt;
&lt;/div&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;function&lt;/span&gt; ToggleWithReason(diagResult, diagReturnArgs) {&lt;/pre&gt;
&lt;/div&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre&gt;    &lt;span class="rem"&gt;///&amp;lt;summary&amp;gt;This is called after the dialog closes&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre class="alt"&gt;    &lt;span class="rem"&gt;///&amp;lt;param name="diagReturnArgs" type="object"&amp;gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre&gt;&amp;nbsp;&lt;/pre&gt;
&lt;/div&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre class="alt"&gt;    logger(&lt;span class="str"&gt;"Entering Toggling Reason"&lt;/span&gt;);&lt;/pre&gt;
&lt;/div&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre&gt;&amp;nbsp;&lt;/pre&gt;
&lt;/div&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre class="alt"&gt;    &lt;span class="kwrd"&gt;if&lt;/span&gt; (diagResult == 1) {&lt;/pre&gt;
&lt;/div&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre&gt;        ToggleDialog = SP.UI.ModalDialog.showWaitScreenWithNoClose(&lt;span class="str"&gt;"Toggling..."&lt;/span&gt;, &lt;span class="str"&gt;"Toggling this item"&lt;/span&gt;, 200, 200);&lt;/pre&gt;
&lt;/div&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre class="alt"&gt;        &lt;span class="kwrd"&gt;var&lt;/span&gt; itemID = diagReturnArgs[0];&lt;/pre&gt;
&lt;/div&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre&gt;        &lt;span class="kwrd"&gt;var&lt;/span&gt; toggleReason = diagReturnArgs[1];&lt;/pre&gt;
&lt;/div&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre class="alt"&gt;        &lt;span class="rem"&gt;//Get the current client context&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre&gt;        context = SP.ClientContext.get_current();&lt;/pre&gt;
&lt;/div&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre class="alt"&gt;        &lt;span class="kwrd"&gt;var&lt;/span&gt; toggleLibrary = context.get_web().get_lists().getByTitle(SPQuickToggleConfig.ToggleListTitle);&lt;/pre&gt;
&lt;/div&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre&gt;&amp;nbsp;&lt;/pre&gt;
&lt;/div&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre class="alt"&gt;        &lt;span class="rem"&gt;//Get the list item to update&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre&gt;        &lt;span class="kwrd"&gt;var&lt;/span&gt; listItem = toggleLibrary.getItemById(itemID);&lt;/pre&gt;
&lt;/div&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre class="alt"&gt;        &lt;span class="rem"&gt;//Set the new property value&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre&gt;        listItem.set_item(SPQuickToggleConfig.ToggleField, SPQuickToggleConfig.ToggleOffValue);&lt;/pre&gt;
&lt;/div&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre class="alt"&gt;        listItem.set_item(SPQuickToggleConfig.ToggleReasonField, toggleReason);&lt;/pre&gt;
&lt;/div&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre&gt;        logger(&lt;span class="str"&gt;"About to update list item."&lt;/span&gt;);&lt;/pre&gt;
&lt;/div&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre class="alt"&gt;        listItem.update();&lt;/pre&gt;
&lt;/div&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre&gt;        logger(&lt;span class="str"&gt;"About to execute async query."&lt;/span&gt;);&lt;/pre&gt;
&lt;/div&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre class="alt"&gt;        context.executeQueryAsync(ToggleOffSucceeded, ToggleOffFailed);&lt;/pre&gt;
&lt;/div&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre&gt;&amp;nbsp;&lt;/pre&gt;
&lt;/div&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre class="alt"&gt;    }&lt;/pre&gt;
&lt;/div&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre&gt;    &lt;span class="kwrd"&gt;else&lt;/span&gt; {&lt;/pre&gt;
&lt;/div&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre class="alt"&gt;        &lt;span class="rem"&gt;//Optional:  show canceled notification&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre&gt;&amp;nbsp;&lt;/pre&gt;
&lt;/div&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre class="alt"&gt;    }&lt;/pre&gt;
&lt;/div&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre&gt;&amp;nbsp;&lt;/pre&gt;
&lt;/div&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre class="alt"&gt;}&lt;/pre&gt;
&lt;/div&gt;
&lt;style type="text/css"&gt;
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;

&lt;p mce_keep="true"&gt;&amp;nbsp;&lt;/p&gt;

&lt;p&gt;As always, the code carries no warranties express or implied.&lt;/p&gt;

&lt;p&gt;Linkbacks are always appreciated.&lt;/p&gt;

&lt;p mce_keep="true"&gt;&amp;nbsp;&lt;/p&gt;

&lt;p&gt;Footnote:&amp;nbsp; You’ll see my code references at the beginning of the JS file which enable great intellisense in Visual Studio.&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=8801562" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/asp/GCch/~4/SfKc6G8AJis" height="1" width="1"/&gt;</description><enclosure url="http://weblogs.asp.net/wkriebel/attachment/8801562.ashx" length="4064" type="application/x-zip-compressed" /><category domain="http://weblogs.asp.net/wkriebel/archive/tags/SharePoint/default.aspx">SharePoint</category><category domain="http://weblogs.asp.net/wkriebel/archive/tags/JavaScript/default.aspx">JavaScript</category><category domain="http://weblogs.asp.net/wkriebel/archive/tags/CSOM/default.aspx">CSOM</category><feedburner:origLink>http://weblogs.asp.net/wkriebel/archive/2012/07/30/creating-interactive-sharepoint-list-views-using-the-javascript-client-object-model.aspx</feedburner:origLink></item><item><title>Using Excel to Geocode with Bing Maps Web Services</title><link>http://feedproxy.google.com/~r/asp/GCch/~3/julIYP326Jc/using-excel-to-geocode-with-bing-maps-web-services.aspx</link><pubDate>Tue, 04 Oct 2011 15:00:59 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7978538</guid><dc:creator>wkriebel</dc:creator><slash:comments>1</slash:comments><wfw:commentRss>http://weblogs.asp.net/wkriebel/rsscomments.aspx?PostID=7978538</wfw:commentRss><wfw:comment>http://weblogs.asp.net/wkriebel/commentapi.aspx?PostID=7978538</wfw:comment><comments>http://weblogs.asp.net/wkriebel/archive/2011/10/04/using-excel-to-geocode-with-bing-maps-web-services.aspx#comments</comments><description>&lt;p&gt;A lot of folks have to geocode data that they get from various folks in their organization, and it often makes its way in to Excel.&amp;#160; Of course, you can batch geocode using Bing Maps Services, but in some scenarios it is a lot more convenient or reasonable to use Excel.&lt;/p&gt;  &lt;p&gt;Wouldn’t it be handy if there was an Excel function like =GEOCODE(&amp;lt;Some Address&amp;gt;)?&lt;/p&gt;  &lt;p&gt;Well, here it is.&lt;/p&gt;  &lt;p&gt;This uses the &lt;a href="http://msdn.microsoft.com/en-us/library/ff701713.aspx"&gt;Bing Maps REST services&lt;/a&gt; and synchronous VBA and XML.&amp;#160; This is similar to asynchronous JavaScript and XML (AJAX) but in this case it would be SVAX.&lt;/p&gt;  &lt;p&gt;This code is provided without warranty, etc.&lt;/p&gt;  &lt;p&gt;You will need a Bing Maps key (See: &lt;a href="http://msdn.microsoft.com/en-us/library/ff428642.aspx"&gt;Getting a Bing Maps Key&lt;/a&gt;), Excel, and an internet connection.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Option 1&lt;/strong&gt;:&amp;#160; Create your own module&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Expose the Developer tools (See: &lt;a href="http://office.microsoft.com/en-us/excel-help/show-the-developer-tab-HA101819080.aspx?CTT=1"&gt;Show the Developer Tab&lt;/a&gt;)&lt;/li&gt;    &lt;li&gt;Click the Visual Basic button &lt;/li&gt;    &lt;li&gt;Insert a Module &lt;/li&gt;    &lt;li&gt;Paste in this code and modify as you see fit: &lt;/li&gt; &lt;/ol&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;font face="Courier New"&gt;Option Explicit&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New"&gt;Function GeocodeAddress(address As String, BingMapsKey As String) As String&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160; Dim oHttpReq As MSXML2.XMLHTTP&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160; Set oHttpReq = New MSXML2.XMLHTTP&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160; oHttpReq.Open &amp;quot;get&amp;quot;, &amp;quot;&lt;/font&gt;&lt;a href="https://dev.virtualearth.net/REST/v1/Locations?q="&gt;&lt;font face="Courier New"&gt;https://dev.virtualearth.net/REST/v1/Locations?q=&lt;/font&gt;&lt;/a&gt;&lt;font face="Courier New"&gt;&amp;quot; &amp;amp; address &amp;amp; &amp;quot;&amp;amp;o=xml&amp;amp;key=&amp;quot; &amp;amp; BingMapsKey, &amp;quot;false&amp;quot;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160; oHttpReq.send&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160; If oHttpReq.readyState = 4 Then&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; GeocodeAddress = oHttpReq.responseXML.SelectNodes(&amp;quot;//Point/Latitude&amp;quot;).Item(0).Text &amp;amp; &amp;quot;,&amp;quot; &amp;amp; oHttpReq.responseXML.SelectNodes(&amp;quot;//Point/Longitude&amp;quot;).Item(0).Text&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160; End If&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New"&gt;End Function&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New"&gt;Function DriveDistance(From As String, Dest As String, BingMapsKey As String) As String&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160; Dim oHttpReq As MSXML2.XMLHTTP&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160; Set oHttpReq = New MSXML2.XMLHTTP&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160; oHttpReq.Open &amp;quot;get&amp;quot;, &amp;quot;&lt;/font&gt;&lt;a href="https://dev.virtualearth.net/REST/V1/Routes/Driving?o=xml&amp;amp;wp.0="&gt;&lt;font face="Courier New"&gt;https://dev.virtualearth.net/REST/V1/Routes/Driving?o=xml&amp;amp;wp.0=&lt;/font&gt;&lt;/a&gt;&lt;font face="Courier New"&gt;&amp;quot; &amp;amp; From &amp;amp; &amp;quot;&amp;amp;wp.1=&amp;quot; &amp;amp; Dest &amp;amp; &amp;quot;&amp;amp;avoid=minimizeTolls&amp;amp;key=&amp;quot; &amp;amp; BingMapsKey, &amp;quot;false&amp;quot;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160; oHttpReq.send&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160; If oHttpReq.readyState = 4 Then&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; DriveDistance = oHttpReq.responseXML.SelectNodes(&amp;quot;//TravelDistance&amp;quot;).Item(0).Text&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160; End If&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New"&gt;End Function&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New"&gt;Function GetStateCountryFromPoint(Lat As String, Lon As String, BingMapsKey As String) As String&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160; Dim oHttpReq As MSXML2.XMLHTTP&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160; Set oHttpReq = New MSXML2.XMLHTTP&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160; oHttpReq.Open &amp;quot;get&amp;quot;, &amp;quot;&lt;/font&gt;&lt;a href="https://dev.virtualearth.net/REST/v1/Locations/"&gt;&lt;font face="Courier New"&gt;https://dev.virtualearth.net/REST/v1/Locations/&lt;/font&gt;&lt;/a&gt;&lt;font face="Courier New"&gt;&amp;quot; &amp;amp; Lat &amp;amp; &amp;quot;,&amp;quot; &amp;amp; Lon &amp;amp; &amp;quot;?o=xml&amp;amp;key=&amp;quot; &amp;amp; BingMapsKey, &amp;quot;false&amp;quot;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160; oHttpReq.send&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160; If oHttpReq.readyState = 4 Then&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; If oHttpReq.responseXML.SelectNodes(&amp;quot;//Address/AdminDistrict&amp;quot;).Length &amp;gt; 0 Then&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; GetStateCountryFromPoint = oHttpReq.responseXML.SelectNodes(&amp;quot;//Address/AdminDistrict&amp;quot;).Item(0).Text &amp;amp; &amp;quot;, &amp;quot; &amp;amp; oHttpReq.responseXML.SelectNodes(&amp;quot;//Address/CountryRegion&amp;quot;).Item(0).Text&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Else&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; GetStateCountryFromPoint = &amp;quot;No Country&amp;quot;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; End If&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160; End If&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New"&gt;End Function&lt;/font&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Now you can use cell references or addresses to geocode your addresses or find the distance between two locations.&lt;/p&gt;  &lt;p&gt;E.g. =GeocodeAddress(“San Antonio, TX”, BingMapsKey)&lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/wkriebel/clip_image002_62C12ABF.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="clip_image002" border="0" alt="clip_image002" src="http://weblogs.asp.net/blogs/wkriebel/clip_image002_thumb_115733A2.jpg" width="396" height="193" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Option 2&lt;/strong&gt;:&amp;#160;&amp;#160; Add this file to your Add-ins directory.&lt;/p&gt;  &lt;p&gt;&amp;#160; &lt;iframe style="padding-bottom: 0px; background-color: #fcfcfc; padding-left: 0px; width: 98px; padding-right: 0px; height: 115px; padding-top: 0px" title="Preview" marginheight="0" src="https://skydrive.live.com/embedicon.aspx/Maps/BingMapsForExcel.xlam?cid=fd2e2af28bb0e3b9&amp;amp;sc=documents" frameborder="0" marginwidth="0" scrolling="no"&gt;&lt;/iframe&gt;&lt;/p&gt;  &lt;p&gt;(See: &lt;a href="http://office.microsoft.com/en-us/excel-help/add-or-remove-add-ins-HP010342658.aspx?CTT=1"&gt;Office.com: Add or remove add-ins&lt;/a&gt; )&lt;/p&gt;  &lt;p&gt;This also includes several other geocoding functions.&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7978538" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/asp/GCch/~4/julIYP326Jc" height="1" width="1"/&gt;</description><category domain="http://weblogs.asp.net/wkriebel/archive/tags/Bing+Maps/default.aspx">Bing Maps</category><category domain="http://weblogs.asp.net/wkriebel/archive/tags/Excel/default.aspx">Excel</category><category domain="http://weblogs.asp.net/wkriebel/archive/tags/GIS/default.aspx">GIS</category><feedburner:origLink>http://weblogs.asp.net/wkriebel/archive/2011/10/04/using-excel-to-geocode-with-bing-maps-web-services.aspx</feedburner:origLink></item><item><title>Automatically Update Charts, Graphs, and Reports in PowerPoint</title><link>http://feedproxy.google.com/~r/asp/GCch/~3/236S8PJOZQo/automatically-update-charts-graphs-and-reports-in-powerpoint.aspx</link><pubDate>Tue, 04 Oct 2011 14:14:26 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7978457</guid><dc:creator>wkriebel</dc:creator><slash:comments>0</slash:comments><wfw:commentRss>http://weblogs.asp.net/wkriebel/rsscomments.aspx?PostID=7978457</wfw:commentRss><wfw:comment>http://weblogs.asp.net/wkriebel/commentapi.aspx?PostID=7978457</wfw:comment><comments>http://weblogs.asp.net/wkriebel/archive/2011/10/04/automatically-update-charts-graphs-and-reports-in-powerpoint.aspx#comments</comments><description>&lt;p&gt;Here is a neat trick for getting graphs in PowerPoint to automatically update from SQL Reporting Services.&lt;/p&gt;  &lt;p&gt;Prerequisites:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Word&lt;/li&gt;    &lt;li&gt;PowerPoint&lt;/li&gt;    &lt;li&gt;SQL Reporting Services&lt;/li&gt; &lt;/ul&gt;  &lt;ol&gt;   &lt;li&gt;Go directly to the report server, not the SharePoint integrated mode. Have it output to HTML, &lt;/li&gt;    &lt;li&gt;insert it into a field in Word, then &lt;/li&gt;    &lt;li&gt;embed that word document in a PowerPoint slide.&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;&lt;a href="http://ReportServerMachine/ReportServer?http://LocationOfReport/Shared%20Documents/DailyReport.rdl&amp;amp;rs:Command=Render&amp;amp;rs:Format=HTML4.0&amp;amp;rc:Toolbar=False"&gt;http://ReportServerMachine/ReportServer?http://LocationOfReport/Shared%20Documents/DailyReport.rdl&amp;amp;rs:Command=Render&amp;amp;rs:Format=HTML4.0&amp;amp;rc:Toolbar=False&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Alternatively, you can render it as an image:   &lt;br /&gt;&lt;a href="http://ReportServerMachine/ReportServer?http://LocationOfReport/Shared%20Documents/DailyReport.rdl&amp;amp;rs:Command=Render&amp;amp;rs:Format=Image&amp;amp;rc:Toolbar=False&amp;amp;rc:OutputFormat=PNG"&gt;http://ReportServerMachine/ReportServer?http://LocationOfReport/Shared%20Documents/DailyReport.rdl&amp;amp;rs:Command=Render&amp;amp;rs:Format=Image&amp;amp;rc:Toolbar=False&amp;amp;rc:OutputFormat=PNG&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;The reason for this is that the SharePoint integration puts in a bunch of AJAX that confuses Word. The report server can produce pure HTML with no Javascript.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Thanks:&amp;#160; &lt;a href="http://blogs.technet.com/b/sqlman/archive/2010/06/15/incorporating-reporting-services-reports-in-word-and-powerpoint.aspx"&gt;Shashank Pawar&lt;/a&gt;, his post has some screenshots.&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7978457" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/asp/GCch/~4/236S8PJOZQo" height="1" width="1"/&gt;</description><category domain="http://weblogs.asp.net/wkriebel/archive/tags/Word/default.aspx">Word</category><category domain="http://weblogs.asp.net/wkriebel/archive/tags/Reporting+Services/default.aspx">Reporting Services</category><category domain="http://weblogs.asp.net/wkriebel/archive/tags/PowerPoint/default.aspx">PowerPoint</category><feedburner:origLink>http://weblogs.asp.net/wkriebel/archive/2011/10/04/automatically-update-charts-graphs-and-reports-in-powerpoint.aspx</feedburner:origLink></item><item><title>AutoCorrect Common Microsoft Brand Names with this Script and Word</title><link>http://feedproxy.google.com/~r/asp/GCch/~3/pqnXJ3RcI9g/autocorrect-common-microsoft-brand-names-with-this-script-and-word.aspx</link><pubDate>Wed, 12 May 2010 01:46:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7479935</guid><dc:creator>wkriebel</dc:creator><slash:comments>1</slash:comments><wfw:commentRss>http://weblogs.asp.net/wkriebel/rsscomments.aspx?PostID=7479935</wfw:commentRss><wfw:comment>http://weblogs.asp.net/wkriebel/commentapi.aspx?PostID=7479935</wfw:comment><comments>http://weblogs.asp.net/wkriebel/archive/2010/05/11/autocorrect-common-microsoft-brand-names-with-this-script-and-word.aspx#comments</comments><description>&lt;P mce_keep="true"&gt;Inspired by this post: &lt;A href="http://on10.net/blogs/sarahintampa/Is-it-NET-Net-or-net/"&gt;http://on10.net/blogs/sarahintampa/Is-it-NET-Net-or-net/&lt;/A&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;Here is a script to add the common misspellings of Microsoft brands to Word AutoCorrect.&lt;/P&gt;
&lt;P mce_keep="true"&gt;Copy and paste this into a file with a .JS extension and run it from your local computer.&amp;nbsp; Then launch Word and try typing Powerpoint and notice that it automatically changes to PowerPoint.&amp;nbsp; &lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P mce_keep="true"&gt;&lt;FONT size=1 face="courier new,courier"&gt;// JScript source code&lt;BR&gt;//Adds Word AutoCorrect entries for common misspellings and capitalizations for Microsoft Brands&lt;BR&gt;//inspired by &lt;/FONT&gt;&lt;A href="http://blogs.msdn.com/danielfe/archive/2010/04/27/correcting-grammar-for-microsoft-products-and-technology.aspx"&gt;&lt;FONT size=1 face="courier new,courier"&gt;http://blogs.msdn.com/danielfe/archive/2010/04/27/correcting-grammar-for-microsoft-products-and-technology.aspx&lt;/FONT&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;FONT size=1 face="courier new,courier"&gt;var wd = new ActiveXObject("Word.Application");&lt;BR&gt;var AutoCorrections = [[".net", ".NET"], [".Net", ".NET"], ["Clear Type", "ClearType"], ["Kin", "KIN"], ["Powerpoint", "PowerPoint"], ["Power Point", "PowerPoint"],&lt;BR&gt;["Seadragon", "SeaDragon"], ["Xbox Live", "Xbox LIVE"], ["Bizspark", "BizSpark"], ["Sharepoint", "SharePoint"], ["PlayTo", "Play To"],&lt;BR&gt;["Infopath", "InfoPath"], [".net", ".NET"], [".Net", ".NET"], ["AdCenter", "adCenter"],&lt;BR&gt;["Ad Center", "adCenter"], ["Adcenter", "adCenter"], ["Ado.net", "ADO.NET"], ["ADO.Net", "ADO.NET"],&lt;BR&gt;["Asp.net", "ASP.NET"], ["ASP.Net", "ASP.NET"],&lt;BR&gt;["Biz Spark", "BizSpark"], ["Bizspark", "BizSpark"],&lt;BR&gt;["Clear Type", "ClearType"], ["Clear type", "ClearType"],&lt;BR&gt;["Cleartype", "ClearType"], ["Directaccess", "DirectAccess"],&lt;BR&gt;["Direct Access", "DirectAccess"], ["Direct Show", "DirectShow"],&lt;BR&gt;["Directshow", "DirectShow"], ["Direct x", "DirectX"],&lt;BR&gt;["Dream Spark", "DreamSpark"], ["Dreamspark", "DreamSpark"],&lt;BR&gt;["Home Group", "HomeGroup"], ["Homegroup", "HomeGroup"],&lt;BR&gt;["HoTMaiL", "Hotmail"], ["Hot Mail", "Hotmail"], ["Hot Mail", "Hotmail"],&lt;BR&gt;["Info Path", "InfoPath"], ["Infopath", "InfoPath"],&lt;BR&gt;["intellisense", "IntelliSense"], ["Intellisense", "IntelliSense"],&lt;BR&gt;["Iron Ruby", "IronRuby"], ["MSN Messenger", "Windows Live Messenger"],&lt;BR&gt;["onenote", "OneNote"], ["Onenote", "OneNote"], ["One Note", "OneNote"],&lt;BR&gt;["XBOX", "Xbox"], ["xbox", "XBox"], ["Xaml", "XAML"],&lt;BR&gt;["Sql Server", "SQL Server"], ["SilverLight", "Silverlight"],&lt;BR&gt;["Share Point", "SharePoint"], ["sharepoint", "SharePoint"]];&lt;/FONT&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;FONT size=1 face="courier new,courier"&gt;for (var i=0;i&amp;lt;AutoCorrections.length;i++)&lt;BR&gt;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; wd.AutoCorrect.Entries.Add(AutoCorrections[i][0],AutoCorrections[i][1]);&lt;BR&gt;}&lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7479935" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/asp/GCch/~4/pqnXJ3RcI9g" height="1" width="1"/&gt;</description><category domain="http://weblogs.asp.net/wkriebel/archive/tags/Scripting/default.aspx">Scripting</category><category domain="http://weblogs.asp.net/wkriebel/archive/tags/Office/default.aspx">Office</category><category domain="http://weblogs.asp.net/wkriebel/archive/tags/Word/default.aspx">Word</category><feedburner:origLink>http://weblogs.asp.net/wkriebel/archive/2010/05/11/autocorrect-common-microsoft-brand-names-with-this-script-and-word.aspx</feedburner:origLink></item><item><title>Simple Trick for making an existing web part async</title><link>http://feedproxy.google.com/~r/asp/GCch/~3/4MlATYh9QA8/simple-trick-for-making-an-existing-web-part-async.aspx</link><pubDate>Fri, 05 Feb 2010 20:10:17 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7335984</guid><dc:creator>wkriebel</dc:creator><slash:comments>0</slash:comments><wfw:commentRss>http://weblogs.asp.net/wkriebel/rsscomments.aspx?PostID=7335984</wfw:commentRss><wfw:comment>http://weblogs.asp.net/wkriebel/commentapi.aspx?PostID=7335984</wfw:comment><comments>http://weblogs.asp.net/wkriebel/archive/2010/02/05/simple-trick-for-making-an-existing-web-part-async.aspx#comments</comments><description>&lt;p&gt;This is one of my favorite stupid SharePoint tricks.&lt;/p&gt;  &lt;p&gt;If you have a situation where there is a web part (or any web page component) that is slow, and it is slowing the page render time for your page this is a handy trick.&lt;/p&gt;  &lt;p&gt;Here is the summary:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Create another web part page and add the slow loading web part. &lt;/li&gt;    &lt;li&gt;Look at the source code for the render page and get the control id of the div tag for the web part (the skewer click in the IE8 dev toolbar or something similar is an easy way to do this). &lt;/li&gt;    &lt;li&gt;Back on the page where you originally wanted the web part, add a content editor web part &lt;/li&gt;    &lt;li&gt;Put the following script in the source of the web part: &lt;/li&gt; &lt;/ol&gt;  &lt;blockquote&gt;   &lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;var&lt;/span&gt; ctId=&lt;span class="str"&gt;&amp;quot;ctl00_&amp;quot;&lt;/span&gt;; //Replace this with your control ID from step 2
&lt;span class="kwrd"&gt;var&lt;/span&gt; sourceURL=&lt;span class="str"&gt;&amp;quot;http://YourServer/somesite/PageThatHasTheSlowWebPart.aspx&amp;quot;&lt;/span&gt;;
&lt;span class="kwrd"&gt;var&lt;/span&gt; outputId=&lt;span class="str"&gt;&amp;quot;MakeshiftAsyncWebPart&amp;quot;&lt;/span&gt;;

&lt;span class="rem"&gt;_spBodyOnLoadFunctionNames.push(&amp;quot;renderASlowWebPartAsynchronously&amp;quot;); &lt;/span&gt;

&lt;span class="kwrd"&gt;function&lt;/span&gt; renderASlowWebPartAsynchronously()
{
      loader(sourceURL);
}

&lt;span class="kwrd"&gt;function&lt;/span&gt; renderOutput(output)
{
document.getElementById(outputId).innerHTML=output;
      
}

&lt;span class="kwrd"&gt;function&lt;/span&gt; getElementByClassname(className)
{
      &lt;span class="kwrd"&gt;var&lt;/span&gt; allItems = document.all;
      &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;var&lt;/span&gt; i=0; i &amp;lt; allItems.length; i++) 
      {
            &lt;span class="kwrd"&gt;if&lt;/span&gt; (allItems[i].className == className) 
            {
                  &lt;span class="kwrd"&gt;return&lt;/span&gt; allItems[i];
            }
      }
      &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;null&lt;/span&gt;;
}

&lt;span class="kwrd"&gt;function&lt;/span&gt; getElementByClassnameFromString(className,str)
{
      &lt;span class="kwrd"&gt;var&lt;/span&gt; myTempDiv=document.createElement(&lt;span class="str"&gt;&amp;quot;div&amp;quot;&lt;/span&gt;);
      myTempDiv.innerHTML=str;
      
      &lt;span class="kwrd"&gt;var&lt;/span&gt; allItems = myTempDiv.all;
      &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;var&lt;/span&gt; i=0; i &amp;lt; allItems.length; i++) 
      {
            &lt;span class="kwrd"&gt;if&lt;/span&gt; (allItems[i].className == className) 
            {
                  &lt;span class="kwrd"&gt;return&lt;/span&gt; allItems[i];
            }
      }
      &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;null&lt;/span&gt;;
}

&lt;span class="kwrd"&gt;function&lt;/span&gt; getElementByIDFromString(myID,str)
{
      &lt;span class="kwrd"&gt;var&lt;/span&gt; myTempDiv=document.createElement(&lt;span class="str"&gt;&amp;quot;div&amp;quot;&lt;/span&gt;);
      myTempDiv.innerHTML=str;
      
      &lt;span class="kwrd"&gt;var&lt;/span&gt; allItems = myTempDiv.all;
      &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;var&lt;/span&gt; i=0; i &amp;lt; allItems.length; i++) 
      {
            &lt;span class="kwrd"&gt;if&lt;/span&gt; (allItems[i].id == myID) 
            {
                  &lt;span class="kwrd"&gt;return&lt;/span&gt; allItems[i];
            }
      }
      
      &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;null&lt;/span&gt;;
}

&lt;span class="kwrd"&gt;function&lt;/span&gt; loader(url) {
  
  &lt;span class="kwrd"&gt;if&lt;/span&gt; (window.XMLHttpRequest) {
    request = &lt;span class="kwrd"&gt;new&lt;/span&gt; XMLHttpRequest();
  } &lt;span class="kwrd"&gt;else&lt;/span&gt; &lt;span class="kwrd"&gt;if&lt;/span&gt; (window.ActiveXObject) {
    request = &lt;span class="kwrd"&gt;new&lt;/span&gt; ActiveXObject(&lt;span class="str"&gt;&amp;quot;Microsoft.XMLHTTP&amp;quot;&lt;/span&gt;);
  }
  &lt;span class="kwrd"&gt;if&lt;/span&gt; (request != undefined) 
  {
    request.onreadystatechange = &lt;span class="kwrd"&gt;function&lt;/span&gt;() {asyncHandler(url);};
    request.open(&lt;span class="str"&gt;&amp;quot;GET&amp;quot;&lt;/span&gt;, url, &lt;span class="kwrd"&gt;true&lt;/span&gt;);
    request.send(&lt;span class="str"&gt;&amp;quot;&amp;quot;&lt;/span&gt;);
  }
}  

&lt;span class="kwrd"&gt;function&lt;/span&gt; asyncHandler(url) 
{
  &lt;span class="kwrd"&gt;if&lt;/span&gt; (request.readyState == 4) 
  { 
    &lt;span class="kwrd"&gt;if&lt;/span&gt; (request.status == 200) 
    {
      &lt;span class="kwrd"&gt;var&lt;/span&gt; output=getElementByIDFromString(ctId,request.responseText).innerHTML;
      &lt;span class="kwrd"&gt;if&lt;/span&gt; (output==&lt;span class="kwrd"&gt;null&lt;/span&gt;)
      {
            &lt;span class="rem"&gt;/* &lt;/span&gt;
&lt;span class="rem"&gt;            //Optional:  &lt;/span&gt;
&lt;span class="rem"&gt;            output=&amp;quot;No results&amp;quot;;&lt;/span&gt;
&lt;span class="rem"&gt;            renderOutput(output);&lt;/span&gt;
&lt;span class="rem"&gt;            */&lt;/span&gt;
      }
      &lt;span class="kwrd"&gt;else&lt;/span&gt;
            renderOutput(output);
    } 
    &lt;span class="kwrd"&gt;else&lt;/span&gt; 
    {
      &lt;span class="rem"&gt;//Optional&lt;/span&gt;
      &lt;span class="rem"&gt;//document.getElementById('dOutput').innerHTML=&amp;quot; Error: &amp;quot;+ request.status + &amp;quot;\n&amp;quot; +request.statusText;&lt;/span&gt;
    }
  }
}

&amp;lt;div id=”MakeshiftAsyncWebPart”&amp;gt;&amp;lt;/div&amp;gt;&lt;/pre&gt;
&lt;/blockquote&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;You can even reference an &lt;a href="http://weblogs.asp.net/wkriebel/archive/2010/01/26/animated-gifs-in-sharepoint-2007-for-ajax-progress-indicators.aspx"&gt;Animated GIF in SharePoint 2007 for AJAX progress indicators&lt;/a&gt; so that users know the web part is loading.&lt;/p&gt;

&lt;p&gt;Keep in mind that users won’t get the security prompt for cross site scripting if the two pages are on the same server.&lt;/p&gt;

&lt;p&gt;Of course: This code is provided as an example. Use at your own risk. No warranties.&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7335984" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/asp/GCch/~4/4MlATYh9QA8" height="1" width="1"/&gt;</description><category domain="http://weblogs.asp.net/wkriebel/archive/tags/SharePoint/default.aspx">SharePoint</category><category domain="http://weblogs.asp.net/wkriebel/archive/tags/Portals/default.aspx">Portals</category><category domain="http://weblogs.asp.net/wkriebel/archive/tags/Scripting/default.aspx">Scripting</category><feedburner:origLink>http://weblogs.asp.net/wkriebel/archive/2010/02/05/simple-trick-for-making-an-existing-web-part-async.aspx</feedburner:origLink></item><item><title>Animated GIFs in SharePoint 2007 for AJAX progress indicators</title><link>http://feedproxy.google.com/~r/asp/GCch/~3/Tqv7bqaXGBM/animated-gifs-in-sharepoint-2007-for-ajax-progress-indicators.aspx</link><pubDate>Tue, 26 Jan 2010 19:22:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7324047</guid><dc:creator>wkriebel</dc:creator><slash:comments>5</slash:comments><wfw:commentRss>http://weblogs.asp.net/wkriebel/rsscomments.aspx?PostID=7324047</wfw:commentRss><wfw:comment>http://weblogs.asp.net/wkriebel/commentapi.aspx?PostID=7324047</wfw:comment><comments>http://weblogs.asp.net/wkriebel/archive/2010/01/26/animated-gifs-in-sharepoint-2007-for-ajax-progress-indicators.aspx#comments</comments><description>&lt;P&gt;Here are possible AJAX animation alternatives in http://&amp;lt;myMOSSServer&amp;gt;/&amp;lt;anysiteurl&amp;gt;/_layouts/images/&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Ewr133.gif or GEARS_AN.gif (same) &lt;BR&gt;&lt;IMG style="DISPLAY: inline" title=clip_image001 alt=clip_image001 src="http://weblogs.asp.net/blogs/wkriebel/clip_image001_1D181D65.gif" width=68 height=68 mce_src="http://weblogs.asp.net/blogs/wkriebel/clip_image001_1D181D65.gif"&gt;&lt;/LI&gt;
&lt;LI&gt;Kpiprogressbar.gif &lt;BR&gt;&lt;IMG style="DISPLAY: inline" title=clip_image002 alt=clip_image002 src="http://weblogs.asp.net/blogs/wkriebel/clip_image002_7AE011DE.gif" width=63 height=12 mce_src="http://weblogs.asp.net/blogs/wkriebel/clip_image002_7AE011DE.gif"&gt;&lt;/LI&gt;
&lt;LI&gt;Ewr120.gif &lt;BR&gt;&lt;IMG style="DISPLAY: inline" title=clip_image003 alt=clip_image003 src="http://weblogs.asp.net/blogs/wkriebel/clip_image003_67BEE532.gif" width=204 height=114 mce_src="http://weblogs.asp.net/blogs/wkriebel/clip_image003_67BEE532.gif"&gt;&lt;/LI&gt;
&lt;LI&gt;Crperspc.gif &lt;BR&gt;&lt;IMG style="DISPLAY: inline" title=clip_image004 alt=clip_image004 src="http://weblogs.asp.net/blogs/wkriebel/clip_image004_1F912956.gif" width=156 height=7 mce_src="http://weblogs.asp.net/blogs/wkriebel/clip_image004_1F912956.gif"&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;These gifs are on all MOSS servers and can be used if you need a quick progress indicator image.&lt;/P&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7324047" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/asp/GCch/~4/Tqv7bqaXGBM" height="1" width="1"/&gt;</description><category domain="http://weblogs.asp.net/wkriebel/archive/tags/SharePoint/default.aspx">SharePoint</category><feedburner:origLink>http://weblogs.asp.net/wkriebel/archive/2010/01/26/animated-gifs-in-sharepoint-2007-for-ajax-progress-indicators.aspx</feedburner:origLink></item><item><title>SharePoint Wiki Page Incoming Links Web Part</title><link>http://feedproxy.google.com/~r/asp/GCch/~3/bB0NRjGrpc4/sharepoint-wiki-page-incoming-links-web-part.aspx</link><pubDate>Wed, 14 Oct 2009 17:36:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7229893</guid><dc:creator>wkriebel</dc:creator><slash:comments>3</slash:comments><wfw:commentRss>http://weblogs.asp.net/wkriebel/rsscomments.aspx?PostID=7229893</wfw:commentRss><wfw:comment>http://weblogs.asp.net/wkriebel/commentapi.aspx?PostID=7229893</wfw:comment><comments>http://weblogs.asp.net/wkriebel/archive/2009/10/14/sharepoint-wiki-page-incoming-links-web-part.aspx#comments</comments><description>&lt;P&gt;Ever want the “Incoming Links” page to show up &lt;U&gt;on&lt;/U&gt; the wiki page rather than be a separate page?&amp;nbsp; Well, here is a handy web part you can add to a wiki page.&lt;/P&gt;
&lt;P&gt;This provided without warranty, just link to this article and tell folks how you used it.&lt;/P&gt;
&lt;P&gt;It uses some clever JavaScript to get the content from that page and asynchronously render it in a web part.&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;Upload the &lt;A href="http://cid-fd2e2af28bb0e3b9.skydrive.live.com/self.aspx/Public/Incoming%20Links.dwp?download" mce_href="http://cid-fd2e2af28bb0e3b9.skydrive.live.com/self.aspx/Public/Incoming%20Links.dwp?download"&gt;Incoming Links.dwp&lt;/A&gt; file to your Web Part Gallery&lt;/LI&gt;
&lt;LI&gt;Edit the wiki page in question (not the wiki content, the whole page)&lt;/LI&gt;
&lt;LI&gt;Add the Incoming Links web part to the web part zone at the bottom of the page.&lt;/LI&gt;&lt;/OL&gt;
&lt;P&gt;This will either prevent you from the hassle of also having to support wikimedia in your environment (which is really great if you can) or buy you time until you can deploy SharePoint 2010.&lt;/P&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7229893" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/asp/GCch/~4/bB0NRjGrpc4" height="1" width="1"/&gt;</description><category domain="http://weblogs.asp.net/wkriebel/archive/tags/SharePoint/default.aspx">SharePoint</category><feedburner:origLink>http://weblogs.asp.net/wkriebel/archive/2009/10/14/sharepoint-wiki-page-incoming-links-web-part.aspx</feedburner:origLink></item><item><title>Setting Project Priorities from TFS Priorities</title><link>http://feedproxy.google.com/~r/asp/GCch/~3/QiPtaeZJakY/setting-project-priorities-from-tfs-priorities.aspx</link><pubDate>Wed, 16 Sep 2009 15:13:18 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7208194</guid><dc:creator>wkriebel</dc:creator><slash:comments>0</slash:comments><wfw:commentRss>http://weblogs.asp.net/wkriebel/rsscomments.aspx?PostID=7208194</wfw:commentRss><wfw:comment>http://weblogs.asp.net/wkriebel/commentapi.aspx?PostID=7208194</wfw:comment><comments>http://weblogs.asp.net/wkriebel/archive/2009/09/16/setting-project-priorities-from-tfs-priorities.aspx#comments</comments><description>&lt;p&gt;Here is a handy macro that allows me to set the task priorities in Microsoft Project 2007 based on tasks that I have imported/synchronized to Visual Studio Team System.&amp;#160; &lt;/p&gt;  &lt;p&gt;The reason I do this is because this allows me to have dependencies between TFS work items, determine which ones need to happen first, level my resources, and calculate completion dates for the work items.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;font size="1" face="Courier New"&gt;Attribute VB_Name = &amp;quot;Module2&amp;quot;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font size="1" face="Courier New"&gt;Sub SetPriorityFromTFS()&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font size="1" face="Courier New"&gt;Attribute SetPriorityFromTFS.VB_Description = &amp;quot;&amp;quot;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font size="1" face="Courier New"&gt;‘Description&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font size="1" face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160; LevelingOptions Automatic:=False&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font size="1" face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160; For Each T In ActiveProject.Tasks&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font size="1" face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Select Case T.Text19&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font size="1" face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Case 1&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font size="1" face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; T.Priority = &amp;quot;900&amp;quot;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font size="1" face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Case 2&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font size="1" face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; T.Priority = &amp;quot;700&amp;quot;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font size="1" face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Case 3&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font size="1" face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; T.Priority = &amp;quot;500&amp;quot;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font size="1" face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Case 4&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font size="1" face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; T.Priority = &amp;quot;300&amp;quot;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font size="1" face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Case 5&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font size="1" face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; T.Priority = &amp;quot;100&amp;quot;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font size="1" face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; End Select&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font size="1" face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160; Next T&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font size="1" face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160; LevelingOptions Automatic:=True&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font size="1" face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160; LevelNow&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font size="1" face="Courier New"&gt;End Sub&lt;/font&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7208194" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/asp/GCch/~4/QiPtaeZJakY" height="1" width="1"/&gt;</description><category domain="http://weblogs.asp.net/wkriebel/archive/tags/Project/default.aspx">Project</category><category domain="http://weblogs.asp.net/wkriebel/archive/tags/General+Software+Development/default.aspx">General Software Development</category><feedburner:origLink>http://weblogs.asp.net/wkriebel/archive/2009/09/16/setting-project-priorities-from-tfs-priorities.aspx</feedburner:origLink></item><item><title>DHS Threat Level SharePoint Web Part</title><link>http://feedproxy.google.com/~r/asp/GCch/~3/yGqEma3TS90/dhs-threat-level-sharepoint-web-part.aspx</link><pubDate>Fri, 28 Aug 2009 19:03:58 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7184332</guid><dc:creator>wkriebel</dc:creator><slash:comments>0</slash:comments><wfw:commentRss>http://weblogs.asp.net/wkriebel/rsscomments.aspx?PostID=7184332</wfw:commentRss><wfw:comment>http://weblogs.asp.net/wkriebel/commentapi.aspx?PostID=7184332</wfw:comment><comments>http://weblogs.asp.net/wkriebel/archive/2009/08/28/dhs-threat-level-sharepoint-web-part.aspx#comments</comments><description>&lt;p&gt;I recently created a XML Web part that uses XSL and the &lt;a href="http://www.dhs.gov/dhspublic/getAdvisoryCondition"&gt;DHS Threat Level web service&lt;/a&gt; to render the current threat level in a way that looks exactly like the DHS Threat Advisory image:&lt;/p&gt;  &lt;p&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image002" border="0" alt="clip_image002" src="http://weblogs.asp.net/blogs/wkriebel/clip_image002_0E3C4430.jpg" width="126" height="52" /&gt;&lt;/p&gt;  &lt;p&gt;Here it is for free to download with no warranty: &lt;a href="http://cid-fd2e2af28bb0e3b9.skydrive.live.com/self.aspx/Public/DHS%20Threat%20Advisory.dwp"&gt;DHS Thread Advisory.dwp&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;There is also an image: &lt;a title="http://www.dhs.gov/threat_level/current-sm.gif" href="http://www.dhs.gov/threat_level/current-sm.gif"&gt;http://www.dhs.gov/threat_level/current-sm.gif&lt;/a&gt;&lt;/p&gt; &lt;img src="http://www.dhs.gov/threat_level/current-sm.gif" /&gt;   &lt;p&gt;For fun, link to this post if you use the web part.&amp;#160; &lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7184332" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/asp/GCch/~4/yGqEma3TS90" height="1" width="1"/&gt;</description><category domain="http://weblogs.asp.net/wkriebel/archive/tags/SharePoint/default.aspx">SharePoint</category><feedburner:origLink>http://weblogs.asp.net/wkriebel/archive/2009/08/28/dhs-threat-level-sharepoint-web-part.aspx</feedburner:origLink></item><item><title>How To Display the InfoPath Form Version on the Form</title><link>http://feedproxy.google.com/~r/asp/GCch/~3/gxiR7Hy7rcQ/how-to-display-the-infopath-form-version-on-the-form.aspx</link><pubDate>Wed, 29 Apr 2009 19:32:20 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7064881</guid><dc:creator>wkriebel</dc:creator><slash:comments>3</slash:comments><wfw:commentRss>http://weblogs.asp.net/wkriebel/rsscomments.aspx?PostID=7064881</wfw:commentRss><wfw:comment>http://weblogs.asp.net/wkriebel/commentapi.aspx?PostID=7064881</wfw:comment><comments>http://weblogs.asp.net/wkriebel/archive/2009/04/29/how-to-display-the-infopath-form-version-on-the-form.aspx#comments</comments><description>&lt;p&gt;Very handy for testing and help desk calls:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;Tip: insert form version with the expression:      &lt;br /&gt;&lt;span style="font-family: courier"&gt;substring-before( substring-after( /processing-instruction()[local-name(.) = &amp;quot;mso-infoPathSolution&amp;quot;], 'solutionVersion=&amp;quot;'), '&amp;quot;')&lt;/span&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Source:&amp;#160; &lt;a title="http://www.nivot.org/2008/09/30/WhyVSTO30VisualStudio2008SharePointWindowsWorkflowAndInfoPathMightGiveYouAHernia.aspx" href="http://www.nivot.org/2008/09/30/WhyVSTO30VisualStudio2008SharePointWindowsWorkflowAndInfoPathMightGiveYouAHernia.aspx"&gt;http://www.nivot.org/2008/09/30/WhyVSTO30VisualStudio2008SharePointWindowsWorkflowAndInfoPathMightGiveYouAHernia.aspx&lt;/a&gt;&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7064881" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/asp/GCch/~4/gxiR7Hy7rcQ" height="1" width="1"/&gt;</description><category domain="http://weblogs.asp.net/wkriebel/archive/tags/InfoPath/default.aspx">InfoPath</category><feedburner:origLink>http://weblogs.asp.net/wkriebel/archive/2009/04/29/how-to-display-the-infopath-form-version-on-the-form.aspx</feedburner:origLink></item><item><title>Collect Data by Email</title><link>http://feedproxy.google.com/~r/asp/GCch/~3/e2ovzZIJrKE/collect-data-by-email.aspx</link><pubDate>Tue, 21 Apr 2009 15:37:18 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7053465</guid><dc:creator>wkriebel</dc:creator><slash:comments>0</slash:comments><wfw:commentRss>http://weblogs.asp.net/wkriebel/rsscomments.aspx?PostID=7053465</wfw:commentRss><wfw:comment>http://weblogs.asp.net/wkriebel/commentapi.aspx?PostID=7053465</wfw:comment><comments>http://weblogs.asp.net/wkriebel/archive/2009/04/21/collect-data-by-email.aspx#comments</comments><description>&lt;p&gt;Scenario: “Please respond to this email indicating your t-shirt size and which session you can attend… or whatever”&amp;#160;&amp;#160; send to: 40 people.&lt;/p&gt;  &lt;p&gt;Read this: &lt;a title="http://office.microsoft.com/en-us/access/HA100154271033.aspx" href="http://office.microsoft.com/en-us/access/HA100154271033.aspx"&gt;http://office.microsoft.com/en-us/access/HA100154271033.aspx&lt;/a&gt;&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7053465" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/asp/GCch/~4/e2ovzZIJrKE" height="1" width="1"/&gt;</description><feedburner:origLink>http://weblogs.asp.net/wkriebel/archive/2009/04/21/collect-data-by-email.aspx</feedburner:origLink></item><item><title>How to Fix PWA Reminders web part in MOSS</title><link>http://feedproxy.google.com/~r/asp/GCch/~3/CRbLsJQNABg/how-to-fix-pwa-reminders-web-part-in-moss.aspx</link><pubDate>Wed, 01 Apr 2009 14:46:40 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7020381</guid><dc:creator>wkriebel</dc:creator><slash:comments>0</slash:comments><wfw:commentRss>http://weblogs.asp.net/wkriebel/rsscomments.aspx?PostID=7020381</wfw:commentRss><wfw:comment>http://weblogs.asp.net/wkriebel/commentapi.aspx?PostID=7020381</wfw:comment><comments>http://weblogs.asp.net/wkriebel/archive/2009/04/01/how-to-fix-pwa-reminders-web-part-in-moss.aspx#comments</comments><description>&lt;p&gt;Add and hide &lt;a href="http://weblogs.asp.net/blogs/wkriebel/PWA_Reminders_in_MOSS_Fixer.zip"&gt;this web part&lt;/a&gt; on the page where the reminders web part is located.&lt;/p&gt;  &lt;p&gt;Often folks will want to export the Reminders web part from Project Web Access (PWA) 2007 and have it shown on a related SharePoint (MOSS) page.&amp;#160; You can export the web part, you can add it to a SharePoint page, you can set the PWA URL to your PWA URL and it will work.&amp;#160; &lt;/p&gt;  &lt;p&gt;It will throw a javascript error.&lt;/p&gt;  &lt;p&gt;The error presents itself as a document.stylesheets[0] etc. etc. javascript error and prevents all javascripts from running (such as menu flyouts).&lt;/p&gt;  &lt;p&gt;The attached web part is simply a function redefinition that doesn’t require a feature deployment that fixes the reminders web part on that and only that page.&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7020381" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/asp/GCch/~4/CRbLsJQNABg" height="1" width="1"/&gt;</description><category domain="http://weblogs.asp.net/wkriebel/archive/tags/SharePoint/default.aspx">SharePoint</category><category domain="http://weblogs.asp.net/wkriebel/archive/tags/Project/default.aspx">Project</category><feedburner:origLink>http://weblogs.asp.net/wkriebel/archive/2009/04/01/how-to-fix-pwa-reminders-web-part-in-moss.aspx</feedburner:origLink></item><item><title>External Collaboration Toolkit for SharePoint (ECTS) Installation Notes</title><link>http://feedproxy.google.com/~r/asp/GCch/~3/exe6FyEtyBM/external-collaboration-toolkit-for-sharepoint-ects-installation-notes.aspx</link><pubDate>Thu, 29 Jan 2009 22:40:48 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:6868705</guid><dc:creator>wkriebel</dc:creator><slash:comments>0</slash:comments><wfw:commentRss>http://weblogs.asp.net/wkriebel/rsscomments.aspx?PostID=6868705</wfw:commentRss><wfw:comment>http://weblogs.asp.net/wkriebel/commentapi.aspx?PostID=6868705</wfw:comment><comments>http://weblogs.asp.net/wkriebel/archive/2009/01/29/external-collaboration-toolkit-for-sharepoint-ects-installation-notes.aspx#comments</comments><description>&lt;p&gt;These notes are in addition to &lt;a href="http://technet.microsoft.com/en-us/library/cc296362.aspx"&gt;http://technet.microsoft.com/en-us/library/cc296362.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;These are the notes I generated that I used in overlay with the installation instructions.&amp;#160; &lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Make sure Cert Server is installed and available &lt;/li&gt;    &lt;li&gt;Configure a certificate for ADAM &lt;/li&gt;    &lt;li&gt;Run ADAM setup from internet      &lt;br /&gt;· Add/Remove only works if you have the OS disk &lt;/li&gt;    &lt;li&gt;Create DNS entries      &lt;br /&gt;· For example: collab and collab.external &lt;/li&gt;    &lt;li&gt;Create Collab web app &lt;/li&gt;    &lt;li&gt;Reset IIS &lt;/li&gt;    &lt;li&gt;Create email address (e.g. &lt;a href="mailto:SharePoint@yourdomain.com"&gt;SharePoint@yourdomain.com&lt;/a&gt;) &lt;/li&gt;    &lt;li&gt;Extend to an SSL external (e.g. collab.external) &lt;/li&gt;    &lt;li&gt;Create a site collection on the web application &lt;/li&gt;    &lt;li&gt;Run ADAM script that comes with kit &lt;/li&gt;    &lt;li&gt;Change the ADAM Service account &lt;/li&gt;    &lt;li&gt;Run database script &lt;/li&gt;    &lt;li&gt;Run SPScript      &lt;br /&gt;Note: ADAM ports are typically 389, 636 or 50000, 50001&lt;/li&gt;    &lt;li&gt;Request IIS Cert &lt;/li&gt; &lt;/ol&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=6868705" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/asp/GCch/~4/exe6FyEtyBM" height="1" width="1"/&gt;</description><category domain="http://weblogs.asp.net/wkriebel/archive/tags/SharePoint/default.aspx">SharePoint</category><category domain="http://weblogs.asp.net/wkriebel/archive/tags/Portals/default.aspx">Portals</category><feedburner:origLink>http://weblogs.asp.net/wkriebel/archive/2009/01/29/external-collaboration-toolkit-for-sharepoint-ects-installation-notes.aspx</feedburner:origLink></item><item><title>How I made my laptop faster</title><link>http://feedproxy.google.com/~r/asp/GCch/~3/jeir92h0L3k/how-i-made-my-laptop-faster.aspx</link><pubDate>Thu, 29 Jan 2009 17:18:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:6868447</guid><dc:creator>wkriebel</dc:creator><slash:comments>0</slash:comments><wfw:commentRss>http://weblogs.asp.net/wkriebel/rsscomments.aspx?PostID=6868447</wfw:commentRss><wfw:comment>http://weblogs.asp.net/wkriebel/commentapi.aspx?PostID=6868447</wfw:comment><comments>http://weblogs.asp.net/wkriebel/archive/2009/01/29/how-i-made-my-laptop-faster.aspx#comments</comments><description>&lt;P&gt;For some reason my laptop got really sluggish a while back.&amp;nbsp; Normally I wouldn’t blog about this type of thing, but it was so impactful I thought I would share.&amp;nbsp; I’ve already done and always do the typical stuff: defrag, clean registry, uninstall add-ons, maintain free disk space, etc.&amp;nbsp;&amp;nbsp; This one, however, was the culprit.&lt;/P&gt;
&lt;P&gt;Check this out if you are experiencing the same:&amp;nbsp;&amp;nbsp; &lt;A href="http://support.microsoft.com/kb/822158"&gt;&lt;FONT color=#669966&gt;kb822158 Virus scanning recommendations for computers that are running Windows Server 2003, Windows 2000, Windows XP, or Windows Vista&lt;/FONT&gt;&lt;/A&gt;&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;Excerpt: “&lt;EM&gt;This article also contains information to help you minimize the effect of antivirus software on system and network performance.&lt;/EM&gt;”&lt;/P&gt;&lt;/BLOCKQUOTE&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=6868447" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/asp/GCch/~4/jeir92h0L3k" height="1" width="1"/&gt;</description><feedburner:origLink>http://weblogs.asp.net/wkriebel/archive/2009/01/29/how-i-made-my-laptop-faster.aspx</feedburner:origLink></item><item><title>How to update Microsoft RoundTable firmware</title><link>http://feedproxy.google.com/~r/asp/GCch/~3/Ve47rtfNx8I/how-to-update-microsoft-roundtable-firmware.aspx</link><pubDate>Tue, 16 Dec 2008 21:36:04 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:6791575</guid><dc:creator>wkriebel</dc:creator><slash:comments>1</slash:comments><wfw:commentRss>http://weblogs.asp.net/wkriebel/rsscomments.aspx?PostID=6791575</wfw:commentRss><wfw:comment>http://weblogs.asp.net/wkriebel/commentapi.aspx?PostID=6791575</wfw:comment><comments>http://weblogs.asp.net/wkriebel/archive/2008/12/16/how-to-update-microsoft-roundtable-firmware.aspx#comments</comments><description>&lt;a href="http://www.microsoft.com/uc/products/roundtable.mspx"&gt;&lt;img align="right" src="http://www.microsoft.com/library/media/1033/uc/images/RoundTable_175x132.jpg" /&gt;&lt;/a&gt;   &lt;ol&gt;   &lt;li&gt;Download the firmware: &lt;a title="Microsoft® RoundTable™ Firmware" href="http://www.microsoft.com/downloads/info.aspx?na=45&amp;amp;p=1&amp;amp;SrcDisplayLang=en&amp;amp;SrcCategoryId=&amp;amp;SrcFamilyId=2edc88bc-4c79-41a6-832a-b02a0cb2f82e&amp;amp;u=details.aspx%3ffamilyid%3dEF74CD39-0FEC-4C70-95C8-B01930B2B502%26displaylang%3den"&gt;Microsoft® RoundTable™ Firmware&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;Download the manager: &lt;a title="Microsoft® RoundTable™ Management Tool" href="http://www.microsoft.com/downloads/info.aspx?na=45&amp;amp;p=2&amp;amp;SrcDisplayLang=en&amp;amp;SrcCategoryId=&amp;amp;SrcFamilyId=2edc88bc-4c79-41a6-832a-b02a0cb2f82e&amp;amp;u=details.aspx%3ffamilyid%3dA3089FA8-72FC-4F11-B81D-87F0D09A3A9A%26displaylang%3den"&gt;Microsoft® RoundTable™ Management Tool&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;run this at the command line:      &lt;p&gt;&lt;font face="Courier New"&gt;C:\Program Files\Microsoft RoundTable\Device Management&amp;gt;rtmanage -m:img -i:nk -f:&amp;quot;C:\RoundTableQfeFirmware\nk.bin&amp;quot; -s:&amp;quot;C:\RoundTableQfeFirmware\nk.cat&amp;quot;&lt;/font&gt;&lt;/p&gt;      &lt;p&gt;passcode/password is probably: &lt;strong&gt;78491&lt;/strong&gt; (factory default, see &lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=2EDC88BC-4C79-41A6-832A-B02A0CB2F82E&amp;amp;displaylang=en"&gt;RoundTable Deployment Guide&lt;/a&gt;)&lt;/p&gt;   &lt;/li&gt;    &lt;li&gt;Run This command:      &lt;p&gt;&lt;font face="Courier New"&gt;C:\Program Files\Microsoft RoundTable\Device Management&amp;gt;rtmanage.exe -m:img -i:EBOOT -f:c:\roundtableqfefirmware\cpueboot.bin -s:c:\roundtableqfefirmware\cpueboot.cat&lt;/font&gt;&lt;/p&gt;   &lt;/li&gt;    &lt;li&gt;Reboot by running this command:      &lt;br /&gt;&lt;font face="Courier New"&gt;Rtmanage.exe -m:cfg -r&lt;/font&gt; &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="IMAG0037" border="0" alt="IMAG0037" src="http://weblogs.asp.net/blogs/wkriebel/IMAG0037_7BDF4100.jpg" width="231" height="298" /&gt;&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=6791575" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/asp/GCch/~4/Ve47rtfNx8I" height="1" width="1"/&gt;</description><feedburner:origLink>http://weblogs.asp.net/wkriebel/archive/2008/12/16/how-to-update-microsoft-roundtable-firmware.aspx</feedburner:origLink></item></channel></rss>
