<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://www.sharepointblogs.com/utility/FeedStylesheets/atom.xsl" media="screen"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en"><title type="html">kwanl&amp;#39;s blog</title><subtitle type="html" /><id>http://www.sharepointblogs.com/kwanl/atom.aspx</id><link rel="alternate" type="text/html" href="http://www.sharepointblogs.com/kwanl/default.aspx" /><link rel="self" type="application/atom+xml" href="http://www.sharepointblogs.com/kwanl/atom.aspx" /><generator uri="http://communityserver.org" version="3.0.20611.960">Community Server</generator><updated>2005-02-13T16:17:00Z</updated><entry><title>Datagrid not retaining viewstate on postback</title><link rel="alternate" type="text/html" href="http://www.sharepointblogs.com/kwanl/archive/2007/05/24/datagrid-not-retaining-viewstate-on-postback.aspx" /><id>http://www.sharepointblogs.com/kwanl/archive/2007/05/24/datagrid-not-retaining-viewstate-on-postback.aspx</id><published>2007-05-24T17:58:00Z</published><updated>2007-05-24T17:58:00Z</updated><content type="html">&lt;p&gt;I haven&amp;#39;t done much DataGrid programming in the past but it&amp;#39;s used quite a bit at my new job. I thought I was pretty proficient at ASP.Net 1.1 but I was having some trouble getting the DataGrid viewstate to work. The problem was when you have AutoGenerateColumns set to false you have to do a little bit of extra work for the viewstate to load, you need to set up the columns on each page load.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;http://www.velocityreviews.com/forums/t111954-net-datagrid-contents-lost-on-postback.html&lt;/p&gt;&lt;img src="http://www.sharepointblogs.com/aggbug.aspx?PostID=27274" width="1" height="1" alt="" /&gt;
			&lt;hr&gt;&lt;span style="font-size:10pt;"&gt;Posted on &lt;a href="http://www.sharepointblogs.com/"&gt;SharePoint Blogs&lt;/a&gt;&lt;/span&gt;
		  &lt;img src="http://www.sharepointblogs.com/aggbug.aspx?PostID=1222" width="1" height="1"&gt;</content><author><name>kwanl</name><uri>http://www.sharepointblogs.com/members/kwanl.aspx</uri></author></entry><entry><title>Writing a Rendering Extension for Reporting Services 2005</title><link rel="alternate" type="text/html" href="http://www.sharepointblogs.com/kwanl/archive/2007/05/03/writing-a-rendering-extension-for-reporting-services-2005.aspx" /><id>http://www.sharepointblogs.com/kwanl/archive/2007/05/03/writing-a-rendering-extension-for-reporting-services-2005.aspx</id><published>2007-05-03T17:51:00Z</published><updated>2007-05-03T17:51:00Z</updated><content type="html">&lt;p&gt;One glaring omission from the out-of-the-box SSRS 2005 output formats is plain text ASCII. I know there is a CSV option available but CSV is primarily used for data-interchange. My goal was to create a custom rendering extension to output reporting services reports as attractive as possible in plain text ASCII. &lt;/p&gt;&lt;p&gt;Conceptually, the process is simple, you provide a class that implements the Microsoft.ReportingServices.ReportRendering.IRenderingExtension interface and add an entry to the rsreportserver.config file for your assembly.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;b&gt;Implementing IRenderingExtension&lt;/b&gt;&lt;/p&gt;&lt;p&gt;The IRenderingExtension interface is really straight-forward and there are only a few methods you have to implement with Render and RenderStream being the most important (and challenging).&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;Modifying rsreportserver.config&lt;/b&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;The rsreportserver.config file controls various settings for the Report Server including which extensions are available. To add a rendering extension, you add a new Extension element under the Extensions/Render element.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;For example, this adds an extension for a rendering extension name SimpleRenderer.Class1 in the assembly SimpleRenderer.dll.&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;lt;Extension Name=&amp;quot;Kwan&amp;quot; Type=&amp;quot;SimpleRenderer.Class1,SimpleRenderer&amp;quot; Visible=&amp;quot;true&amp;quot; /&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;In addition to modifying the configuration file you need to make sure your assembly is fully trusted. This is because the classes in Microsoft.ReportingServices.ReportRendering only support fully trusted callers. There are several ways to do this but the preferred method is to update the policy file to give your specific assembly full trust.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Add the following to your rssrvpolicy.config (specifying the public key blob for your assembly):&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;CodeGroup&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; class=&amp;quot;UnionCodeGroup&amp;quot;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; version=&amp;quot;1&amp;quot;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PermissionSetName=&amp;quot;FullTrust&amp;quot;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Name=&amp;quot;SimpleRenderer_Strong_Name&amp;quot;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Description=&amp;quot;This code group grants SimpleRenderer code full trust. &amp;quot;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;IMembershipCondition&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; class=&amp;quot;StrongNameMembershipCondition&amp;quot;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; version=&amp;quot;1&amp;quot;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; PublicKeyBlob=&amp;quot;...&amp;quot;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/CodeGroup&amp;gt;&lt;br /&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://www.sharepointblogs.com/aggbug.aspx?PostID=24713" width="1" height="1" alt="" /&gt;
			&lt;hr&gt;&lt;span style="font-size:10pt;"&gt;Posted on &lt;a href="http://www.sharepointblogs.com/"&gt;SharePoint Blogs&lt;/a&gt;&lt;/span&gt;
		  &lt;img src="http://www.sharepointblogs.com/aggbug.aspx?PostID=1224" width="1" height="1"&gt;</content><author><name>kwanl</name><uri>http://www.sharepointblogs.com/members/kwanl.aspx</uri></author></entry><entry><title>Web Part Maintenance Page</title><link rel="alternate" type="text/html" href="http://www.sharepointblogs.com/kwanl/archive/2007/04/09/web-part-maintenance-page.aspx" /><id>http://www.sharepointblogs.com/kwanl/archive/2007/04/09/web-part-maintenance-page.aspx</id><published>2007-04-09T19:02:00Z</published><updated>2007-04-09T19:02:00Z</updated><content type="html">&lt;p&gt;An old tip that&amp;#39;s still very useful. When you have a web part that&amp;#39;s causing you problems and you can&amp;#39;t even get to the web part page try using the &lt;i&gt;Web Part Maintenance Page&lt;/i&gt;.&lt;/p&gt;&lt;p&gt;To access the &lt;i&gt;Web Part Maintenance Page&lt;/i&gt;&amp;nbsp; you just suffix your web part page&amp;#39;s address with &amp;quot;?contents=1&amp;quot;.&lt;br /&gt;&lt;/p&gt;&lt;img src="http://www.sharepointblogs.com/aggbug.aspx?PostID=22738" width="1" height="1" alt="" /&gt;
			&lt;hr&gt;&lt;span style="font-size:10pt;"&gt;Posted on &lt;a href="http://www.sharepointblogs.com/"&gt;SharePoint Blogs&lt;/a&gt;&lt;/span&gt;
		  &lt;img src="http://www.sharepointblogs.com/aggbug.aspx?PostID=1225" width="1" height="1"&gt;</content><author><name>kwanl</name><uri>http://www.sharepointblogs.com/members/kwanl.aspx</uri></author></entry><entry><title>Changes to the SSRS web services with Integrated Mode</title><link rel="alternate" type="text/html" href="http://www.sharepointblogs.com/kwanl/archive/2007/03/28/changes-to-the-ssrs-web-services-with-integrated-mode.aspx" /><id>http://www.sharepointblogs.com/kwanl/archive/2007/03/28/changes-to-the-ssrs-web-services-with-integrated-mode.aspx</id><published>2007-03-28T21:42:00Z</published><updated>2007-03-28T21:42:00Z</updated><content type="html">&lt;p&gt;When you configure your Report Server to use Integrated Mode there will be some changes in the web services.&lt;/p&gt;  &lt;p&gt;There is a new SOAP endpoint, &lt;b&gt;ReportService2006.asmx&lt;/b&gt;, that replaces &lt;b&gt;ReportService2005.asmx&lt;/b&gt;. In integrated mode all calls to ReportService2005 will result in an &amp;quot;operation not supported&amp;quot; exception. &lt;/p&gt;  &lt;p&gt;The &lt;b&gt;ReportExecution2005.asmx&lt;/b&gt; end point will still work in both integrated and native modes. However, because he reports are stored in SharePoint,&amp;nbsp;the report server&amp;nbsp;paths are no longer used.&lt;/p&gt;  &lt;p&gt;A set of SharePoint proxy end points have also been added for working with a report server in Integrated mode. Using these endpoints, SharePoint will handle the authentication between the SharePoint server and the report server.&lt;/p&gt;  &lt;p&gt;The ReportServiceAuthentication proxy endpoint is used for authentication with a report server when an application is using Forms Authentication.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/bb326290.aspx" class=""&gt;Features Supported by Reporting Services in SharePoint Integrated Mode&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/bb326209.aspx" class=""&gt;Using SOAP API In a SharePoint Application&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;*Update*&lt;/b&gt;&lt;/p&gt;&lt;p&gt;So far, I have found that the biggest change in the endpoints is that the ReportPath for web methods that expect one is now a SharePoint path. Other than this I haven&amp;#39;t had to make any changes in my web service calls. &lt;br /&gt;&lt;/p&gt;&lt;img src="http://www.sharepointblogs.com/aggbug.aspx?PostID=22151" width="1" height="1" alt="" /&gt;
			&lt;hr&gt;&lt;span style="font-size:10pt;"&gt;Posted on &lt;a href="http://www.sharepointblogs.com/"&gt;SharePoint Blogs&lt;/a&gt;&lt;/span&gt;
		  &lt;img src="http://www.sharepointblogs.com/aggbug.aspx?PostID=1226" width="1" height="1"&gt;</content><author><name>kwanl</name><uri>http://www.sharepointblogs.com/members/kwanl.aspx</uri></author></entry><entry><title>ASP.Net v1.1 and v2.0 side by side</title><link rel="alternate" type="text/html" href="http://www.sharepointblogs.com/kwanl/archive/2007/03/22/asp-net-v1-1-and-v2-0-side-by-side.aspx" /><id>http://www.sharepointblogs.com/kwanl/archive/2007/03/22/asp-net-v1-1-and-v2-0-side-by-side.aspx</id><published>2007-03-22T06:14:00Z</published><updated>2007-03-22T06:14:00Z</updated><content type="html">&lt;p&gt;You can have ASP.Net web applications running different versions of the .Net framework running in IIS. The restriction is that a single &amp;nbsp;process can not load both v1.1 and v2.0, that is, within an application pool all the web applications must use the same .Net framework version.&lt;/p&gt;  &lt;p&gt;To change the target ASP.Net version of a web application, right click on the web application&amp;#39;s folder in IIS and select properties, ASP.Net tab.&lt;/p&gt;&lt;img src="http://www.sharepointblogs.com/aggbug.aspx?PostID=21735" width="1" height="1" alt="" /&gt;
			&lt;hr&gt;&lt;span style="font-size:10pt;"&gt;Posted on &lt;a href="http://www.sharepointblogs.com/"&gt;SharePoint Blogs&lt;/a&gt;&lt;/span&gt;
		  &lt;img src="http://www.sharepointblogs.com/aggbug.aspx?PostID=1227" width="1" height="1"&gt;</content><author><name>kwanl</name><uri>http://www.sharepointblogs.com/members/kwanl.aspx</uri></author></entry><entry><title>Detecting design mode with JavaScript</title><link rel="alternate" type="text/html" href="http://www.sharepointblogs.com/kwanl/archive/2007/03/08/detecting-design-mode-with-javascript.aspx" /><id>http://www.sharepointblogs.com/kwanl/archive/2007/03/08/detecting-design-mode-with-javascript.aspx</id><published>2007-03-08T20:18:00Z</published><updated>2007-03-08T20:18:00Z</updated><content type="html">&lt;p&gt;There are times when you want your Javascript&amp;nbsp;to have different behaviour depending on which mode the page is in. For example, in design mode, you may want to turn off some functionality&amp;nbsp; or create a &amp;quot;preview&amp;quot; feature where some visual cues are provided.&lt;/p&gt;  &lt;p&gt;Here&amp;#39;s a little Javascript function to detect whether or not the web part page is in design mode. The script checks the value of two hidden fields set by SharePoint. &lt;/p&gt;  &lt;p&gt;function IsInDesignMode()&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp; if(document.getElementById(&amp;quot;MSOLayout_InDesignMode&amp;quot;).value == &amp;#39;1&amp;#39;) return true;&lt;br /&gt;&amp;nbsp;&amp;nbsp; if(document.getElementById(&amp;quot;MSOTlPn_SelectedWpId&amp;quot;).value != &amp;quot;&amp;quot;) return true;&lt;br /&gt;&amp;nbsp;&amp;nbsp; return false;&lt;br /&gt;}&lt;/p&gt;&lt;img src="http://www.sharepointblogs.com/aggbug.aspx?PostID=20659" width="1" height="1" alt="" /&gt;
			&lt;hr&gt;&lt;span style="font-size:10pt;"&gt;Posted on &lt;a href="http://www.sharepointblogs.com/"&gt;SharePoint Blogs&lt;/a&gt;&lt;/span&gt;
		  &lt;img src="http://www.sharepointblogs.com/aggbug.aspx?PostID=1228" width="1" height="1"&gt;</content><author><name>kwanl</name><uri>http://www.sharepointblogs.com/members/kwanl.aspx</uri></author></entry><entry><title>Adjusting IFrame to fit content</title><link rel="alternate" type="text/html" href="http://www.sharepointblogs.com/kwanl/archive/2007/03/08/adjusting-iframe-to-fit-content.aspx" /><id>http://www.sharepointblogs.com/kwanl/archive/2007/03/08/adjusting-iframe-to-fit-content.aspx</id><published>2007-03-08T19:44:00Z</published><updated>2007-03-08T19:44:00Z</updated><content type="html">&lt;p&gt;On a recent project, we wanted to display content from another server in an IFrame. However, we wanted the content to seem &amp;quot;seamless&amp;quot; and not have any vertical scrollbars appear. I managed to get some Javascript to get the job done in a simple scenario but fails in the more compliated scenario we were dealing with. &lt;/p&gt;  &lt;p&gt;The problem was that for the script to work, both servers must be in the same domain. The typical way you would do this is to have both web pages set their &lt;strong&gt;document.domain&lt;/strong&gt; property to&amp;nbsp;the same&amp;nbsp;the parent domain. However, as I described in another post, this breaks the SharePoint dropdown menus. Our workaround was to make the height configurable, not an entirely satisfactiory solution but still not a show-stopper.&lt;/p&gt;  &lt;p&gt;I will check if this problem has been corrected in V3.&lt;/p&gt;  &lt;p&gt;Here&amp;#39;s a similiar piece of work I found on another blog.&lt;br /&gt;&lt;a class="" href="http://blogs.tamtam.nl/mart/CommentView,guid,0305b638-8ecf-4d82-9fd0-13ebfc8f6f69.aspx#commentstart"&gt;SharePoint Page Viewer: automatically adjust iFrame height&lt;/a&gt;&lt;/p&gt;&lt;img src="http://www.sharepointblogs.com/aggbug.aspx?PostID=20653" width="1" height="1" alt="" /&gt;
			&lt;hr&gt;&lt;span style="font-size:10pt;"&gt;Posted on &lt;a href="http://www.sharepointblogs.com/"&gt;SharePoint Blogs&lt;/a&gt;&lt;/span&gt;
		  &lt;img src="http://www.sharepointblogs.com/aggbug.aspx?PostID=1229" width="1" height="1"&gt;</content><author><name>kwanl</name><uri>http://www.sharepointblogs.com/members/kwanl.aspx</uri></author></entry><entry><title>Using document.domain breaks SharePoint's menus</title><link rel="alternate" type="text/html" href="http://www.sharepointblogs.com/kwanl/archive/2007/02/09/using-document-domain-breaks-sharepoint-s-menus.aspx" /><id>http://www.sharepointblogs.com/kwanl/archive/2007/02/09/using-document-domain-breaks-sharepoint-s-menus.aspx</id><published>2007-02-09T23:41:00Z</published><updated>2007-02-09T23:41:00Z</updated><content type="html">&lt;p&gt;If you have some script in your web part page that sets the &lt;strong&gt;document.domain&lt;/strong&gt; to a parent domain you will find that the SharePoint menus (Modify Shared Page, web part menus) &amp;nbsp;inexplicably stop working.&lt;/p&gt;  &lt;p&gt;I thought you may be able to get it to work by resetting the &lt;strong&gt;document.domain&lt;/strong&gt; to the original value but this is not allowed. Although, doing this anyways gets the menus to work again but I noticed other scripts stopped working.&lt;/p&gt;&lt;img src="http://www.sharepointblogs.com/aggbug.aspx?PostID=19207" width="1" height="1" alt="" /&gt;
			&lt;hr&gt;&lt;span style="font-size:10pt;"&gt;Posted on &lt;a href="http://www.sharepointblogs.com/"&gt;SharePoint Blogs&lt;/a&gt;&lt;/span&gt;
		  &lt;img src="http://www.sharepointblogs.com/aggbug.aspx?PostID=1230" width="1" height="1"&gt;</content><author><name>kwanl</name><uri>http://www.sharepointblogs.com/members/kwanl.aspx</uri></author></entry><entry><title>Double-hop: ASP.Net developers beware</title><link rel="alternate" type="text/html" href="http://www.sharepointblogs.com/kwanl/archive/2007/01/23/double-hop-asp-net-developers-beware.aspx" /><id>http://www.sharepointblogs.com/kwanl/archive/2007/01/23/double-hop-asp-net-developers-beware.aspx</id><published>2007-01-23T22:31:00Z</published><updated>2007-01-23T22:31:00Z</updated><content type="html">&lt;p&gt;I&amp;#39;ve been doing web development on ASP.Net for some time now (3 years) and have only really recently run into this issue of a &amp;quot;double-hop&amp;quot;. A double-hop occurs when you are using Windows Integrated Authentication and make a call that needs credentials on another server.&lt;/p&gt;  &lt;p&gt;The first hop is between the client and the first server which is most likely IIS. If you have a web application (or web part) on that first IIS server that needs to call web service on another server that needs credentials, unless you configure kerberos for constrained delegation, it will fail.&lt;/p&gt;  &lt;p&gt;The problem is that your credentials can&amp;#39;t be passed on the the second server because with Windows Authentication your password is never sent to the first server (only a hash of it is). &lt;/p&gt;  &lt;p&gt;I ran into this problem while working on a Reporting Services 2005 (SSRS) web part which calls the SSRS web services. There are several solutions I&amp;#39;ve read about:&lt;br /&gt;&lt;br /&gt;1. Use basic authentication (with SSL of course)&lt;br /&gt;2. Use kerberos with constrained configuration (haven&amp;#39;t had success with this)&lt;br /&gt;3. Get rid of the double hop by having the client connect to the second server directly using client-side code (JavaScript, HTML, etc).&lt;/p&gt;  &lt;p&gt;This issue has been tricky to deal with because we originally didn&amp;#39;t plan for it. The current solution is to do #3 which means quite a bit more JavaScript than we were expecting.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Related articles/posts:&lt;/strong&gt;&lt;br /&gt;&lt;a href="http://blogs.sqlxml.org/bryantlikes/archive/2004/02/17/369.aspx"&gt;Bryant Like&amp;#39;s Blog: Web Parts and Web Services&lt;/a&gt;&lt;br /&gt;&lt;a href="http://technet2.microsoft.com/WindowsServer/en/library/c312ba01-318f-46ca-990e-a597f3c294eb1033.mspx?mfr=true"&gt;Kerberos Constrained Delegation&lt;/a&gt;&lt;/p&gt;&lt;img src="http://www.sharepointblogs.com/aggbug.aspx?PostID=18168" width="1" height="1" alt="" /&gt;
			&lt;hr&gt;&lt;span style="font-size:10pt;"&gt;Posted on &lt;a href="http://www.sharepointblogs.com/"&gt;SharePoint Blogs&lt;/a&gt;&lt;/span&gt;
		  &lt;img src="http://www.sharepointblogs.com/aggbug.aspx?PostID=1223" width="1" height="1"&gt;</content><author><name>kwanl</name><uri>http://www.sharepointblogs.com/members/kwanl.aspx</uri></author></entry><entry><title>FormDigest Extender</title><link rel="alternate" type="text/html" href="http://www.sharepointblogs.com/kwanl/archive/2006/08/31/formdigest-extender.aspx" /><id>http://www.sharepointblogs.com/kwanl/archive/2006/08/31/formdigest-extender.aspx</id><published>2006-09-01T01:48:00Z</published><updated>2006-09-01T01:48:00Z</updated><content type="html">&lt;p&gt;Recently, I have been working on a SharePoint-based web app that uses some Ajax to reduce the number of postbacks. Because it might be a long time before the user triggers another postback the page&amp;#39;s security validation&amp;nbsp;can potentially timeout; giving the user a&amp;nbsp;frightening error page.&lt;/p&gt;  &lt;p&gt;As one possible solution, I whipped together a little web part (really the Content Editor + some Javascript) to obtain a new&amp;nbsp;form digest value and shim it into the current page. &lt;/p&gt;  &lt;p&gt;While this works fairly well there is room for improvement. &lt;/p&gt;  &lt;p&gt;First, it makes a request to the current page which can cause problems or at the very least it&amp;#39;s a waste of bandwidth. A possible fix for this would be to create a very small stub page to call instead for updating the security validation. &lt;/p&gt;  &lt;p&gt;Second, you must remember the purpose of the security validation. It&amp;#39;s for security! You shouldn&amp;#39;t be infinitely extending the security validation of the page without good reason. So it is best to only extend it based on some user action.&lt;/p&gt;  &lt;p&gt;The example is contained in teh attached &lt;em&gt;dwp&lt;/em&gt; (remove the .txt from the filename).&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#ff0000"&gt;Warning&lt;/font&gt;:&lt;/strong&gt; Use the &lt;strong&gt;FormDigest Extender&lt;/strong&gt; at your own risk. &lt;/p&gt;&lt;img src="http://www.sharepointblogs.com/aggbug.aspx?PostID=11767" width="1" height="1" alt="" /&gt;
			&lt;hr&gt;&lt;span style="font-size:10pt;"&gt;Posted on &lt;a href="http://www.sharepointblogs.com/"&gt;SharePoint Blogs&lt;/a&gt;&lt;/span&gt;
		  &lt;img src="http://www.sharepointblogs.com/aggbug.aspx?PostID=1231" width="1" height="1"&gt;</content><author><name>kwanl</name><uri>http://www.sharepointblogs.com/members/kwanl.aspx</uri></author></entry><entry><title>Using custom web part properties with WPSC</title><link rel="alternate" type="text/html" href="http://www.sharepointblogs.com/kwanl/archive/2006/07/27/using-custom-web-part-properties-with-wpsc.aspx" /><id>http://www.sharepointblogs.com/kwanl/archive/2006/07/27/using-custom-web-part-properties-with-wpsc.aspx</id><published>2006-07-27T22:25:00Z</published><updated>2006-07-27T22:25:00Z</updated><content type="html">&lt;p&gt;&lt;font face="Arial"&gt;Web Part Page Services Component (WPSC) is a feature of SharePoint that lets you interact with your web parts through client-side script.&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Arial"&gt;While working on a recent web part, I wanted to access the a custom property using WPSC but was getting errors when trying to save it. It turned out that the problem was that my custom properties weren&amp;#39;t being serialized to Xml because it was the holding the default value after being initialized.&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Arial"&gt;From the 2003 SDK:&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;[...] do not use the &lt;b class="bterm"&gt;DefaultValue&lt;/b&gt; attribute if you want properties to be accessible through the Web Part Page Services Component (WPSC). If it exists and a property is set to the default, the property won’t appear in the WPSC Properties collection. In this case, provide a &lt;b class="bterm"&gt;ShouldSerialize&lt;i&gt;XXX&lt;/i&gt;&lt;/b&gt; method for your property.&lt;/p&gt;    &lt;p&gt;&lt;font face="Arial"&gt;If you have both &lt;b&gt;DefaultValue&lt;/b&gt; attribute and define a &lt;b&gt;ShouldSerializeXXX&lt;/b&gt; method, the &lt;b&gt;DefaultValue&lt;/b&gt; attribute&amp;#39;s effect overrides the &lt;b&gt;ShouldSerialeXXX&lt;/b&gt; method.&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Arial"&gt;There are a lot of interesting things you can do if you can&amp;nbsp;access your web part through client-side script. And SharePoint provides an infrastructure for this but I haven&amp;#39;t seen many web parts that take advantage of it. Think AJAX.&lt;/font&gt;&lt;/p&gt;&lt;img src="http://www.sharepointblogs.com/aggbug.aspx?PostID=9528" width="1" height="1" alt="" /&gt;
			&lt;hr&gt;&lt;span style="font-size:10pt;"&gt;Posted on &lt;a href="http://www.sharepointblogs.com/"&gt;SharePoint Blogs&lt;/a&gt;&lt;/span&gt;
		  &lt;img src="http://www.sharepointblogs.com/aggbug.aspx?PostID=1232" width="1" height="1"&gt;</content><author><name>kwanl</name><uri>http://www.sharepointblogs.com/members/kwanl.aspx</uri></author></entry><entry><title>Don't trust SharePoint error messages</title><link rel="alternate" type="text/html" href="http://www.sharepointblogs.com/kwanl/archive/2006/07/06/don-t-trust-sharepoint-error-messages.aspx" /><id>http://www.sharepointblogs.com/kwanl/archive/2006/07/06/don-t-trust-sharepoint-error-messages.aspx</id><published>2006-07-06T23:20:00Z</published><updated>2006-07-06T23:20:00Z</updated><content type="html">&lt;p&gt;Recently we&amp;#39;ve been trying to automate the provisioning of web part pages that require many customized web parts. Because of design issues we decided to do this from a ASPX page in the &lt;em&gt;_layouts&lt;/em&gt; folder. &lt;/p&gt;  &lt;p&gt;Things we going smoothly until we started getting the dreaded &amp;quot;not registered as safe&amp;quot; errors when trying to add our web parts.&amp;nbsp;That was not the case because the web parts were installed and running. Through some experimentation, we discovered that it worked if the web parts were in the GAC. Combining the confusing error message and this new information would lead you to believe that you&amp;#39;re dealing with a security issue. That is not the case.&lt;/p&gt;  &lt;p&gt;The real problem was that the web part assemblies could not be located by the ASPX page in &lt;em&gt;_layouts&lt;/em&gt;. So it was really an assembling binding error. &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Solution&lt;/strong&gt;: Use a web service to add the web parts to the web part page.&lt;/p&gt;  &lt;p&gt;Daniel Larson ran into&amp;nbsp;a similar problem:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.portalbuilder.org/sites/daniellarson/blog/Log/DisplayLog.aspx?ID=30"&gt;http://www.portalbuilder.org/sites/daniellarson/blog/Log/DisplayLog.aspx?ID=30&lt;/a&gt;&lt;/p&gt;&lt;img src="http://www.sharepointblogs.com/aggbug.aspx?PostID=8925" width="1" height="1" alt="" /&gt;
			&lt;hr&gt;&lt;span style="font-size:10pt;"&gt;Posted on &lt;a href="http://www.sharepointblogs.com/"&gt;SharePoint Blogs&lt;/a&gt;&lt;/span&gt;
		  &lt;img src="http://www.sharepointblogs.com/aggbug.aspx?PostID=1233" width="1" height="1"&gt;</content><author><name>kwanl</name><uri>http://www.sharepointblogs.com/members/kwanl.aspx</uri></author></entry><entry><title>Automating the "Checklist for Testing SharePoint Web Parts"</title><link rel="alternate" type="text/html" href="http://www.sharepointblogs.com/kwanl/archive/2006/06/05/automating-the-quot-checklist-for-testing-sharepoint-web-parts-quot.aspx" /><id>http://www.sharepointblogs.com/kwanl/archive/2006/06/05/automating-the-quot-checklist-for-testing-sharepoint-web-parts-quot.aspx</id><published>2006-06-05T18:28:00Z</published><updated>2006-06-05T18:28:00Z</updated><content type="html">&lt;p&gt;Recently, I&amp;#39;ve been trying out unit-testing and have seen the benefits. It&amp;#39;s addictive pressing that &amp;quot;Run&amp;quot; button and seeing all your tests pass. Not to mention that&amp;nbsp;seeing your tests fail is a great motivator! &lt;/p&gt;  &lt;p&gt;So with automated testing on my mind, a light bulb went off in mhy head when I came across this MSDN article, &lt;a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/odc_SP2003_ta/html/Office_SharePointWebPartsTestingChecklist.asp"&gt;Checklist for Testing SharePoint Web Parts&lt;/a&gt;, on&amp;nbsp;the various situations that every web part should be tested for before deployment into production. I have made a similiar lists before for my own use and I&amp;#39;m sure that many readers have also.&lt;/p&gt;  &lt;p&gt;The tests require manual testing on the part of the developer, most of which is pretty boring. After browsing the WSS API, I think that it would be possible to automate many of these deployment tests. Granted, it looks like it will be very difficult (and not worth the effort) to test scenarios such as whether or not your web part renders correctly in FrontPage. But even being to automate a few of the tests will save you lots of time if you&amp;#39;re developing more than a couple of web parts.&lt;/p&gt;&lt;img src="http://www.sharepointblogs.com/aggbug.aspx?PostID=8103" width="1" height="1" alt="" /&gt;
			&lt;hr&gt;&lt;span style="font-size:10pt;"&gt;Posted on &lt;a href="http://www.sharepointblogs.com/"&gt;SharePoint Blogs&lt;/a&gt;&lt;/span&gt;
		  &lt;img src="http://www.sharepointblogs.com/aggbug.aspx?PostID=1234" width="1" height="1"&gt;</content><author><name>kwanl</name><uri>http://www.sharepointblogs.com/members/kwanl.aspx</uri></author></entry><entry><title>WPSC and default custom properties values</title><link rel="alternate" type="text/html" href="http://www.sharepointblogs.com/kwanl/archive/2006/06/05/wpsc-and-default-custom-properties-values.aspx" /><id>http://www.sharepointblogs.com/kwanl/archive/2006/06/05/wpsc-and-default-custom-properties-values.aspx</id><published>2006-06-05T18:15:00Z</published><updated>2006-06-05T18:15:00Z</updated><content type="html">&lt;p&gt;I was recently working on a web part that uses the Web Part Page Services Component (&lt;span&gt;&lt;b&gt;WPSC&lt;/b&gt;&lt;/span&gt;) and JavaScript to save updated custom property values when I ran into a rather annoying error. &lt;/p&gt;  &lt;p&gt;I had done everything correctly in defining my custom property and used the correct namespace in the &lt;strong&gt;Properties&lt;/strong&gt; collection of my &lt;strong&gt;Part&lt;/strong&gt; variable. But I still couldn&amp;#39;t get a valid reference to the property in my script. &lt;/p&gt;  &lt;p&gt;It turned out the problem was that my custom property had it&amp;#39;s default value (set to the same as the initial value) and so SharePoint didn&amp;#39;t bother storing it since, &amp;quot;Specifying the default value minimizes the Web Part&amp;#39;s storage requirements by storing the property&amp;#39;s value only if it is different from the default.&amp;quot; (WSS SDK)&lt;/p&gt;  &lt;p&gt;My solution, make the custom property&amp;#39;s initial value differ from the default value so SharePoint has to store the property value.&lt;/p&gt;&lt;img src="http://www.sharepointblogs.com/aggbug.aspx?PostID=8102" width="1" height="1" alt="" /&gt;
			&lt;hr&gt;&lt;span style="font-size:10pt;"&gt;Posted on &lt;a href="http://www.sharepointblogs.com/"&gt;SharePoint Blogs&lt;/a&gt;&lt;/span&gt;
		  &lt;img src="http://www.sharepointblogs.com/aggbug.aspx?PostID=1235" width="1" height="1"&gt;</content><author><name>kwanl</name><uri>http://www.sharepointblogs.com/members/kwanl.aspx</uri></author></entry><entry><title> It's never the users fault</title><link rel="alternate" type="text/html" href="http://www.sharepointblogs.com/kwanl/archive/2005/02/13/it-s-never-the-users-fault.aspx" /><id>http://www.sharepointblogs.com/kwanl/archive/2005/02/13/it-s-never-the-users-fault.aspx</id><published>2005-02-13T22:17:00Z</published><updated>2005-02-13T22:17:00Z</updated><content type="html">&lt;p&gt;I just remembered this quote from an recruitment info session put on by Microsoft. And I think the speaker was right on the money. It&amp;#39;s the application developers&amp;#39; job to make sure ther&amp;#39;s way for the user to screw up. There should be no such thing as &amp;quot;User Error&amp;quot;. So keep that in mind on the next project you&amp;#39;re working on. &lt;/p&gt;  &lt;p&gt;I&amp;#39;m not saying this is easy to do, in fact, it is probably the most difficult part of a software product designed for non-techies. There&amp;#39;s a lot of interesting ideas on usability in software. The key is being able to get into the minds of users. I&amp;#39;m sure we all can think of times when using a piece of software caused some grief. But I won&amp;#39;t name any of them here :) &lt;/p&gt;  &lt;p&gt;Also, remember that the vast majority of the people on this earth are not fluent in C++/Java. So asking them &amp;quot;Do you wish to debug?&amp;quot; (ala Internet Explorer) or telling them &amp;quot;Error 0xFF32898&amp;quot; is pretty useless. Make software for normal people. Remember, Windows 3.1 sold more copies in a matter of months than *nix did in its entire existence because Windows 3.1 was designed for the masses. &lt;/p&gt;&lt;img src="http://www.sharepointblogs.com/aggbug.aspx?PostID=1303" width="1" height="1" alt="" /&gt;
			&lt;hr&gt;&lt;span style="font-size:10pt;"&gt;Posted on &lt;a href="http://www.sharepointblogs.com/"&gt;SharePoint Blogs&lt;/a&gt;&lt;/span&gt;
		  &lt;img src="http://www.sharepointblogs.com/aggbug.aspx?PostID=1236" width="1" height="1"&gt;</content><author><name>kwanl</name><uri>http://www.sharepointblogs.com/members/kwanl.aspx</uri></author></entry></feed>