<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>MindBusiness Blog &#187; SharePoint</title>
	<atom:link href="http://blog.mindbusiness.de/blog/category/sharepoint/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.mindbusiness.de/blog</link>
	<description>MindBusiness - Produkte, Neuigkeiten, Tipps und Tricks aus der MindBusiness-Ideenwerkstatt rund um Microsoft SharePoint, InfoPath, Office, Mindjet MindManager</description>
	<lastBuildDate>Tue, 15 May 2012 07:10:10 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=</generator>
		<item>
		<title>SharePoint-Magazin: PowerBI mit SharePoint</title>
		<link>http://blog.mindbusiness.de/blog/2012/05/09/sharepoint-magazin-powerbi-mit-sharepoint/</link>
		<comments>http://blog.mindbusiness.de/blog/2012/05/09/sharepoint-magazin-powerbi-mit-sharepoint/#comments</comments>
		<pubDate>Wed, 09 May 2012 08:16:56 +0000</pubDate>
		<dc:creator>Florian Gruber</dc:creator>
				<category><![CDATA[MindBusiness]]></category>
		<category><![CDATA[SharePoint]]></category>
		<category><![CDATA[SharePoint 2010]]></category>

		<guid isPermaLink="false">http://blog.mindbusiness.de/blog/?p=1306</guid>
		<description><![CDATA[<p>Achtung! News!</p>
<p>Die Autoren der MindBusiness GmbH sind wieder im SharePoint-Magazin vertreten. Dieses Mal mit folgendem Thema:</p>
<p>Power BI mit SharePoint &#8211; Wo Excel streikt und PowerPivot triumphiert</p>
<p>PowerPivot. Was ist das überhaupt? Wie funktioniert es? Welchen Nutzen bringt dieses Tool? Wie wird mit SharePoint synchronisiert? Fragen über Fragen! Die Antworten  erleichtern allerdings das Arbeiten im Tagesgeschäft, als [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Achtung! News!</strong></p>
<p>Die Autoren der MindBusiness GmbH sind wieder im SharePoint-Magazin vertreten. Dieses Mal mit folgendem Thema:</p>
<p><strong>Power BI mit SharePoint &#8211; Wo Excel streikt und PowerPivot triumphiert</strong></p>
<p>PowerPivot. Was ist das überhaupt? Wie funktioniert es? Welchen Nutzen bringt dieses Tool? Wie wird mit SharePoint synchronisiert? Fragen über Fragen! Die Antworten  erleichtern allerdings das Arbeiten im Tagesgeschäft, als auch im Fällen von strategischen Entscheidungen. Also, aufgepasst! Der Hauptteil dieses Artikels besteht aus einer Wette. Diese lautet: Wetten, dass es machbar ist innerhalb von 15 Minuten ein übersichtliches BI-Cockpit in SharePoint zu veröffentlichen, dass sich bei Änderungen der Daten automatisch aktualisiert? Es wird gezeigt, dass diese automatische Aktualisierung nur aufgrund des Arbeitens mit Datenfeeds ermöglicht wird. Des Weiteren wird geklärt, ob diese automatisch aktualisierende BI-Lösung mit Microsoft Office365, somit SharePoint Online, gleiche Funktionalitäten mit sich bringt und es wird ein grober Ausblick auf SQL Server 2012 in Verbindung mit PowerView getätigt.</p>
<p><strong>Hier geht es direkt zum Artikel: <a href="http://blog.mindbusiness.de/blog/wp-content/uploads/2012/04/SharePoint-Magazin_PowerBI.pdf">SharePoint-Magazin_PowerBI</a></strong></p>
<p>Das MindBusiness-Team</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mindbusiness.de/blog/2012/05/09/sharepoint-magazin-powerbi-mit-sharepoint/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Implementation of IWebPartParameters web part</title>
		<link>http://blog.mindbusiness.de/blog/2011/09/05/implementation-of-iwebpartparameters-web-part/</link>
		<comments>http://blog.mindbusiness.de/blog/2011/09/05/implementation-of-iwebpartparameters-web-part/#comments</comments>
		<pubDate>Mon, 05 Sep 2011 16:38:18 +0000</pubDate>
		<dc:creator>Torsten Schuster</dc:creator>
				<category><![CDATA[SharePoint]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://www.mindbusiness.de/blog/2011/09/05/implementation-of-iwebpartparameters-web-part/</guid>
		<description><![CDATA[<p>A client was asking for a connectable web part, sending a parameter to data form web part (dfwp) build by SharePointDesigner. </p>
<p>The first you will read on Microsoft msdn for SharePoint 2010 about this requirement should be: http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.webpartpages.communication.iparametersoutprovider.aspx. </p>
<p>Uups, there is a bold NOTE: This API is now obsolete (IParametersOutProvider) and where is the link [...]]]></description>
			<content:encoded><![CDATA[<p>A client was asking for a connectable web part, sending a parameter to data form web part (dfwp) build by SharePointDesigner. </p>
<p>The first you will read on Microsoft msdn for SharePoint 2010 about this requirement should be: <a title="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.webpartpages.communication.iparametersoutprovider.aspx" href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.webpartpages.communication.iparametersoutprovider.aspx">http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.webpartpages.communication.iparametersoutprovider.aspx</a>. </p>
<p>Uups, there is a bold <strong>NOTE: This API is now obsolete (IParametersOutProvider) </strong>and where is the link to the new one?&#160; .. i was&#160; adapting the example for my test solution.</p>
<p>If i copied the complete code to my own web part class and compile this code first time, i got a message on my classname: <strong>‘Microsoft.SharePoint.WebPartPages.Communication.IParametersOutProvider’ is obsolete: ‘Use System.Web.UI.WebControls.WebParts.IWebPartParameters instead’</strong>, why it’s not written in the note?</p>
<p>Trying this code, i was running in an unhandled exception on Step #6. The PartCommunicationConnect was called, the given connectedPart was Null! The exception occurs if you connect a dfwp with parameter binding to my wp implementing IParametersOutProvider. So i realized, this should not my solution.. searching for a fully description on IWebPartParameters.. there are not so many complete stories on the net yet..</p>
<p>Now i will share working c# code like in the above link. </p>
<p>In my example, a hidden web part extracts a sequence from current web URI and send the ‘data’ parameter to a dfwp connected by parameter binding. </p>
<div class="csharpcode">
<pre class="alt"><span class="lnum">   1:  </span><span class="rem">// Common .NET required namespaces</span></pre>
<pre><span class="lnum">   2:  </span><span class="kwrd">using</span> System;</pre>
<pre class="alt"><span class="lnum">   3:  </span><span class="kwrd">using</span> System.ComponentModel;</pre>
<pre><span class="lnum">   4:  </span>&#160;</pre>
<pre class="alt"><span class="lnum">   5:  </span><span class="rem">// WebPart required namespaces</span></pre>
<pre><span class="lnum">   6:  </span><span class="kwrd">using</span> System.Web;</pre>
<pre class="alt"><span class="lnum">   7:  </span><span class="kwrd">using</span> System.Web.UI;</pre>
<pre><span class="lnum">   8:  </span><span class="kwrd">using</span> System.Web.UI.WebControls;</pre>
<pre class="alt"><span class="lnum">   9:  </span><span class="kwrd">using</span> System.Web.UI.WebControls.WebParts;</pre>
<pre><span class="lnum">  10:  </span>&#160;</pre>
<pre class="alt"><span class="lnum">  11:  </span><span class="rem">//Step #1: Reference the SharePoint namespace.</span></pre>
<pre><span class="lnum">  12:  </span><span class="kwrd">using</span> Microsoft.SharePoint;</pre>
<pre class="alt"><span class="lnum">  13:  </span>&#160;</pre>
<pre><span class="lnum">  14:  </span><span class="kwrd">namespace</span> ConnectionCodeSamples.WebPartParametersProvider</pre>
<pre class="alt"><span class="lnum">  15:  </span>{</pre>
<pre><span class="lnum">  16:  </span>    <span class="rem">// Step #2: Inherit from the WebPart base class and implement the </span></pre>
<pre class="alt"><span class="lnum">  17:  </span>    <span class="rem">// IWebPartParameters interface.</span></pre>
<pre><span class="lnum">  18:  </span>    [ToolboxItemAttribute(<span class="kwrd">false</span>)]</pre>
<pre class="alt"><span class="lnum">  19:  </span>    <span class="kwrd">public</span> <span class="kwrd">class</span> WebPartParametersProvider : WebPart, IWebPartParameters</pre>
<pre><span class="lnum">  20:  </span>    {</pre>
<pre class="alt"><span class="lnum">  21:  </span>        <span class="rem">// Step #3: Declare private variables for configuration , handling </span></pre>
<pre><span class="lnum">  22:  </span>        <span class="rem">// and a value passed as parameter.</span></pre>
<pre class="alt"><span class="lnum">  23:  </span>        <span class="kwrd">private</span> <span class="kwrd">int</span> _strFirst;</pre>
<pre><span class="lnum">  24:  </span>        <span class="kwrd">private</span> <span class="kwrd">int</span> _strLength;</pre>
<pre class="alt"><span class="lnum">  25:  </span>        <span class="kwrd">private</span> <span class="kwrd">string</span> _myError = <span class="kwrd">string</span>.Empty;</pre>
<pre><span class="lnum">  26:  </span>&#160;</pre>
<pre class="alt"><span class="lnum">  27:  </span>        <span class="kwrd">private</span> <span class="kwrd">string</span> _urlData = <span class="str">&quot;WebPartParametersProvider url 'data' value&quot;</span>;</pre>
<pre><span class="lnum">  28:  </span>&#160;</pre>
<pre class="alt"><span class="lnum">  29:  </span>        <span class="rem">// Step #4: the provider must implement a list of property descriptors </span></pre>
<pre><span class="lnum">  30:  </span>        <span class="rem">// that the consumer is interested in </span></pre>
<pre class="alt"><span class="lnum">  31:  </span>        <span class="kwrd">private</span> PropertyDescriptorCollection _objParameters;</pre>
<pre><span class="lnum">  32:  </span>        <span class="kwrd">public</span> PropertyDescriptorCollection Parameters</pre>
<pre class="alt"><span class="lnum">  33:  </span>        {</pre>
<pre><span class="lnum">  34:  </span>            get { <span class="kwrd">return</span> _objParameters; }</pre>
<pre class="alt"><span class="lnum">  35:  </span>            set { _objParameters = <span class="kwrd">value</span>; }</pre>
<pre><span class="lnum">  36:  </span>        }</pre>
<pre class="alt"><span class="lnum">  37:  </span>&#160;</pre>
<pre><span class="lnum">  38:  </span>        <span class="rem">// Step #5: Constructor</span></pre>
<pre class="alt"><span class="lnum">  39:  </span>        <span class="kwrd">public</span> WebPartParametersProvider()</pre>
<pre><span class="lnum">  40:  </span>        {</pre>
<pre class="alt"><span class="lnum">  41:  </span>            <span class="kwrd">this</span>.ExportMode = WebPartExportMode.All;</pre>
<pre><span class="lnum">  42:  </span>            <span class="kwrd">base</span>.Hidden = <span class="kwrd">true</span>;</pre>
<pre class="alt"><span class="lnum">  43:  </span>        }</pre>
<pre><span class="lnum">  44:  </span>&#160;</pre>
<pre class="alt"><span class="lnum">  45:  </span>        <span class="rem">// Step #6: implement ConnectionInterface</span></pre>
<pre><span class="lnum">  46:  </span>        [ConnectionProvider(<span class="str">&quot;my parameters provider&quot;</span>)]</pre>
<pre class="alt"><span class="lnum">  47:  </span>        <span class="kwrd">public</span> IWebPartParameters ConnectionInterface()</pre>
<pre><span class="lnum">  48:  </span>        {</pre>
<pre class="alt"><span class="lnum">  49:  </span>            <span class="kwrd">return</span> <span class="kwrd">this</span>;</pre>
<pre><span class="lnum">  50:  </span>        }</pre>
<pre class="alt"><span class="lnum">  51:  </span>&#160;</pre>
<pre><span class="lnum">  52:  </span>        <span class="rem">// Step #7: implement a schema for the data returned by the provider</span></pre>
<pre class="alt"><span class="lnum">  53:  </span>        <span class="rem">// you need this for the IWebPart* interfaces</span></pre>
<pre><span class="lnum">  54:  </span>        <span class="kwrd">public</span> System.ComponentModel.PropertyDescriptorCollection Schema</pre>
<pre class="alt"><span class="lnum">  55:  </span>        {</pre>
<pre><span class="lnum">  56:  </span>            get</pre>
<pre class="alt"><span class="lnum">  57:  </span>            {</pre>
<pre><span class="lnum">  58:  </span>                PropertyDescriptorCollection objProperties;</pre>
<pre class="alt"><span class="lnum">  59:  </span>                PropertyDescriptor[] arrProperties =</pre>
<pre><span class="lnum">  60:  </span>                    <span class="kwrd">new</span> PropertyDescriptor[Parameters.Count];</pre>
<pre class="alt"><span class="lnum">  61:  </span>                TypeDescriptor.GetProperties(<span class="kwrd">this</span>);</pre>
<pre><span class="lnum">  62:  </span>&#160;</pre>
<pre class="alt"><span class="lnum">  63:  </span>                objProperties = TypeDescriptor.GetProperties(<span class="kwrd">this</span>);</pre>
<pre><span class="lnum">  64:  </span>                <span class="kwrd">int</span> intParameterCount = 0;</pre>
<pre class="alt"><span class="lnum">  65:  </span>                <span class="kwrd">foreach</span> (PropertyDescriptor objProperty <span class="kwrd">in</span> Parameters)</pre>
<pre><span class="lnum">  66:  </span>                {</pre>
<pre class="alt"><span class="lnum">  67:  </span>                    <span class="kwrd">if</span> (Parameters[objProperty.Name] != <span class="kwrd">null</span>)</pre>
<pre><span class="lnum">  68:  </span>                    {</pre>
<pre class="alt"><span class="lnum">  69:  </span>                        intParameterCount++;</pre>
<pre><span class="lnum">  70:  </span>                        arrProperties[intParameterCount] = objProperty;</pre>
<pre class="alt"><span class="lnum">  71:  </span>                    }</pre>
<pre><span class="lnum">  72:  </span>                }</pre>
<pre class="alt"><span class="lnum">  73:  </span>&#160;</pre>
<pre><span class="lnum">  74:  </span>                objProperties = <span class="kwrd">new</span> PropertyDescriptorCollection(arrProperties);</pre>
<pre class="alt"><span class="lnum">  75:  </span>                <span class="kwrd">return</span> objProperties;</pre>
<pre><span class="lnum">  76:  </span>            }</pre>
<pre class="alt"><span class="lnum">  77:  </span>        }</pre>
<pre><span class="lnum">  78:  </span>&#160;</pre>
<pre class="alt"><span class="lnum">  79:  </span>        <span class="rem">// Step #8: implement a method called SetConsumerSchema(), allows a consumer</span></pre>
<pre><span class="lnum">  80:  </span>        <span class="rem">// to express its interest in a set of parameters provided by provider</span></pre>
<pre class="alt"><span class="lnum">  81:  </span>        <span class="kwrd">public</span> <span class="kwrd">void</span> SetConsumerSchema(System.ComponentModel.PropertyDescriptorCollection schema)</pre>
<pre><span class="lnum">  82:  </span>        {</pre>
<pre class="alt"><span class="lnum">  83:  </span>            Parameters = schema;</pre>
<pre><span class="lnum">  84:  </span>        }</pre>
<pre class="alt"><span class="lnum">  85:  </span>&#160;</pre>
<pre><span class="lnum">  86:  </span>        <span class="rem">// Step #9: implement the GetParametersData(), this will hold a reference</span></pre>
<pre class="alt"><span class="lnum">  87:  </span>        <span class="rem">// to the parameters consumer web part after a connection is established</span></pre>
<pre><span class="lnum">  88:  </span>        <span class="kwrd">public</span> <span class="kwrd">void</span> GetParametersData(ParametersCallback callback)</pre>
<pre class="alt"><span class="lnum">  89:  </span>        {</pre>
<pre><span class="lnum">  90:  </span>            StateBag objParameters = <span class="kwrd">new</span> StateBag();</pre>
<pre class="alt"><span class="lnum">  91:  </span>&#160;</pre>
<pre><span class="lnum">  92:  </span>            <span class="kwrd">foreach</span> (PropertyDescriptor objProperty <span class="kwrd">in</span> Parameters)</pre>
<pre class="alt"><span class="lnum">  93:  </span>            {</pre>
<pre><span class="lnum">  94:  </span>                <span class="kwrd">switch</span> (objProperty.Name)</pre>
<pre class="alt"><span class="lnum">  95:  </span>                {</pre>
<pre><span class="lnum">  96:  </span>                    <span class="kwrd">case</span> <span class="str">&quot;data&quot;</span>:</pre>
<pre class="alt"><span class="lnum">  97:  </span>                        objParameters.Add(<span class="str">&quot;data&quot;</span>, UrlData);</pre>
<pre><span class="lnum">  98:  </span>                        <span class="kwrd">break</span>;</pre>
<pre class="alt"><span class="lnum">  99:  </span>                    <span class="kwrd">default</span>:</pre>
<pre><span class="lnum"> 100:  </span>                        <span class="kwrd">throw</span> <span class="kwrd">new</span> Exception(<span class="str">&quot;WebPartParametersProvider: Unknown parameter name&quot;</span>);</pre>
<pre class="alt"><span class="lnum"> 101:  </span>                }</pre>
<pre><span class="lnum"> 102:  </span>            }</pre>
<pre class="alt"><span class="lnum"> 103:  </span>&#160;</pre>
<pre><span class="lnum"> 104:  </span>            callback.Invoke(objParameters);</pre>
<pre class="alt"><span class="lnum"> 105:  </span>        }</pre>
<pre><span class="lnum"> 106:  </span>&#160;</pre>
<pre class="alt"><span class="lnum"> 107:  </span>        <span class="rem">// Step #10: implement properties for web part configuration </span></pre>
<pre><span class="lnum"> 108:  </span>        <span class="rem">// and to hold our data extracted from current url</span></pre>
<pre class="alt"><span class="lnum"> 109:  </span>        [WebBrowsable(<span class="kwrd">true</span>),</pre>
<pre><span class="lnum"> 110:  </span>        Personalizable(PersonalizationScope.Shared),</pre>
<pre class="alt"><span class="lnum"> 111:  </span>        WebDescription(<span class="str">&quot;The first char in web url to search for (0 based).&quot;</span>)]</pre>
<pre><span class="lnum"> 112:  </span>        <span class="kwrd">public</span> <span class="kwrd">int</span> UrlFirst</pre>
<pre class="alt"><span class="lnum"> 113:  </span>        {</pre>
<pre><span class="lnum"> 114:  </span>            get</pre>
<pre class="alt"><span class="lnum"> 115:  </span>            {</pre>
<pre><span class="lnum"> 116:  </span>                <span class="kwrd">return</span> <span class="kwrd">this</span>._strFirst;</pre>
<pre class="alt"><span class="lnum"> 117:  </span>            }</pre>
<pre><span class="lnum"> 118:  </span>            set</pre>
<pre class="alt"><span class="lnum"> 119:  </span>            {</pre>
<pre><span class="lnum"> 120:  </span>                <span class="kwrd">this</span>._strFirst = <span class="kwrd">value</span> &gt; 0 ? <span class="kwrd">value</span> : 0;</pre>
<pre class="alt"><span class="lnum"> 121:  </span>            }</pre>
<pre><span class="lnum"> 122:  </span>        }</pre>
<pre class="alt"><span class="lnum"> 123:  </span>&#160;</pre>
<pre><span class="lnum"> 124:  </span>        [WebBrowsable(<span class="kwrd">true</span>),</pre>
<pre class="alt"><span class="lnum"> 125:  </span>        Personalizable(PersonalizationScope.Shared),</pre>
<pre><span class="lnum"> 126:  </span>        WebDescription(<span class="str">&quot;The length of the string to extract after first char.&quot;</span>)]</pre>
<pre class="alt"><span class="lnum"> 127:  </span>        <span class="kwrd">public</span> <span class="kwrd">int</span> StrLength</pre>
<pre><span class="lnum"> 128:  </span>        {</pre>
<pre class="alt"><span class="lnum"> 129:  </span>            get</pre>
<pre><span class="lnum"> 130:  </span>            {</pre>
<pre class="alt"><span class="lnum"> 131:  </span>                <span class="kwrd">return</span> <span class="kwrd">this</span>._strLength;</pre>
<pre><span class="lnum"> 132:  </span>            }</pre>
<pre class="alt"><span class="lnum"> 133:  </span>            set</pre>
<pre><span class="lnum"> 134:  </span>            {</pre>
<pre class="alt"><span class="lnum"> 135:  </span>                <span class="kwrd">this</span>._strLength = <span class="kwrd">value</span> &gt; 0 ? <span class="kwrd">value</span> : 0;</pre>
<pre><span class="lnum"> 136:  </span>            }</pre>
<pre class="alt"><span class="lnum"> 137:  </span>        }</pre>
<pre><span class="lnum"> 138:  </span>&#160;</pre>
<pre class="alt"><span class="lnum"> 139:  </span>        <span class="kwrd">public</span> <span class="kwrd">string</span> UrlData</pre>
<pre><span class="lnum"> 140:  </span>        {</pre>
<pre class="alt"><span class="lnum"> 141:  </span>            get { <span class="kwrd">return</span> _urlData; }</pre>
<pre><span class="lnum"> 142:  </span>            set { _urlData = <span class="kwrd">value</span>; }</pre>
<pre class="alt"><span class="lnum"> 143:  </span>        }</pre>
<pre><span class="lnum"> 144:  </span>&#160;</pre>
<pre class="alt"><span class="lnum"> 145:  </span>        <span class="rem">// Step #11: init the all data</span></pre>
<pre><span class="lnum"> 146:  </span>        <span class="kwrd">protected</span> <span class="kwrd">override</span> <span class="kwrd">void</span> OnInit(EventArgs e)</pre>
<pre class="alt"><span class="lnum"> 147:  </span>        {</pre>
<pre><span class="lnum"> 148:  </span>            <span class="kwrd">base</span>.OnInit(e);</pre>
<pre class="alt"><span class="lnum"> 149:  </span>&#160;</pre>
<pre><span class="lnum"> 150:  </span>            <span class="kwrd">if</span> (UrlFirst != 0 &amp;&amp; StrLength &gt; 0)</pre>
<pre class="alt"><span class="lnum"> 151:  </span>            {</pre>
<pre><span class="lnum"> 152:  </span>                <span class="kwrd">try</span></pre>
<pre class="alt"><span class="lnum"> 153:  </span>                {</pre>
<pre><span class="lnum"> 154:  </span>                    <span class="kwrd">string</span> url = SPContext.Current.Web.Url;</pre>
<pre class="alt"><span class="lnum"> 155:  </span>                    <span class="kwrd">if</span> (url.Length &gt;= UrlFirst + StrLength)</pre>
<pre><span class="lnum"> 156:  </span>                    {</pre>
<pre class="alt"><span class="lnum"> 157:  </span>                        _urlData = url.Substring(UrlFirst, StrLength);</pre>
<pre><span class="lnum"> 158:  </span>                    }</pre>
<pre class="alt"><span class="lnum"> 159:  </span>                }</pre>
<pre><span class="lnum"> 160:  </span>                <span class="kwrd">catch</span> (Exception se)</pre>
<pre class="alt"><span class="lnum"> 161:  </span>                {</pre>
<pre><span class="lnum"> 162:  </span>                    _myError = se.Message + <span class="str">&quot;, &quot;</span> + se.InnerException;</pre>
<pre class="alt"><span class="lnum"> 163:  </span>                }</pre>
<pre><span class="lnum"> 164:  </span>            }</pre>
<pre class="alt"><span class="lnum"> 165:  </span>        }</pre>
<pre><span class="lnum"> 166:  </span>&#160;</pre>
<pre class="alt"><span class="lnum"> 167:  </span>        <span class="rem">// Step #12: create controls to show properies, </span></pre>
<pre><span class="lnum"> 168:  </span>        <span class="rem">// data and web part configuration hints in page edit mode</span></pre>
<pre class="alt"><span class="lnum"> 169:  </span>        <span class="kwrd">protected</span> <span class="kwrd">override</span> <span class="kwrd">void</span> CreateChildControls()</pre>
<pre><span class="lnum"> 170:  </span>        {</pre>
<pre class="alt"><span class="lnum"> 171:  </span>            Controls.Clear();</pre>
<pre><span class="lnum"> 172:  </span>&#160;</pre>
<pre class="alt"><span class="lnum"> 173:  </span>            <span class="kwrd">if</span> ((UrlFirst == 0 || StrLength == 0))</pre>
<pre><span class="lnum"> 174:  </span>            {</pre>
<pre class="alt"><span class="lnum"> 175:  </span>                <span class="rem">//.. show a how to configure web part</span></pre>
<pre><span class="lnum"> 176:  </span>            }</pre>
<pre class="alt"><span class="lnum"> 177:  </span>            <span class="kwrd">else</span></pre>
<pre><span class="lnum"> 178:  </span>            {</pre>
<pre class="alt"><span class="lnum"> 179:  </span>                <span class="rem">//.. show your properties and the assigned data</span></pre>
<pre><span class="lnum"> 180:  </span>            }</pre>
<pre class="alt"><span class="lnum"> 181:  </span>        }</pre>
<pre><span class="lnum"> 182:  </span>    }</pre>
<pre class="alt"><span class="lnum"> 183:  </span>}</pre>
</div>
<style type="text/css">
<p>.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; }</style>
<p>for more description, please study also on msdn the IWebPartParameters interface: <a title="http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.webparts.iwebpartparameters.aspx" href="http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.webparts.iwebpartparameters.aspx">http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.webparts.iwebpartparameters.aspx</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mindbusiness.de/blog/2011/09/05/implementation-of-iwebpartparameters-web-part/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Silverlight &#8211; Web Services zur Laufzeit binden</title>
		<link>http://blog.mindbusiness.de/blog/2011/02/28/silverlight-web-services-zur-laufzeit-binden/</link>
		<comments>http://blog.mindbusiness.de/blog/2011/02/28/silverlight-web-services-zur-laufzeit-binden/#comments</comments>
		<pubDate>Sun, 27 Feb 2011 23:13:00 +0000</pubDate>
		<dc:creator>Albrecht Darimont</dc:creator>
				<category><![CDATA[MindBusiness]]></category>
		<category><![CDATA[Online Services]]></category>
		<category><![CDATA[SharePoint]]></category>

		<guid isPermaLink="false">http://www.mindbusiness.de/blog/2011/02/28/silverlight-web-services-zur-laufzeit-binden/</guid>
		<description><![CDATA[<p>Dieser Blog beschreibt folgendes Szeario:</p>
<p>Eine Silverlight Anwendung beschreibt mehrere SharePoint listen und soll auf beliebigen SharePoint Server installiert werden. Wenn ich das Silverlight Projekt im Visual Studio erstellt, kann ich ja eine Service Referenz hinzufügen. Visual Studio erzeugt dann den Proxy oder Client für den ausgewählten dienst und schreibt dann auch noch in eine Konfigurationsdatei [...]]]></description>
			<content:encoded><![CDATA[<p>Dieser Blog beschreibt folgendes Szeario:</p>
<p>Eine Silverlight Anwendung beschreibt mehrere SharePoint listen und soll auf beliebigen SharePoint Server installiert werden. Wenn ich das Silverlight Projekt im Visual Studio erstellt, kann ich ja eine Service Referenz hinzufügen. Visual Studio erzeugt dann den Proxy oder Client für den ausgewählten dienst und schreibt dann auch noch in eine Konfigurationsdatei die URI für das Binding und den Endpoint.</p>
<p>Die Datei sieht dann in meiner Anwendung dann so aus:</p>
<pre>&lt;configuration&gt;
    &lt;system.serviceModel&gt;
        &lt;bindings&gt;
            &lt;basicHttpBinding&gt;
                &lt;binding name=<span class="str">"PeopleSoap"</span> maxBufferSize=<span class="str">"2147483647"</span> maxReceivedMessageSize=<span class="str">"2147483647"</span>&gt;
                    &lt;security mode=<span class="str">"None"</span> /&gt;
                &lt;/binding&gt;
                &lt;binding name=<span class="str">"UserProfileServiceSoap"</span> maxBufferSize=<span class="str">"2147483647"</span>
                    maxReceivedMessageSize=<span class="str">"2147483647"</span>&gt;
                    &lt;security mode=<span class="str">"None"</span> /&gt;
                &lt;/binding&gt;
                &lt;binding name=<span class="str">"ListsSoap"</span> maxBufferSize=<span class="str">"2147483647"</span> maxReceivedMessageSize=<span class="str">"2147483647"</span>&gt;
                    &lt;security mode=<span class="str">"None"</span> /&gt;
                &lt;/binding&gt;
            &lt;/basicHttpBinding&gt;
        &lt;/bindings&gt;
        &lt;client&gt;
            &lt;endpoint address=<span class="str">"http://www.sharepointonline.biz/_vti_bin/people.asmx"</span>
                binding=<span class="str">"basicHttpBinding"</span> bindingConfiguration=<span class="str">"PeopleSoap"</span>
                contract=<span class="str">"PeopleReference.PeopleSoap"</span> name=<span class="str">"PeopleSoap"</span> /&gt;
            &lt;endpoint address=<span class="str">"http://www.sharepointonline.biz/xxxxxxx/_vti_bin/UserProfileService.asmx"</span>
                binding=<span class="str">"basicHttpBinding"</span> bindingConfiguration=<span class="str">"UserProfileServiceSoap"</span>
                contract=<span class="str">"UserProfileService.UserProfileServiceSoap"</span> name=<span class="str">"UserProfileServiceSoap"</span> /&gt;
            &lt;endpoint address=<span class="str">"http://www.sharepointonline.biz/_vti_bin/lists.asmx"</span>
                binding=<span class="str">"basicHttpBinding"</span> bindingConfiguration=<span class="str">"ListsSoap"</span>
                contract=<span class="str">"ServiceReference1.ListsSoap"</span> name=<span class="str">"ListsSoap"</span> /&gt;
        &lt;/client&gt;
    &lt;/system.serviceModel&gt;
&lt;/configuration&gt;</pre>
<p>Man kann erkennen, dass hier die EndPoint Adresse hart verdrahted ist. Ich brauche aber eine dynamische Bindung zur Laufzeit, so dass ich die gleiche XAP-Datei auf verschiedenen Server, die unterschiedliche URLs haben, verwendet kann. Das folgende Listing zeigt die Lösung:</p>
<p>Ich deklariere die folgenden Stringvariablen:</p>
<blockquote><p>public string Host;</p>
<p>public string PathToSite;</p>
<p>public string Protocol;</p>
<p>public string PathToWebService;</p></blockquote>
<p>Dann schreiben ich folgende Zeilen im Konstruktor:</p>
<blockquote><p><span style="font-family: Courier New">            BasicHttpBinding bind = new BasicHttpBinding();</p>
<p>            Protocol = HtmlPage.Document.DocumentUri.Scheme + &#8220;://&#8221;;            Host = HtmlPage.Document.DocumentUri.Host;</p>
<p>           <br />
            // Pfad der Site berechnen</p>
<p>            string[] temp = HtmlPage.Document.DocumentUri.LocalPath.Split(&#8216;/&#8217;);</p>
<p>            string result = &#8220;&#8221;;</p>
<p>            for(int i = 0; i &lt; temp.Length; i++) {</p>
<p>                if( ! temp[i].Contains(&#8220;Silverlight&#8221;) ) {</p>
<p>                    result += temp[i];</p>
<p>                    result += &#8220;/&#8221;;</p>
<p>                }</p>
<p>                else {</p>
<p>                    break;</p>
<p>                }</p>
<p><span style="font-family: Courier New"><font face="Courier New">            }</p>
<p></font></span> </p>
<p></span></p>
<p><span style="font-family: Courier New">            PathToSite = result;</p>
<p>            PathToWebService = &#8220;_vti_bin/lists.asmx&#8221;;</span></p>
<p><span style="font-family: Courier New">            string sEndPoint = Protocol + Host + PathToSite + PathToWebService;</span></p>
<p><span style="font-family: Courier New">            EndpointAddress endpoint = new EndpointAddress(sEndPoint);</p>
<p>            proxy = new ListsSoapClient(bind, endpoint);</span></p>
<p><span style="font-family: Courier New"> </span></p></blockquote>
<p>Jetzt kann ich die Variablen Protocol, Host, PathToSite und PathToWebService Anwendungsweit verwendet, um auch andere URL wie z.B. die folgende aufzubauen:</p>
<blockquote><p><span style="font-family: Courier New">             string uri = &#8220;&#8221;;</p>
<p>             uri = Protocol + Host + PathToSite + &#8220;/_layouts/Upload.aspx?List=&#8221; + BrettBilderGUID;<span style="font-family: Courier New"><font face="Courier New">             HtmlPage.Window.Navigate(new Uri(uri), &#8220;_blank&#8221;);</p>
<p></font></span> </p>
<p></span></p></blockquote>
<p>Hier öffnen ich z.B. die Upload-Seite einer Bildbibliothek. Die letzte Variable ist eine zuvor ausgelesene GUID.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mindbusiness.de/blog/2011/02/28/silverlight-web-services-zur-laufzeit-binden/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Neues in SharePoint 2010 (Teil VI) &#8211; Nachschlagespalten</title>
		<link>http://blog.mindbusiness.de/blog/2010/10/29/neues-in-sharepoint-2010-teil-vi-nachschlagespalten/</link>
		<comments>http://blog.mindbusiness.de/blog/2010/10/29/neues-in-sharepoint-2010-teil-vi-nachschlagespalten/#comments</comments>
		<pubDate>Fri, 29 Oct 2010 13:42:37 +0000</pubDate>
		<dc:creator>Bernhard Straub</dc:creator>
				<category><![CDATA[SharePoint]]></category>
		<category><![CDATA[SharePoint 2010]]></category>

		<guid isPermaLink="false">http://www.mindbusiness.de/blog/2010/10/29/neues-in-sharepoint-2010-teil-vi-nachschlagespalten/</guid>
		<description><![CDATA[<p>Hier wieder eine kleine Neuerung in SharePoint 2010, die wir kurz beschreiben möchten.</p>
<p>In Listen können sog. Nachschlagespalten eingefügt werden, die Werte aus einer anderen Liste/Bibliothek derselben Site zur Auswahl anbietet. So kann z.B. eine benutzerdefinierte Liste “Teilprojekte” erstellt werden, und in einer Dokumentenbibliothek kann ein Dokument mit einer Nachschlagespalte auf diese Liste einem Teilprojekt zugeordnet [...]]]></description>
			<content:encoded><![CDATA[<p>Hier wieder eine kleine Neuerung in SharePoint 2010, die wir kurz beschreiben möchten.</p>
<p>In Listen können sog. Nachschlagespalten eingefügt werden, die Werte aus einer anderen Liste/Bibliothek derselben Site zur Auswahl anbietet. So kann z.B. eine benutzerdefinierte Liste “Teilprojekte” erstellt werden, und in einer Dokumentenbibliothek kann ein Dokument mit einer Nachschlagespalte auf diese Liste einem Teilprojekt zugeordnet werden.</p>
<p>Neu in SharePoint 2010 ist, dass nach der Auswahl der Nachschlagespalte aus der Ursprungsliste (z.B. die Teilprojekte) auch weitere Spalten angezeigt werden können. So kann man dann beim Dokument nicht nur das Teilprojekt sondern gleich auch noch z.B. Start- und Enddatum mit anzeigen lassen.</p>
<p>Leider lassen sich nicht alle Spaltentypen anzeigen. Wir haben eine Quell-Liste mit allen Standard-Spaltentypen erstellt und geschaut, welche davon zusätzlich mit einer Nachschlagespalte angezeigt werden können. In der Abbildung sind die entsprechenden Spalten hervorgehoben, die restlichen Standardspalten sind von einem dieser markierten Datentypen:</p>
<p><a href="http://www.mindbusiness.de/blog/wp-content/uploads/2010/10/image.png"><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="image" border="0" alt="image" src="http://www.mindbusiness.de/blog/wp-content/uploads/2010/10/image_thumb.png" width="367" height="315" /></a></p>
<p>Nicht mit angezeigt werden können also folgende Spaltentypen:</p>
<ul>
<li>Mehrere Zeilen</li>
<li>Auswahl</li>
<li>Währung</li>
<li>Nachschlagen</li>
<li>Ja/Nein</li>
<li>Person</li>
<li>Hyperlink/Bild</li>
<li>Metadaten</li>
</ul>
<p>Besonders schade finden wir das bei Auswahl, Person und Metadaten.</p>
<p>Jedenfalls sieht das Ergebnis in einer Liste mit einer Nachschlagespalte folgendermaßen aus, auf jeden Fall eine schöne Erweiterung in 2010:</p>
<p><a href="http://www.mindbusiness.de/blog/wp-content/uploads/2010/10/image1.png"><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="image" border="0" alt="image" src="http://www.mindbusiness.de/blog/wp-content/uploads/2010/10/image_thumb1.png" width="641" height="112" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mindbusiness.de/blog/2010/10/29/neues-in-sharepoint-2010-teil-vi-nachschlagespalten/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SharePoint &#8211; Mit Silverlight die Userliste einer SiteCollection auslesen und in eine ComboBox schreiben</title>
		<link>http://blog.mindbusiness.de/blog/2010/08/22/sharepoint-mit-silverlight-die-userliste-einer-sitecollection-auslesen-und-in-eine-combobox-schreiben/</link>
		<comments>http://blog.mindbusiness.de/blog/2010/08/22/sharepoint-mit-silverlight-die-userliste-einer-sitecollection-auslesen-und-in-eine-combobox-schreiben/#comments</comments>
		<pubDate>Sun, 22 Aug 2010 19:38:53 +0000</pubDate>
		<dc:creator>Albrecht Darimont</dc:creator>
				<category><![CDATA[SharePoint]]></category>
		<category><![CDATA[SharePoint 2010]]></category>
		<category><![CDATA[SharePoint User]]></category>
		<category><![CDATA[Silverlight]]></category>

		<guid isPermaLink="false">http://www.mindbusiness.de/blog/2010/08/22/sharepoint-mit-silverlight-die-userliste-einer-sitecollection-auslesen-und-in-eine-combobox-schreiben/</guid>
		<description><![CDATA[<p>Dieser Blog beschreibt wie sie in einer Silverlight Maske eine ComboBox mit den aktuellen Usern einer SiteCollection füllen können. Der konkrete Projekthintergrund war die Vorgabe, in einer Silverlight Maske mehrere Tabellen über eine Maske zu befüllen und dabei auch User Objekte zu schreiben. Dazu muss der Benutzer clientseitig User auswählen können, um diese dann zu [...]]]></description>
			<content:encoded><![CDATA[<p>Dieser Blog beschreibt wie sie in einer Silverlight Maske eine ComboBox mit den aktuellen Usern einer SiteCollection füllen können. Der konkrete Projekthintergrund war die Vorgabe, in einer Silverlight Maske mehrere Tabellen über eine Maske zu befüllen und dabei auch User Objekte zu schreiben. Dazu muss der Benutzer clientseitig User auswählen können, um diese dann zu schreiben. Die Liste musste also dynamisch zur Laufzeit abgefragt werden.</p>
<h3>Vorgehensweise</h3>
<p>Als erste muss bekannt sein und dynamisch jederzeit ermittelt werden können, welche User es gibt. Dazu muss die SharePoint Liste <strong>Benutzerinformationsliste</strong> (people) ausgelesen werden. Zudem müssen die Feldbezeichnungen bekannt sein, aus denen der Name des Users und seine ID hervorgehen. Name und ID werden benötigt, wenn ein neuer Datensatz mit einem User Objekt als Metadatum angelegt werden soll.</p>
<p>Als erstes habe ich die GUID ermitteln und in eine Variable geschrieben.Dazu habe ich über <strong>Benutzer und Gruppen</strong> die Liste <strong>Alle Personen</strong> anzeigen lassen. Über <strong>Einstellungen</strong> erhalte ich in der Adressezeile die GUID dargestellt und kann diese in einer Variablen speichern.</p>
<p><a href="http://www.mindbusiness.de/blog/wp-content/uploads/2010/08/image9.png"><img style="border: 0px" src="http://www.mindbusiness.de/blog/wp-content/uploads/2010/08/image_thumb9.png" border="0" alt="image" width="484" height="32" /></a></p>
<p><span style="color: #800000;font-size: medium">String userGUID = &#8220;{776af73a-fdcc-46e7-8337-7ff385a17cde}&#8221;;</span></p>
<p>Als nächste habe ich eine Klasse <strong>User</strong> definiert und eine Liste, die als Cache für alle eingelesenen User dient. Der Cache ist eine generische Liste.</p>
<p><span style="color: #800000;font-size: medium">List&lt;User&gt; ListUser = new List&lt;User&gt;();</span></p>
<p>using System;<br />
using System.Net;<br />
using System.Windows;<br />
using System.Windows.Controls;<br />
using System.Windows.Documents;<br />
using System.Windows.Ink;<br />
using System.Windows.Input;<br />
using System.Windows.Media;<br />
using System.Windows.Media.Animation;<br />
using System.Windows.Shapes;</p>
<p>namespace ItergoDos<br />
{<br />
  <span style="color: #800000;font-size: medium">  public class User<br />
</span>    {<br />
        public string UserSelection { set; get; }<br />
        public string ImnName { set; get; }</p>
<p>        public string getSPValue()<br />
        {</p>
<p>            return UserSelection + &#8220;,#&#8221; + ImnName;<br />
        }</p>
<p>    }<br />
}</p>
<p>Hier sehen Sie die Properties <strong><span style="font-size: medium">UserSelection</span></strong> und <strong><span style="font-size: medium">ImnName</span></strong>, die der Web Service liefert, wenn die Liste abgefragt wird. Die Methode</p>
<p>getSPValue() liefert mir einen String. mit dessen Hilfe ich einen User “schreiben” kann.</p>
<p>Jetzt muss ich die Liste asynchron abrufen und dann in den Cache und in die ComboBox schreiben.</p>
<h4>Zunächst der Request:</h4>
<p> </p>
<p><span style="font-size: small">statusFlag = StatusFlags.USER_AUSLESEN;  (das statusFlag wird über eine Enumeration gesetzt.)<br />
GUID = userGUID;<br />
proxy.GetListItemsAsync(GUID, null, null, null, null, null, null);</span></p>
<p><span style="font-size: small">Im Callback steht die folgende Zeile  </span></p>
<p>void proxy_GetListItemsCompleted(object sender, GetListItemsCompletedEventArgs e)<br />
        {<br />
            switch (statusFlag)<br />
            {<br />
                case StatusFlags.START: this.writeGUIDSToCache(e); break;<br />
               <span style="color: #800000;font-size: small">case StatusFlags.USER_AUSLESEN: populateComboUser(e); break;<br />
</span>            }<br />
        }</p>
<p>Und so sieht die Methode populateComboUser(e) aus.</p>
<p><span style="font-size: small">private void populateComboUser(GetListItemsCompletedEventArgs e)<br />
   {<br />
       this.comboUser.Items.Clear();<br />
       var dieListe = (from x in e.Result.Elements().First().Elements()<br />
                       select new User<br />
                       {<br />
                           UserSelection = x.Attribute(&#8220;ows_UserSelection&#8221;).Value,<br />
                           ImnName = x.Attribute(&#8220;ows_ImnName&#8221;).Value<br />
                       }).ToList(); </span></p>
<p><span style="font-size: small">       foreach (User u in dieListe)<br />
       {<br />
               ListUser.Add(u);<br />
               this.comboUser.Items.Add(u.ImnName);<br />
       }<br />
   }</span></p>
<p>Über Linq lese ich den Result des Request aus schreibe eine Userliste, die in der anschließenden Schleife in den Cache, also die Liste,  und in die ComboBox geschrieben wird. In <strong>ows_UserSelection</strong> steht die ID und in <strong>ows_ImnName</strong> der Username. </p>
<p>Welche Felder der Web Service liefert habe ich über Fiddler ermittelt indem ich in einem ersten Schritt einfach nur die Liste abgefragt und mir dann das Protokoll angeschaut habe.  </p>
<h3>Das Ergebnis sieht dann so aus:</h3>
<p> </p>
<p><a href="http://www.mindbusiness.de/blog/wp-content/uploads/2010/08/image10.png"><img style="border: 0px" src="http://www.mindbusiness.de/blog/wp-content/uploads/2010/08/image_thumb10.png" border="0" alt="image" width="484" height="256" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mindbusiness.de/blog/2010/08/22/sharepoint-mit-silverlight-die-userliste-einer-sitecollection-auslesen-und-in-eine-combobox-schreiben/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SharePoint 2010 &#8211; Taxonomie, Tagging, Metadaten, Bewertungen (I)</title>
		<link>http://blog.mindbusiness.de/blog/2010/08/06/sharepoint-2010-taxonomie-tagging-metadaten-bewertungen-i/</link>
		<comments>http://blog.mindbusiness.de/blog/2010/08/06/sharepoint-2010-taxonomie-tagging-metadaten-bewertungen-i/#comments</comments>
		<pubDate>Fri, 06 Aug 2010 13:53:32 +0000</pubDate>
		<dc:creator>Bernhard Straub</dc:creator>
				<category><![CDATA[SharePoint]]></category>
		<category><![CDATA[SharePoint 2010]]></category>

		<guid isPermaLink="false">http://www.mindbusiness.de/blog/2010/08/06/sharepoint-2010-taxonomie-tagging-metadaten-bewertungen-i/</guid>
		<description><![CDATA[<p>Mit SharePoint 2010 hat Microsoft einige Möglichkeiten und Funktionen hinzugefügt, um Inhalte durch Metadaten und Schlüsselwörter sowie Bewertungen zu kennzeichnen.</p>
<p>So entstehen sowohl für das Dokumenten- und Informationsmanagement als auch für die sozialen Netzwerke in SharePoint Strukturen und Informationsquellen, die neue Möglichkeiten für die Suche und Darstellung von Informationen bieten.</p>
<p>An einigen Stellen wurde schon von diesen [...]]]></description>
			<content:encoded><![CDATA[<p>Mit SharePoint 2010 hat Microsoft einige Möglichkeiten und Funktionen hinzugefügt, um Inhalte durch Metadaten und Schlüsselwörter sowie Bewertungen zu kennzeichnen.</p>
<p>So entstehen sowohl für das Dokumenten- und Informationsmanagement als auch für die sozialen Netzwerke in SharePoint Strukturen und Informationsquellen, die neue Möglichkeiten für die Suche und Darstellung von Informationen bieten.</p>
<p>An einigen Stellen wurde schon von diesen neuen Funktionalitäten berichtet, wir möchten mit einer kleinen Artikelserie die Praxis verdeutlichen &#8211; wie wird das eingerichtet, wo hat der Anwender nutzen davon, welche Probleme und Lösungsmöglichkeiten gibt es etc. Zuerst einmal ein paar Begriffsdefinitionen.</p>
<h5>Verwaltete Metadaten (Managed Metadata)</h5>
<p>Im Unternehmen gibt es eine Reihe an festen Kategorien oder Begrifflichkeiten, die nach Möglichkeit zentral definiert werden und für verschiedene Anwendungszwecke und Informationen zur Verfügung stehen sollen. Beispiele:</p>
<ul>
<li>Standorte eines Unternehmens (Alzenau, Berlin, Nürnberg…) </li>
<li>Dokumenttypen (Angebot, Vertrag, Vorlage…) </li>
<li>Sprachen (Deutsch, Englisch…) </li>
<li>Status (Neu, In Arbeit, Abgeschlossen…) </li>
</ul>
<p>Es handelt sich also um eindeutig definierbare Auflistungen zu einem bestimmten Stichwort. In SharePoint können nun z.B. Dokumente an unterschiedlichen Stellen abgespeichert werden, an jeder Stelle soll aber z.B. die Sprache des Dokuments und der Dokumenttyp als zusätzliche Information abgespeichert werden.</p>
<p>Mit den verwalteten Metadaten steht nun in SharePoint ein zentraler Speicherort zur Verfügung, in dem diese Auflistungen angelegt und gepflegt werden können. Wird z.B. im Laufe der Zeit ein neuer Dokumenttyp benötigt (Trainingsunterlage…), wird dieser Begriff dort eingepflegt und kann ab sofort in allen Dokumentablagen, der die entsprechende Auflistung zugeordnet ist, verwendet werden.</p>
<p>Weiterhin können nicht mehr verwendete Begriffe &quot;stillgelegt&quot; werden (z.B. ein Standort), Elemente in SharePoint, denen ein solcher Begriff zugeordnet wurde, behalten diesen jedoch bei.</p>
<p>Die Summe all dieser Begriffe und Auflistungen kann als die Taxonomie eines Unternehmens bezeichnet werden. Oder, um die <a href="http://de.wikipedia.org/wiki/Taxonomie" target="_blank">Wikipedia</a> zu zitieren:</p>
<p><em>Eine <b>Taxonomie</b> (</em><a href="http://de.wikipedia.org/wiki/Altgriechische_Sprache"><em>altgr.</em></a><em> táxis ,Ordnung’ und nómos ,Gesetz’) oder <b>Klassifikationsschema</b> ist ein einheitliches Verfahren oder Modell, um Objekte eines gewissen Bereichs (ggf. unter Zuhilfenahme eines Klassifikationsinstruments) nach bestimmten Kriterien zu </em><a href="http://de.wikipedia.org/wiki/Klassifikation"><em>klassifizieren</em></a><em>, das heißt sie in bestimmte </em><a href="http://de.wikipedia.org/wiki/Klassifizierung"><em>Kategorien</em></a><em> oder </em><a href="http://de.wikipedia.org/wiki/Klasse"><em>Klassen</em></a><em> (auch </em><a href="http://de.wikipedia.org/wiki/Taxon"><em>Taxa</em></a><em> genannt) einzuordnen.</em></p>
<p><a href="http://technet.microsoft.com/de-de/library/ee530389.aspx" target="_blank">Microsoft</a> drückt es im Zusammenhang mit SharePoint 2010 folgendermaßen aus:</p>
<p><em>Bei verwalteten Metadaten handelt es sich um eine hierarchische Auflistung zentral verwalteter Ausdrücke, die Sie definieren und anschließend als Attribute für Elemente in Microsoft SharePoint Server 2010 verwenden können.</em></p>
<h5>Schlüsselwörter (Keywords)</h5>
<p>Während die verwalteten Metadaten zentral festgelegt und von bestimmten Anwendern gepflegt werden, ermöglicht SharePoint 2010 an vielen Stellen auch die Verwendung von Schlüsselwörtern. Hier können Anwender selbst Begriffe definieren, die ihnen für den jeweiligen Zusammenhang wichtig sind. Wichtig ist, dass diese Schlüsselwörter nach der ersten Verwendung von allen Anwendern wiederverwendet werden können, so dass in einem Unternehmen dadurch eine benutzerdefinierte Klassifizierung von Inhalten entstehen kann, die auch als Social Tagging oder <a href="http://de.wikipedia.org/wiki/Social_Tagging" target="_blank">Folksonomien</a> (im Gegensatz zur <em>Taxonomie</em>) bezeichnet wird.</p>
<p>Bei der Zuordnung von verwalteten Metadaten oder Schlüsselwörter z.B. zu einem Dokument werden die entsprechenden vorhandenen Begriffe als Auswahl angeboten:</p>
<p><a href="http://www.mindbusiness.de/blog/wp-content/uploads/2010/08/image.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://www.mindbusiness.de/blog/wp-content/uploads/2010/08/image_thumb.png" width="394" height="140" /></a> </p>
<p>Im Beispiel sieht man, dass zwei der Begriffe von Anwendern als Schlüsselwörter definiert wurden, die anderen beiden als verwaltete Metadaten vorliegen.</p>
<h5></h5>
<h5>Terminologiespeicherverwaltung (Term Store Management)</h5>
<p>Nun braucht es natürlich auch einen Ort, an dem die Begriffe verwaltet werden können, das ist die Terminologiespeicherverwaltung. Ohne ins Detail zu gehen, möchten wir hier doch schon drei Dinge hervorheben:</p>
<ul>
<li>Schlüsselwörter können hier in den Bereich der verwalteten Metadaten verschoben werden. Wenn im Unternehmen im Lauf der Zeit festgestellt wird, dass bestimmte Begriffe in den überwachten Bereich in eine Taxonomiestruktur übernommen werden sollen, ist dies problemlos möglich, die Begriffe können natürlich weiterhin verwendet werden. </li>
<li>Verwaltete Metadaten können mehrsprachig definiert werden. Hat ein Anwender in einer deutschen SharePoint-Umgebung z.B. ein Dokument als &quot;Angebot&quot; markiert, taucht dies in einer englischen Umgebung als &quot;Offer&quot; auf. </li>
<li>Synomyme und Abkürzungen können für verwaltete Metadaten gepflegt werden </li>
</ul>
<h5>Bewertungen</h5>
<p>Neu hinzugekommen ist noch die Möglichkeit, Dokumente und andere Elemente bewerten zu können. Dies wird am Element durch Sternchen gekennzeichnet, wie die Anwender sie auch von anderen Systemen bzw. Webanwendungen gewohnt sind:</p>
<p><a href="http://www.mindbusiness.de/blog/wp-content/uploads/2010/08/image1.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://www.mindbusiness.de/blog/wp-content/uploads/2010/08/image_thumb1.png" width="99" height="26" /></a> </p>
<p>Damit können besonders gut bewertete Artikel und Dokumente hervorgehoben werden, oder &quot;Ladenhüter&quot; gezielt überarbeitet und verbessert werden.</p>
<p>Mit der nächsten Folge in dieser Serie gehen wir in die konkrete Nutzung und Einrichtung.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mindbusiness.de/blog/2010/08/06/sharepoint-2010-taxonomie-tagging-metadaten-bewertungen-i/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>SharePoint-Eingabefeld per jquery ausblenden</title>
		<link>http://blog.mindbusiness.de/blog/2010/07/12/sharepoint-eingabefeld-per-jquery-ausblenden/</link>
		<comments>http://blog.mindbusiness.de/blog/2010/07/12/sharepoint-eingabefeld-per-jquery-ausblenden/#comments</comments>
		<pubDate>Mon, 12 Jul 2010 13:15:06 +0000</pubDate>
		<dc:creator>Bernhard Straub</dc:creator>
				<category><![CDATA[SharePoint]]></category>

		<guid isPermaLink="false">http://www.mindbusiness.de/blog/2010/07/12/sharepoint-eingabefeld-per-jquery-ausblenden/</guid>
		<description><![CDATA[<p>Viele Tricks finden sich rund um jquery, um Webseiten allgemein sowie auch speziell SharePoint-Seiten zu gestalten bzw. spezielle Funktionen hinzuzufügen.</p>
<p>Bei einem Kunden sollte im SharePoint-Blog (SharePoint 2007) bei den Kommentaren das Titelfeld mit der kompletten Zeile ausgeblendet werden. Dazu wurde die Datei post.aspx im SharePoint Designer geöffnet und folgender Code eingefügt (für Ihre Anwendung die [...]]]></description>
			<content:encoded><![CDATA[<p>Viele Tricks finden sich rund um <a href="http://jquery.com/" target="_blank">jquery</a>, um Webseiten allgemein sowie auch speziell SharePoint-Seiten zu gestalten bzw. spezielle Funktionen hinzuzufügen.</p>
<p>Bei einem Kunden sollte im SharePoint-Blog (SharePoint 2007) bei den Kommentaren das Titelfeld mit der kompletten Zeile ausgeblendet werden. Dazu wurde die Datei <em>post.aspx</em> im SharePoint Designer geöffnet und folgender Code eingefügt (für Ihre Anwendung die Bezeichnung “Titel” austauschen mit der Zeilenbeschriftung, die ausgeblendet werden soll):</p>

<div class="wp_syntax"><div class="code"><pre class="html4strict" style="font-family:monospace;"><span style="color: #009900;">&lt;asp:<span style="color: #000066;">content</span> runat<span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;server&quot;</span> contentplaceholderid<span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;PlaceHolderAdditionalPageHead&quot;</span>&gt;</span>
&nbsp;
	<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">script</span> <span style="color: #000066;">type</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;text/javascript&quot;</span> <span style="color: #000066;">src</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;http://pfad_anpassen/jquery-1.4.2.min.js&quot;</span>&gt;&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">script</span>&gt;</span>
	<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">script</span> <span style="color: #000066;">type</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;text/javascript&quot;</span>&gt;</span>
	$(document).ready(function(){
		$(&quot;:input[title='Titel']&quot;).parent().parent().parent().hide();
	});
	<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">script</span>&gt;</span>
&nbsp;
<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span>asp:content&gt;</span></pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://blog.mindbusiness.de/blog/2010/07/12/sharepoint-eingabefeld-per-jquery-ausblenden/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SharePoint 2010 Solution Installer</title>
		<link>http://blog.mindbusiness.de/blog/2010/07/08/sharepoint-2010-solution-installer/</link>
		<comments>http://blog.mindbusiness.de/blog/2010/07/08/sharepoint-2010-solution-installer/#comments</comments>
		<pubDate>Thu, 08 Jul 2010 19:59:27 +0000</pubDate>
		<dc:creator>Torsten Schuster</dc:creator>
				<category><![CDATA[SharePoint]]></category>
		<category><![CDATA[SharePoint 2010]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://www.mindbusiness.de/blog/2010/07/08/sharepoint-2010-solution-installer/</guid>
		<description><![CDATA[<p>Eine neu überarbeitete Version des allseits beliebten SharePoint Solution Installers ist auf http://sharepointberater.de ab sofort verfügbar. </p>

der Installer ist mit einer Demo Solution in eimem zip Kontainer verpackt 
die Demo Solution enthält das bekannte Demo Farm feature 
die enthaltene unveränderte Solution lässt sich mit dem Installer auf WSS &#38;&#38; MOSS, SharePoint Foundation &#38;&#38; natuerlich auch [...]]]></description>
			<content:encoded><![CDATA[<p>Eine neu überarbeitete Version des allseits beliebten <a href="http://sharepointinstaller.codeplex.com/" target="_blank">SharePoint Solution Installers</a> ist auf <a href="http://sharepointberater.de">http://sharepointberater.de</a> ab sofort <a href="http://spberater.mindbusiness.org/Documents/_SP_Solution_Installer_for_v3_v4.zip_" target="_blank">verfügbar</a>. </p>
<ul>
<li>der Installer ist mit einer Demo Solution in eimem zip Kontainer verpackt </li>
<li>die Demo Solution enthält das bekannte Demo Farm feature </li>
<li>die enthaltene unveränderte Solution lässt sich mit dem Installer auf WSS &amp;&amp; MOSS, SharePoint Foundation &amp;&amp; natuerlich auch auf SharPoint Sever 2010 gleichermaßen für Demo Zwecke bereitstellen </li>
<li>gleiches gilt fuer das, ebenfalls im zip verpackte aktuelle, Gantt Eval Web Part (<a href="http://www.share4suite.de/index.php?SOFTWARE_SP_TOOLS_SHARE4GANTT" target="_blank">ausführliche Beschreibung hier</a>) </li>
</ul>
<p>[<strong><em>Update</em></strong> mit dem Installer lassen sich alle Solutions unter SP2010 installieren, welche in ihrem manifest keine nicht mehr unterstützten Attribute enhalten und/oder in deren Ablaufkode keine SP-Objekte referenzieren, welche nicht mehr implementiert sind :-(]</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mindbusiness.de/blog/2010/07/08/sharepoint-2010-solution-installer/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SharePoint 2010 Service Manager auf CodePlex</title>
		<link>http://blog.mindbusiness.de/blog/2010/06/28/sp2010servicemanager/</link>
		<comments>http://blog.mindbusiness.de/blog/2010/06/28/sp2010servicemanager/#comments</comments>
		<pubDate>Mon, 28 Jun 2010 06:00:36 +0000</pubDate>
		<dc:creator>Dirk Grasekamp</dc:creator>
				<category><![CDATA[SharePoint]]></category>
		<category><![CDATA[SharePoint 2010]]></category>

		<guid isPermaLink="false">http://www.mindbusiness.de/blog/?p=876</guid>
		<description><![CDATA[<p>Ein PC oder Laptop mit einer 2-Kern-CPU und 4 GB RAM mit Windows 7 oder Windows Vista SP2 64-Bit reichen aus, um eine Entwickler-, Evaluierungs- oder Demoumgebung mit SharePoint 2010 (Foundation oder Server) einzurichten. Ist so eine Maschine eingerichtet, stellt man unweigerlich fest, dass SharePoint 2010 Ressourcen in Anspruch nimmt und sogar schnellere Maschinen für [...]]]></description>
			<content:encoded><![CDATA[<p>Ein PC oder Laptop mit einer 2-Kern-CPU und 4 GB RAM mit Windows 7 oder Windows Vista SP2 64-Bit reichen aus, um eine Entwickler-, Evaluierungs- oder Demoumgebung mit SharePoint 2010 (Foundation oder Server) einzurichten. Ist so eine Maschine eingerichtet, stellt man unweigerlich fest, dass SharePoint 2010 Ressourcen in Anspruch nimmt und sogar schnellere Maschinen für das Starten länger brauchen. Gerade bei „Unterwegs-Maschinen“, die nicht nur für die o.g. SharePoint-Zwecke eingerichtet wurden, ist das hier und da kein Vorteil.</p>
<p>Mit dem Tool SharePoint 2010 Service Manager können die für SharePoint 2010 benötigten Dienste einfach gestoppt werden. Das gibt Ressourcen frei.</p>
<p>SharePoint 2010 Service Manager auf der CodePlex-Seite (spät gefunden): <a title="SharePoint 2010 Service Manager" href="http://sharepointserviceman.codeplex.com/" target="_blank">http://sharepointserviceman.codeplex.com/</a></p>
<div id="attachment_877" class="wp-caption alignnone" style="width: 310px"><a title="SharePoint 2010 Service Manager" href="http://www.mindbusiness.de/blog/wp-content/uploads/2010/06/SharePoint2010_Service_Manager.png" target="_blank"><img class="size-medium wp-image-877" title="SharePoint 2010 Service Manager" src="http://www.mindbusiness.de/blog/wp-content/uploads/2010/06/SharePoint2010_Service_Manager-300x282.png" alt="SharePoint 2010 Service Manager" width="300" height="282" /></a><p class="wp-caption-text">SharePoint 2010 Service Manager</p></div>
<p><strong>Achtung:</strong> Das Tool verfügt über die unübersehbare Schaltfläche <em>Stop SharePoint 2010 from starting automatically when Windows starts</em>, die eben beim Start verhindert, dass die Dienste für SharePoint 2010 gestartet werden und kümmert sich dabei auch um SQL Server. Dabei wird offenbar nicht unterschieden, ob SQL Server noch für weitere Zwecke eingesetzt wird. Zum einen ist die Funktion prima, um Windows zu einem schnelleren Start zu bewegen, und zum anderen verhindert sie, dass vielleicht benötigte SQL Server-Dienste gestartet werden. Grundsätzlich ist das Tool eine feine Sache.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mindbusiness.de/blog/2010/06/28/sp2010servicemanager/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SharePoint Web Services &#8211; Arbeiten mit berechneten Felder &#8211; float in int umwandeln &#8211; Arbeiten mit float-Datentypen in einem Web Service Response</title>
		<link>http://blog.mindbusiness.de/blog/2010/05/05/sharepoint-web-services-arbeiten-mit-berechneten-felder-float-in-int-umwandeln-arbeiten-mit-float-datentypen-in-einem-web-service-response/</link>
		<comments>http://blog.mindbusiness.de/blog/2010/05/05/sharepoint-web-services-arbeiten-mit-berechneten-felder-float-in-int-umwandeln-arbeiten-mit-float-datentypen-in-einem-web-service-response/#comments</comments>
		<pubDate>Wed, 05 May 2010 17:36:38 +0000</pubDate>
		<dc:creator>Albrecht Darimont</dc:creator>
				<category><![CDATA[MindBusiness]]></category>
		<category><![CDATA[SharePoint]]></category>
		<category><![CDATA[BPOS]]></category>
		<category><![CDATA[float in integer]]></category>
		<category><![CDATA[Microsoft Online Services]]></category>
		<category><![CDATA[Silverlight]]></category>

		<guid isPermaLink="false">http://www.mindbusiness.de/blog/2010/05/05/sharepoint-web-services-arbeiten-mit-berechneten-felder-float-in-int-umwandeln-arbeiten-mit-float-datentypen-in-einem-web-service-response/</guid>
		<description><![CDATA[<p>Dieser Blog beschreibt die folgende Situation:</p>
<p>In einer SharePoint-Liste wird das Alter einer Person berechnet als:</p>
<p></p>
<p>Mit diesem Wert soll in einer Silverlight-Anwendung gerechnet werden.</p>
<p>Wenn dieses Feld über einen Web Service ausgelesen wird, dann findet man im XML-Response folgende Zeile für das Alter 9 Jahre:</p>
<p>ows_Alter=”float;#9.000000000000”</p>
<p>Diese muss nun in eine Integer gewandet werden, um mit dem Alter arbeiten [...]]]></description>
			<content:encoded><![CDATA[<p>Dieser Blog beschreibt die folgende Situation:</p>
<p>In einer SharePoint-Liste wird das Alter einer Person berechnet als:</p>
<p><a href="http://www.mindbusiness.de/blog/wp-content/uploads/2010/05/image1.png"><img style="border: 0px" src="http://www.mindbusiness.de/blog/wp-content/uploads/2010/05/image_thumb1.png" border="0" alt="image" width="236" height="162" /></a></p>
<p>Mit diesem Wert soll in einer Silverlight-Anwendung gerechnet werden.</p>
<p>Wenn dieses Feld über einen Web Service ausgelesen wird, dann findet man im XML-Response folgende Zeile für das Alter 9 Jahre:</p>
<blockquote><p>ows_Alter=”float;#9.000000000000”</p></blockquote>
<p>Diese muss nun in eine Integer gewandet werden, um mit dem Alter arbeiten zu können. Im konkreten Fall ging es um eine Alterstatistik. Die Lösung sieht folgendermaßen aus:</p>
<blockquote><p>Alter  = Int32.Parse(x.Attribute(&#8220;ows_Alter&#8221;).Value.Split(&#8216;#&#8217;)[1].Split(&#8216;.&#8217;)[0]),</p></blockquote>
<p>Achtung: das Komma ist keine Fehler, der Ausdruck steht in einem Linq-Select</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mindbusiness.de/blog/2010/05/05/sharepoint-web-services-arbeiten-mit-berechneten-felder-float-in-int-umwandeln-arbeiten-mit-float-datentypen-in-einem-web-service-response/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

