<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:copyright="http://blogs.law.harvard.edu/tech/rss" xmlns:image="http://purl.org/rss/1.0/modules/image/">
    <channel>
        <title>Athens's Id</title>
        <link>http://geekswithblogs.net/aspringer/Default.aspx</link>
        <description>Permanent Resident of the Blue Nowhere</description>
        <language>en-US</language>
        <copyright>Athenz</copyright>
        <managingEditor>aspringer@agiletek.com</managingEditor>
        <generator>Subtext Version 0.0.0.0</generator>
        <image>
            <title>Athens's Id</title>
            <url>http://geekswithblogs.net/images/RSS2Image.gif</url>
            <link>http://geekswithblogs.net/aspringer/Default.aspx</link>
            <width>77</width>
            <height>60</height>
        </image>
        <item>
            <title>XDocument Extension</title>
            <category>LINQ</category>
            <link>http://geekswithblogs.net/aspringer/archive/2009/07/01/xdocument-extension.aspx</link>
            <description>&lt;p&gt;&lt;font color="#0000ff"&gt;public&lt;/font&gt; &lt;font color="#0000ff"&gt;static&lt;/font&gt; &lt;font color="#0000ff"&gt;class&lt;/font&gt; &lt;font color="#2b91af"&gt;XDocumentExtensions&lt;/font&gt; &lt;/p&gt;
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;&lt;font color="#808080"&gt;///&lt;/font&gt;&lt;font color="#008000"&gt; &lt;/font&gt;&lt;font color="#808080"&gt;&amp;lt;summary&amp;gt;&lt;/font&gt; &lt;/p&gt;
&lt;p&gt;&lt;font color="#808080"&gt;///&lt;/font&gt;&lt;font color="#008000"&gt; Saves the contents of an XDocument object into a XmlDocument object&lt;/font&gt; &lt;/p&gt;
&lt;p&gt;&lt;font color="#808080"&gt;///&lt;/font&gt;&lt;font color="#008000"&gt; &lt;/font&gt;&lt;font color="#808080"&gt;&amp;lt;/summary&amp;gt;&lt;/font&gt; &lt;/p&gt;
&lt;p&gt;&lt;font color="#808080"&gt;///&lt;/font&gt;&lt;font color="#008000"&gt; &lt;/font&gt;&lt;font color="#808080"&gt;&amp;lt;param name="xDocument"&amp;gt;&lt;/font&gt;&lt;font color="#008000"&gt;Source document&lt;/font&gt;&lt;font color="#808080"&gt;&amp;lt;/param&amp;gt;&lt;/font&gt; &lt;/p&gt;
&lt;p&gt;&lt;font color="#808080"&gt;///&lt;/font&gt;&lt;font color="#008000"&gt; &lt;/font&gt;&lt;font color="#808080"&gt;&amp;lt;returns&amp;gt;&lt;/font&gt;&lt;font color="#008000"&gt;Destination document&lt;/font&gt;&lt;font color="#808080"&gt;&amp;lt;/returns&amp;gt;&lt;/font&gt; &lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;public&lt;/font&gt; &lt;font color="#0000ff"&gt;static&lt;/font&gt; &lt;font color="#2b91af"&gt;XmlDocument&lt;/font&gt; GetXmlDocument(&lt;font color="#0000ff"&gt;this&lt;/font&gt; &lt;font color="#2b91af"&gt;XDocument&lt;/font&gt; xDocument)&lt;/p&gt;
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;&lt;font color="#2b91af"&gt;XmlDocument&lt;/font&gt; xmlDocument = &lt;font color="#0000ff"&gt;new&lt;/font&gt; &lt;font color="#2b91af"&gt;XmlDocument&lt;/font&gt;();&lt;/p&gt;
&lt;p&gt;xmlDocument.Load(xDocument.CreateReader());&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;return&lt;/font&gt; xmlDocument;&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=133202"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=133202" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/aspringer/aggbug/133202.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Athenz</dc:creator>
            <guid>http://geekswithblogs.net/aspringer/archive/2009/07/01/xdocument-extension.aspx</guid>
            <pubDate>Wed, 01 Jul 2009 22:38:02 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/aspringer/comments/133202.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/aspringer/archive/2009/07/01/xdocument-extension.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/aspringer/comments/commentRss/133202.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/aspringer/services/trackbacks/133202.aspx</trackback:ping>
        </item>
        <item>
            <title>Extensions to the OpenXml SDK - Document</title>
            <category>OpenXML</category>
            <link>http://geekswithblogs.net/aspringer/archive/2009/07/01/extensions-to-the-openxml-sdk---document.aspx</link>
            <description>&lt;p&gt;&lt;font color="#0000ff"&gt;using&lt;/font&gt; System;&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;using&lt;/font&gt; System.Collections.Generic;&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;using&lt;/font&gt; System.IO;&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;using&lt;/font&gt; System.Linq;&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;using&lt;/font&gt; System.Linq.Expressions;&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;using&lt;/font&gt; System.Xml;&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;using&lt;/font&gt; System.Xml.Linq;&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;using&lt;/font&gt; DocumentFormat.OpenXml;&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;using&lt;/font&gt; DocumentFormat.OpenXml.Packaging;&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;using&lt;/font&gt; System.Text;&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;using&lt;/font&gt; System.IO.Packaging;&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;using&lt;/font&gt; DocumentFormat.OpenXml.Wordprocessing;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;&lt;font color="#808080"&gt;///&lt;/font&gt;&lt;font color="#008000"&gt; &lt;/font&gt;&lt;font color="#808080"&gt;&amp;lt;summary&amp;gt;&lt;/font&gt; &lt;/p&gt;
&lt;p&gt;&lt;font color="#808080"&gt;///&lt;/font&gt;&lt;font color="#008000"&gt; DocumentExtensions contains functions to manage the creation, reading and writing of XDocument objects&lt;/font&gt; &lt;/p&gt;
&lt;p&gt;&lt;font color="#808080"&gt;///&lt;/font&gt;&lt;font color="#008000"&gt; that come from an OpenXmlPackage&lt;/font&gt; &lt;/p&gt;
&lt;p&gt;&lt;font color="#808080"&gt;///&lt;/font&gt;&lt;font color="#008000"&gt; &lt;/font&gt;&lt;font color="#808080"&gt;&amp;lt;/summary&amp;gt;&lt;/font&gt; &lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;public&lt;/font&gt; &lt;font color="#0000ff"&gt;static&lt;/font&gt; &lt;font color="#0000ff"&gt;class&lt;/font&gt; &lt;font color="#2b91af"&gt;DocumentExtensions&lt;/font&gt; &lt;/p&gt;
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;public&lt;/font&gt; &lt;font color="#0000ff"&gt;static&lt;/font&gt; &lt;font color="#0000ff"&gt;void&lt;/font&gt; RemovePageBreaks(&lt;font color="#0000ff"&gt;this&lt;/font&gt; &lt;font color="#2b91af"&gt;Document&lt;/font&gt; document)&lt;/p&gt;
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;&lt;font color="#2b91af"&gt;List&lt;/font&gt;&amp;lt;&lt;font color="#2b91af"&gt;Break&lt;/font&gt;&amp;gt; breaks = document.Descendants&amp;lt;&lt;font color="#2b91af"&gt;Break&lt;/font&gt;&amp;gt;().ToList();&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;foreach&lt;/font&gt; (&lt;font color="#2b91af"&gt;Break&lt;/font&gt; b &lt;font color="#0000ff"&gt;in&lt;/font&gt; breaks)&lt;/p&gt;
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;b.Remove();&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;document.Save();&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;public&lt;/font&gt; &lt;font color="#0000ff"&gt;static&lt;/font&gt; &lt;font color="#0000ff"&gt;void&lt;/font&gt; RemoveSectionBreaks(&lt;font color="#0000ff"&gt;this&lt;/font&gt; &lt;font color="#2b91af"&gt;Document&lt;/font&gt; document)&lt;/p&gt;
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;&lt;font color="#2b91af"&gt;List&lt;/font&gt;&amp;lt;&lt;font color="#2b91af"&gt;ParagraphProperties&lt;/font&gt;&amp;gt; paraProps = document.Descendants&amp;lt;&lt;font color="#2b91af"&gt;ParagraphProperties&lt;/font&gt;&amp;gt;()&lt;/p&gt;
&lt;p&gt;.Where(pPr =&amp;gt; &lt;font color="#2b91af"&gt;ParagraphPropertiesExtensions&lt;/font&gt;.IsSectionProps(pPr)).ToList();&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;foreach&lt;/font&gt; (&lt;font color="#2b91af"&gt;ParagraphProperties&lt;/font&gt; pPr &lt;font color="#0000ff"&gt;in&lt;/font&gt; paraProps)&lt;/p&gt;
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;pPr.RemoveChild&amp;lt;&lt;font color="#2b91af"&gt;SectionProperties&lt;/font&gt;&amp;gt;(pPr.GetFirstChild&amp;lt;&lt;font color="#2b91af"&gt;SectionProperties&lt;/font&gt;&amp;gt;());&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;document.Save();&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=133201"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=133201" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/aspringer/aggbug/133201.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Athenz</dc:creator>
            <guid>http://geekswithblogs.net/aspringer/archive/2009/07/01/extensions-to-the-openxml-sdk---document.aspx</guid>
            <pubDate>Wed, 01 Jul 2009 22:36:13 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/aspringer/comments/133201.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/aspringer/archive/2009/07/01/extensions-to-the-openxml-sdk---document.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/aspringer/comments/commentRss/133201.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/aspringer/services/trackbacks/133201.aspx</trackback:ping>
        </item>
        <item>
            <title>Optimizing Pre-Installed Vista for Multi-Boot</title>
            <category>Vista</category>
            <category>Defrag</category>
            <link>http://geekswithblogs.net/aspringer/archive/2007/10/03/Optimizing-Pre-Installed-Vista-for-Multi-Boot.aspx</link>
            <description>&lt;p&gt;Vista Home Premium sucks, but having preinstalled, and having used it for a couple of weeks before I discovered this I was stuck with a 95GB partition for System and 56GB for Data on my Asus G2S. I looked around a bit and found that you can resize the partition from Disk Management (or DiskPart.exe for you CL fans).  Cool, I was set, ran it with 36GB freespace, and found that I could resize it by 463MB... Surely enough for Damn Small Linux but not quite enough for Vista Ultimate 64-bit. Had to be a fragmentation issue so I ran defrag and got 2GB. Then I deleted or moved around 20GB of various MSDN media and got 6GB. So I went off in search of a better defrag engine... Trying &lt;a target="_blank" href="http://www.auslogics.com/disk-defrag/index.php"&gt;AusLogics Disk Defrag&lt;/a&gt; I got another 5GB for a total of 11GB. I ran AusLogics 4 times in a row and it kept reporting 0.33% fragmentation but I wasn't getting any more space... So I went to the old &lt;a href="http://raxco.com/products/PerfectDisk2k/"&gt;Raxco PerfectDisk&lt;/a&gt; , which happens to have been my personal favorite since they used to have a Turbo option (and they do again too). I did a free space consolidation including a reboot and defrag of system files after having moved the paging file onto another drive. When it rebooted finally after just over 1 hour I ran the shrink again and got 46GB. Good enough! I'm installing VU64 now, after which I will install Windows 2008 server on the remaining Data partition. &lt;/p&gt;
&lt;p&gt;You Rock Raxco!&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=115828"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=115828" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/aspringer/aggbug/115828.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Athenz</dc:creator>
            <guid>http://geekswithblogs.net/aspringer/archive/2007/10/03/Optimizing-Pre-Installed-Vista-for-Multi-Boot.aspx</guid>
            <pubDate>Wed, 03 Oct 2007 20:53:16 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/aspringer/comments/115828.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/aspringer/archive/2007/10/03/Optimizing-Pre-Installed-Vista-for-Multi-Boot.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/aspringer/comments/commentRss/115828.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/aspringer/services/trackbacks/115828.aspx</trackback:ping>
        </item>
        <item>
            <title>Custom WebPart Infrastructure - 3.0</title>
            <category>ASP.NET 2.0</category>
            <category>WebParts</category>
            <link>http://geekswithblogs.net/aspringer/archive/2007/09/26/Custom-WebPart-Infrastructure---3.0.aspx</link>
            <description>Over the next few days I will be posting updated custom webpart code taking full advantage of .NET 3.0&lt;br /&gt;
&lt;br /&gt;
I am very much looking forward to getting this out to you, I have been working on it for some time and it has some pretty interesting stuff... Just a teaser, more later.&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=115645"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=115645" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/aspringer/aggbug/115645.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Athenz</dc:creator>
            <guid>http://geekswithblogs.net/aspringer/archive/2007/09/26/Custom-WebPart-Infrastructure---3.0.aspx</guid>
            <pubDate>Wed, 26 Sep 2007 18:40:18 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/aspringer/comments/115645.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/aspringer/archive/2007/09/26/Custom-WebPart-Infrastructure---3.0.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/aspringer/comments/commentRss/115645.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/aspringer/services/trackbacks/115645.aspx</trackback:ping>
        </item>
        <item>
            <title>Public SR</title>
            <category>ASP.NET 2.0</category>
            <category>WebParts</category>
            <link>http://geekswithblogs.net/aspringer/archive/2007/08/22/Public-SR.aspx</link>
            <description>&lt;p&gt;I have often run into issues with references to the internal class System.Web.SR so I extracted it and corrected the references, then made everything public. It is called PSR and you can find it here: &lt;a href="http://www.athensspringer.com/files/PSR.zip"&gt;PSR.zip&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&lt;em&gt;*NOTE: This has not yet been tested. Several people have expressed interest in it and I wanted to throw it out there ASAP. Let me know how it works out. I will be testing it at the end of the Delete Verb portion of the current project since there are several references to it therein.&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=114894"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=114894" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/aspringer/aggbug/114894.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Athenz</dc:creator>
            <guid>http://geekswithblogs.net/aspringer/archive/2007/08/22/Public-SR.aspx</guid>
            <pubDate>Wed, 22 Aug 2007 17:50:19 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/aspringer/comments/114894.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/aspringer/archive/2007/08/22/Public-SR.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/aspringer/comments/commentRss/114894.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/aspringer/services/trackbacks/114894.aspx</trackback:ping>
        </item>
        <item>
            <title>ASP.NET 2.0 - Custom WebPart Infrastructure - Exposing Delete Verb in Browse View</title>
            <category>ASP.NET 2.0</category>
            <category>WebParts</category>
            <link>http://geekswithblogs.net/aspringer/archive/2007/08/22/ASP.NET-2.0---Custom-WebPart-Infrastructure---Exposing-Delete-Verb.aspx</link>
            <description>&lt;p&gt;Normally I believe that the Delete View is only available within Design View. There are several possible angles that I am pursuing for exposing the delete verb within the Browse View. One thing to note is that no webparts or user controls can be declared within the page code. All must be added from a catalog to the shared view or the delete function is unavailable. I am researching overriding RenderVerbs and RenderVerb within the WebPartChrome to add the Delete Verb despite Browse being the current view. Failing this I intend to take a brief look at writing a custom view to expose Delete natively, this would be nice since I may be able to expose the Move action as well during the default (then Custom) View. I have a couple of other ideas but I want to see how these turn out first. I am working toward the most effecient way to accomplish the task without having to rewrite tons of functionality. It may be as simple as overriding the close action or something of that nature. We shall see.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Of course many will suggest that none of this is the right way to do things since it is not supported by Microsoft but since I have rewritten much of the WebPart functionality already, it may be considerably easier in this case.&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=114891"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=114891" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/aspringer/aggbug/114891.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Athenz</dc:creator>
            <guid>http://geekswithblogs.net/aspringer/archive/2007/08/22/ASP.NET-2.0---Custom-WebPart-Infrastructure---Exposing-Delete-Verb.aspx</guid>
            <pubDate>Wed, 22 Aug 2007 17:12:10 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/aspringer/comments/114891.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/aspringer/archive/2007/08/22/ASP.NET-2.0---Custom-WebPart-Infrastructure---Exposing-Delete-Verb.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/aspringer/comments/commentRss/114891.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/aspringer/services/trackbacks/114891.aspx</trackback:ping>
        </item>
        <item>
            <title>Custom WebPartZone and Custom WebPartChrome</title>
            <category>ASP.NET 2.0</category>
            <category>WebParts</category>
            <link>http://geekswithblogs.net/aspringer/archive/2007/08/21/114858.aspx</link>
            <description>&lt;p&gt;I am including the CustomWebPartZone code as well as the CustomWebPartChrome since it really serves no other purpose than to hijack the call to the standard WebPartChrome and directs the request to CustomWebPartChrome.&lt;/p&gt;
&lt;p&gt;&lt;font size="1"&gt; public class CustomWebPartZone : WebPartZone &lt;br /&gt;
{ &lt;br /&gt;
protected override WebPartChrome CreateWebPartChrome() &lt;br /&gt;
{return new CustomWebPartChrome(this, base.WebPartManager);} &lt;br /&gt;
&lt;br /&gt;
protected override void OnInit ( EventArgs e ) {} &lt;br /&gt;
}&lt;hr /&gt;
public class CustomWebPartChrome : WebPartChrome &lt;br /&gt;
{ &lt;br /&gt;
private WebPartZone thisZone; &lt;br /&gt;
private WebPartManager thisMgr; &lt;br /&gt;
&lt;br /&gt;
public CustomWebPartChrome(WebPartZone zone, WebPartManager mgr) : base(zone, mgr) &lt;br /&gt;
{ &lt;br /&gt;
thisZone = zone; &lt;br /&gt;
thisMgr = mgr; &lt;br /&gt;
} &lt;br /&gt;
&lt;br /&gt;
private double duration; &lt;br /&gt;
protected internal double Duration &lt;br /&gt;
{ &lt;br /&gt;
get { return duration; } &lt;br /&gt;
set { duration = value; } &lt;br /&gt;
} &lt;br /&gt;
&lt;br /&gt;
public override void PerformPreRender() &lt;br /&gt;
{ &lt;br /&gt;
base.PerformPreRender(); &lt;br /&gt;
&lt;br /&gt;
string js = "&amp;lt;script language='javascript'&amp;gt;\n\t" + &lt;br /&gt;
"var titleBar;\n"; &lt;br /&gt;
&lt;br /&gt;
foreach (WebPart webPart in Zone.WebParts) &lt;br /&gt;
{ &lt;br /&gt;
js += ("titleBar = document.getElementById('" + GetWebPartTitleClientID(webPart) + "');\n"); &lt;br /&gt;
js += "titlebar.onmouseover = ShowNote;\n"; &lt;br /&gt;
js += "titlebar.onmouseout = HideNote;\n"; &lt;br /&gt;
} &lt;br /&gt;
&lt;br /&gt;
js += "&amp;lt;/script&amp;gt;"; &lt;br /&gt;
// thisZone.Page.ClientScript.RegisterStartupScript(typeof(CustomWebPartChrome), typeof(CustomWebPartChrome).FullName, js); &lt;br /&gt;
// thisZone.Page.ClientScript.RegisterClientScriptInclude(typeof(CustomWebPartChrome).FullName, "CustomWebPartChrome.js"); &lt;br /&gt;
} &lt;br /&gt;
&lt;br /&gt;
public void renderTitleBar ( HtmlTextWriter writer, WebPart webPart ) &lt;br /&gt;
{ &lt;br /&gt;
writer.AddAttribute ( HtmlTextWriterAttribute.Cellspacing, "0" ); &lt;br /&gt;
writer.AddAttribute ( HtmlTextWriterAttribute.Cellpadding, "0" ); &lt;br /&gt;
writer.AddAttribute ( HtmlTextWriterAttribute.Border, "0" ); &lt;br /&gt;
writer.AddStyleAttribute ( HtmlTextWriterStyle.Width, "100%" ); &lt;br /&gt;
writer.RenderBeginTag ( HtmlTextWriterTag.Table ); &lt;br /&gt;
writer.RenderBeginTag ( HtmlTextWriterTag.Tr ); &lt;br /&gt;
writer.AddAttribute ( HtmlTextWriterAttribute.Alt, "Rendering Verbs" ); &lt;br /&gt;
writer.RenderBeginTag ( HtmlTextWriterTag.Td ); &lt;br /&gt;
typeof ( WebPartChrome ).GetMethod ( "RenderVerbsInTitleBar", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance ).Invoke ( this, new object[] { writer, webPart, 1 } ); &lt;br /&gt;
writer.RenderEndTag (); &lt;br /&gt;
&lt;br /&gt;
writer.AddStyleAttribute ( HtmlTextWriterStyle.Width, "100%" ); &lt;br /&gt;
TableItemStyle partTitleStyle = thisZone.PartTitleStyle; &lt;br /&gt;
writer.AddStyleAttribute ( HtmlTextWriterStyle.WhiteSpace, "nowrap" ); &lt;br /&gt;
writer.AddAttribute ( HtmlTextWriterAttribute.Align, "left"); &lt;br /&gt;
writer.AddAttribute ( HtmlTextWriterAttribute.Valign, "top"); &lt;br /&gt;
writer.AddAttribute ( HtmlTextWriterAttribute.Id, base.GetWebPartTitleClientID ( webPart ) ); &lt;br /&gt;
&lt;br /&gt;
writer.RenderBeginTag ( HtmlTextWriterTag.Td ); &lt;br /&gt;
typeof ( WebPartChrome ).GetMethod ( "RenderTitleText", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance ).Invoke ( this, new object[] { writer, webPart} ); &lt;br /&gt;
writer.RenderEndTag (); &lt;br /&gt;
writer.RenderEndTag (); &lt;br /&gt;
writer.RenderEndTag (); &lt;br /&gt;
} &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
public override void RenderWebPart ( HtmlTextWriter writer, WebPart webPart ) &lt;br /&gt;
{ &lt;br /&gt;
if ( webPart == null ) &lt;br /&gt;
{ &lt;br /&gt;
throw new ArgumentNullException ( "webPart" ); &lt;br /&gt;
} &lt;br /&gt;
bool flag = true; &lt;br /&gt;
PartChromeType chromeType = thisZone.GetEffectiveChromeType ( webPart ); &lt;br /&gt;
&lt;br /&gt;
Style style = base.CreateWebPartChromeStyle ( webPart, chromeType ); &lt;br /&gt;
if ( !style.IsEmpty ) &lt;br /&gt;
{ &lt;br /&gt;
style.AddAttributesToRender ( writer, thisZone ); &lt;br /&gt;
} &lt;br /&gt;
writer.AddAttribute ( HtmlTextWriterAttribute.Cellspacing, "0" ); &lt;br /&gt;
writer.AddAttribute ( HtmlTextWriterAttribute.Cellpadding, "0" ); &lt;br /&gt;
writer.AddAttribute ( HtmlTextWriterAttribute.Border, "0" ); &lt;br /&gt;
writer.AddAttribute ( HtmlTextWriterAttribute.Alt, "Render Web Part" ); &lt;br /&gt;
writer.AddStyleAttribute ( HtmlTextWriterStyle.Width, "100%" ); &lt;br /&gt;
if ( webPart.ChromeState != PartChromeState.Minimized ) &lt;br /&gt;
{ &lt;br /&gt;
writer.AddStyleAttribute ( HtmlTextWriterStyle.Height, "100%" ); &lt;br /&gt;
} &lt;br /&gt;
writer.AddAttribute ( HtmlTextWriterAttribute.Id, base.GetWebPartChromeClientID ( webPart ) ); &lt;br /&gt;
&lt;br /&gt;
if ( ( webPart.Hidden ) &amp;amp;&amp;amp; ( ( thisMgr != null ) &amp;amp;&amp;amp; !thisMgr.DisplayMode.ShowHiddenWebParts ) ) &lt;br /&gt;
{ &lt;br /&gt;
writer.AddStyleAttribute ( HtmlTextWriterStyle.Display, "none" ); &lt;br /&gt;
} &lt;br /&gt;
writer.RenderBeginTag ( HtmlTextWriterTag.Table ); &lt;br /&gt;
writer.RenderBeginTag ( HtmlTextWriterTag.Tr ); &lt;br /&gt;
writer.AddAttribute ( HtmlTextWriterAttribute.Alt, "Rendering Titlebar Cell" ); &lt;br /&gt;
writer.RenderBeginTag ( HtmlTextWriterTag.Td ); &lt;br /&gt;
renderTitleBar ( writer, webPart ); &lt;br /&gt;
writer.RenderEndTag (); &lt;br /&gt;
writer.RenderEndTag (); &lt;br /&gt;
&lt;br /&gt;
if ( webPart.ChromeState == PartChromeState.Minimized ) &lt;br /&gt;
{ &lt;br /&gt;
writer.AddStyleAttribute ( HtmlTextWriterStyle.Display, "none" ); &lt;br /&gt;
} &lt;br /&gt;
writer.RenderBeginTag ( HtmlTextWriterTag.Tr ); &lt;br /&gt;
if ( !flag ) &lt;br /&gt;
{ &lt;br /&gt;
writer.AddStyleAttribute ( HtmlTextWriterStyle.Height, "100%" ); &lt;br /&gt;
writer.AddAttribute ( HtmlTextWriterAttribute.Valign, "top" ); &lt;br /&gt;
} &lt;br /&gt;
Style partStyle = thisZone.PartStyle; &lt;br /&gt;
if ( !partStyle.IsEmpty ) &lt;br /&gt;
{ &lt;br /&gt;
partStyle.AddAttributesToRender ( writer, thisZone ); &lt;br /&gt;
} &lt;br /&gt;
writer.AddStyleAttribute ( HtmlTextWriterStyle.Padding, "0px" ); &lt;br /&gt;
writer.AddAttribute ( HtmlTextWriterAttribute.Alt, "Rendering Part Contents" ); &lt;br /&gt;
writer.RenderBeginTag ( HtmlTextWriterTag.Td ); &lt;br /&gt;
base.RenderPartContents ( writer, webPart ); &lt;br /&gt;
writer.RenderEndTag (); &lt;br /&gt;
writer.RenderEndTag (); &lt;br /&gt;
writer.RenderEndTag (); &lt;br /&gt;
} &lt;br /&gt;
} &lt;br /&gt;
&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=114858"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=114858" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/aspringer/aggbug/114858.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Athenz</dc:creator>
            <guid>http://geekswithblogs.net/aspringer/archive/2007/08/21/114858.aspx</guid>
            <pubDate>Tue, 21 Aug 2007 19:20:28 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/aspringer/comments/114858.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/aspringer/archive/2007/08/21/114858.aspx#feedback</comments>
            <slash:comments>5</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/aspringer/comments/commentRss/114858.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/aspringer/services/trackbacks/114858.aspx</trackback:ping>
        </item>
        <item>
            <title>Custom DeclarativeCatalogPart</title>
            <category>ASP.NET 2.0</category>
            <category>WebParts</category>
            <link>http://geekswithblogs.net/aspringer/archive/2007/08/21/114855.aspx</link>
            <description>&lt;p&gt;&lt;font face="Arial"&gt;This is the source for a recently created custom declarativecatalogpart that filters out webparts that already exist on the page. This prevents duplicate webparts from being added. Otherwise it will run from either a template control list or declared controls. &lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Arial" size="1"&gt;/// &amp;lt;summary&amp;gt;&lt;br /&gt;
 /// A replacement for the declarative catalog part meant for limiting the webparts on a page to a single instance by hiding the webparts that already exist on the page.&lt;br /&gt;
 /// &amp;lt;/summary&amp;gt;&lt;br /&gt;
 [Designer ( "System.Web.UI.Design.WebControls.WebParts.DeclarativeCatalogPartDesigner, System.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" ), AspNetHostingPermission ( SecurityAction.LinkDemand, Level = AspNetHostingPermissionLevel.Minimal ), AspNetHostingPermission ( SecurityAction.InheritanceDemand, Level = AspNetHostingPermissionLevel.Minimal )]&lt;br /&gt;
 public class CustomCatalog : CatalogPart&lt;br /&gt;
 {&lt;br /&gt;
  // Fields&lt;br /&gt;
  private WebPartDescriptionCollection _descriptions;&lt;br /&gt;
  private string _webPartsListUserControlPath;&lt;br /&gt;
  private ITemplate _webPartsTemplate;&lt;br /&gt;
  private Dictionary&amp;lt;string, string&amp;gt; _loadedWebparts;   &lt;br /&gt;
  private Dictionary&amp;lt;string, WebPart&amp;gt; _availableWebparts;   // &amp;lt;WebPartDescription.ID, WebPart&amp;gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Arial" size="1"&gt;  // Methods&lt;br /&gt;
  private void AddControlToDescriptions ( Control control, ArrayList descriptions, Dictionary&amp;lt;string, WebPart&amp;gt; availableWebparts)&lt;br /&gt;
  {&lt;br /&gt;
   WebPart webPart = control as WebPart;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Arial" size="1"&gt;   if ( ( webPart == null ) &amp;amp;&amp;amp; !( control is LiteralControl ))    &lt;br /&gt;
     webPart = base.WebPartManager.CreateWebPart ( control );&lt;/font&gt;&lt;/p&gt;
&lt;font face="Arial"&gt;
&lt;p&gt;&lt;br /&gt;
&lt;font size="1"&gt;   if ( ( webPart != null ) &amp;amp;&amp;amp; ( ( base.WebPartManager == null ) || base.WebPartManager.IsAuthorized ( webPart ) ) )&lt;br /&gt;
   {&lt;br /&gt;
    if ( this._loadedWebparts.Count == 0 || this._loadedWebparts == null )&lt;br /&gt;
    {&lt;br /&gt;
      this.LoadExistingWebParts ();&lt;br /&gt;
    }&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="1"&gt;    WebPartDescription description = new WebPartDescription ( webPart );&lt;br /&gt;
    &lt;br /&gt;
    if ( !( ((Dictionary&amp;lt;string, string&amp;gt;)HttpContext.Current.Session["loadedWebParts"]).ContainsKey ( description.Title ) ))&lt;br /&gt;
    {&lt;br /&gt;
      descriptions.Add ( description );&lt;br /&gt;
    }&lt;br /&gt;
    availableWebparts.Add ( description.ID, webPart );&lt;br /&gt;
   }&lt;br /&gt;
  }&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="1"&gt;  public override WebPartDescriptionCollection GetAvailableWebPartDescriptions ()&lt;br /&gt;
  {&lt;br /&gt;
   if ( this._loadedWebparts == null || this._loadedWebparts.Count == 0 )&lt;br /&gt;
   {&lt;br /&gt;
     this.LoadExistingWebParts ();&lt;br /&gt;
   }&lt;br /&gt;
   if ( this._descriptions == null )         &lt;br /&gt;
    this.LoadAvailableWebParts ();&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="1"&gt;   return this._descriptions;&lt;br /&gt;
  }&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="1"&gt;  public override WebPart GetWebPart ( WebPartDescription description )&lt;br /&gt;
  {&lt;br /&gt;
   if ( description == null )    &lt;br /&gt;
    throw new ArgumentNullException ( "description" );&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;
&lt;font size="1"&gt;   if ( !this.GetAvailableWebPartDescriptions ().Contains ( description ) )&lt;br /&gt;
    throw new ArgumentException ( "CatalogPart_UnknownDescription", "description" );&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;
&lt;font size="1"&gt;   ((Dictionary&amp;lt;string, string&amp;gt;)HttpContext.Current.Session["loadedWebParts"]).Add ( description.Title, description.ID );&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="1"&gt;   &lt;br /&gt;
   return this._availableWebparts[description.ID];&lt;br /&gt;
  }&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;
&lt;font size="1"&gt;  public void LoadExistingWebParts ()&lt;br /&gt;
  {&lt;br /&gt;
   WebPartDescription description = null;&lt;br /&gt;
   if ( HttpContext.Current.Session["loadedWebParts"] != null )&lt;br /&gt;
    this._loadedWebparts = ( Dictionary&amp;lt;string, string&amp;gt; ) HttpContext.Current.Session["loadedWebParts"];&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="1"&gt;   if ( this._loadedWebparts == null || this._loadedWebparts.Count == 0)&lt;br /&gt;
    this._loadedWebparts = new Dictionary&amp;lt;string, string&amp;gt; ();&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="1"&gt;    WebPartCollection webparts = base.WebPartManager.WebParts;&lt;br /&gt;
    foreach ( WebPart webPart in webparts )&lt;br /&gt;
    {&lt;br /&gt;
     description = new WebPartDescription ( webPart );&lt;br /&gt;
     if ( !( this._loadedWebparts.ContainsKey ( description.Title ) ) &amp;amp;&amp;amp; description.Title != "" )&lt;br /&gt;
      this._loadedWebparts.Add ( description.Title, description.ID );&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="1"&gt;    }&lt;br /&gt;
   if(this._loadedWebparts.Count &amp;gt; 0)&lt;br /&gt;
    HttpContext.Current.Session["loadedWebParts"] = this._loadedWebparts;&lt;br /&gt;
  }&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;
&lt;font size="1"&gt;  private void LoadAvailableWebParts ()&lt;br /&gt;
  {&lt;br /&gt;
   ArrayList descriptions = new ArrayList ();&lt;br /&gt;
   Dictionary&amp;lt;string, WebPart&amp;gt; availableWebparts = new Dictionary&amp;lt;string, WebPart&amp;gt; ();&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="1"&gt;   if ( this.WebPartsTemplate != null )&lt;br /&gt;
   {&lt;br /&gt;
    Control container = new CustomNonParentingControl ();&lt;br /&gt;
    this.WebPartsTemplate.InstantiateIn ( container );&lt;br /&gt;
    if ( container.HasControls () )&lt;br /&gt;
    {&lt;br /&gt;
     Control[] array = new Control[container.Controls.Count];&lt;br /&gt;
     container.Controls.CopyTo ( array, 0 );&lt;br /&gt;
     foreach ( Control control2 in array )&lt;br /&gt;
     {&lt;br /&gt;
      this.AddControlToDescriptions ( control2, descriptions, availableWebparts );&lt;br /&gt;
     }&lt;br /&gt;
    }&lt;br /&gt;
   }&lt;br /&gt;
   string webPartsListUserControlPath = this.WebPartsListUserControlPath;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="1"&gt;   if ( !string.IsNullOrEmpty ( webPartsListUserControlPath ) &amp;amp;&amp;amp; !base.DesignMode )&lt;br /&gt;
   {&lt;br /&gt;
    Control control3 = this.Page.LoadControl ( webPartsListUserControlPath );&lt;br /&gt;
    if ( ( control3 != null ) &amp;amp;&amp;amp; control3.HasControls () )&lt;br /&gt;
    {&lt;br /&gt;
     Control[] controlArray2 = new Control[control3.Controls.Count];&lt;br /&gt;
     control3.Controls.CopyTo ( controlArray2, 0 );&lt;br /&gt;
     foreach ( Control control4 in controlArray2 )&lt;br /&gt;
     {&lt;br /&gt;
      this.AddControlToDescriptions ( control4, descriptions, availableWebparts );&lt;br /&gt;
     }&lt;br /&gt;
    }&lt;br /&gt;
   }&lt;br /&gt;
   this._availableWebparts = availableWebparts;&lt;br /&gt;
   this._descriptions = new WebPartDescriptionCollection ( descriptions );&lt;br /&gt;
  }&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;
&lt;font size="1"&gt;  protected override void Render ( HtmlTextWriter writer )&lt;br /&gt;
  {&lt;br /&gt;
  }&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="1"&gt;  #region Properties&lt;br /&gt;
  // Properties&lt;br /&gt;
  [EditorBrowsable ( EditorBrowsableState.Never ), Themeable ( false ), Browsable ( false )]&lt;br /&gt;
  public override string AccessKey&lt;br /&gt;
  {&lt;br /&gt;
   get&lt;br /&gt;
   {&lt;br /&gt;
    return base.AccessKey;&lt;br /&gt;
   }&lt;br /&gt;
   set&lt;br /&gt;
   {&lt;br /&gt;
    base.AccessKey = value;&lt;br /&gt;
   }&lt;br /&gt;
  }&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="1"&gt;  [Themeable ( false ), Browsable ( false ), EditorBrowsable ( EditorBrowsableState.Never )]&lt;br /&gt;
  public override Color BackColor&lt;br /&gt;
  {&lt;br /&gt;
   get&lt;br /&gt;
   {&lt;br /&gt;
    return base.BackColor;&lt;br /&gt;
   }&lt;br /&gt;
   set&lt;br /&gt;
   {&lt;br /&gt;
    base.BackColor = value;&lt;br /&gt;
   }&lt;br /&gt;
  }&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="1"&gt;  [Browsable ( false ), Themeable ( false ), EditorBrowsable ( EditorBrowsableState.Never )]&lt;br /&gt;
  public override string BackImageUrl&lt;br /&gt;
  {&lt;br /&gt;
   get&lt;br /&gt;
   {&lt;br /&gt;
    return base.BackImageUrl;&lt;br /&gt;
   }&lt;br /&gt;
   set&lt;br /&gt;
   {&lt;br /&gt;
    base.BackImageUrl = value;&lt;br /&gt;
   }&lt;br /&gt;
  }&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="1"&gt;  [Browsable ( false ), EditorBrowsable ( EditorBrowsableState.Never ), Themeable ( false )]&lt;br /&gt;
  public override Color BorderColor&lt;br /&gt;
  {&lt;br /&gt;
   get&lt;br /&gt;
   {&lt;br /&gt;
    return base.BorderColor;&lt;br /&gt;
   }&lt;br /&gt;
   set&lt;br /&gt;
   {&lt;br /&gt;
    base.BorderColor = value;&lt;br /&gt;
   }&lt;br /&gt;
  }&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="1"&gt;  [Browsable ( false ), Themeable ( false ), EditorBrowsable ( EditorBrowsableState.Never )]&lt;br /&gt;
  public override BorderStyle BorderStyle&lt;br /&gt;
  {&lt;br /&gt;
   get&lt;br /&gt;
   {&lt;br /&gt;
    return base.BorderStyle;&lt;br /&gt;
   }&lt;br /&gt;
   set&lt;br /&gt;
   {&lt;br /&gt;
    base.BorderStyle = value;&lt;br /&gt;
   }&lt;br /&gt;
  }&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="1"&gt;  [Themeable ( false ), EditorBrowsable ( EditorBrowsableState.Never ), Browsable ( false )]&lt;br /&gt;
  public override Unit BorderWidth&lt;br /&gt;
  {&lt;br /&gt;
   get&lt;br /&gt;
   {&lt;br /&gt;
    return base.BorderWidth;&lt;br /&gt;
   }&lt;br /&gt;
   set&lt;br /&gt;
   {&lt;br /&gt;
    base.BorderWidth = value;&lt;br /&gt;
   }&lt;br /&gt;
  }&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="1"&gt;  [Themeable ( false ), Browsable ( false ), EditorBrowsable ( EditorBrowsableState.Never )]&lt;br /&gt;
  public override string CssClass&lt;br /&gt;
  {&lt;br /&gt;
   get&lt;br /&gt;
   {&lt;br /&gt;
    return base.CssClass;&lt;br /&gt;
   }&lt;br /&gt;
   set&lt;br /&gt;
   {&lt;br /&gt;
    base.CssClass = value;&lt;br /&gt;
   }&lt;br /&gt;
  }&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="1"&gt;  [Themeable ( false ), EditorBrowsable ( EditorBrowsableState.Never ), Browsable ( false )]&lt;br /&gt;
  public override string DefaultButton&lt;br /&gt;
  {&lt;br /&gt;
   get&lt;br /&gt;
   {&lt;br /&gt;
    return base.DefaultButton;&lt;br /&gt;
   }&lt;br /&gt;
   set&lt;br /&gt;
   {&lt;br /&gt;
    base.DefaultButton = value;&lt;br /&gt;
   }&lt;br /&gt;
  }&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="1"&gt;  [EditorBrowsable ( EditorBrowsableState.Never ), Browsable ( false ), Themeable ( false )]&lt;br /&gt;
  public override ContentDirection Direction&lt;br /&gt;
  {&lt;br /&gt;
   get&lt;br /&gt;
   {&lt;br /&gt;
    return base.Direction;&lt;br /&gt;
   }&lt;br /&gt;
   set&lt;br /&gt;
   {&lt;br /&gt;
    base.Direction = value;&lt;br /&gt;
   }&lt;br /&gt;
  }&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="1"&gt;  [EditorBrowsable ( EditorBrowsableState.Never ), Themeable ( false ), Browsable ( false )]&lt;br /&gt;
  public override bool Enabled&lt;br /&gt;
  {&lt;br /&gt;
   get&lt;br /&gt;
   {&lt;br /&gt;
    return base.Enabled;&lt;br /&gt;
   }&lt;br /&gt;
   set&lt;br /&gt;
   {&lt;br /&gt;
    base.Enabled = value;&lt;br /&gt;
   }&lt;br /&gt;
  }&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="1"&gt;  [Browsable ( false ), Themeable ( false ), DefaultValue ( false ), EditorBrowsable ( EditorBrowsableState.Never )]&lt;br /&gt;
  public override bool EnableTheming&lt;br /&gt;
  {&lt;br /&gt;
   get&lt;br /&gt;
   {&lt;br /&gt;
    return false;&lt;br /&gt;
   }&lt;br /&gt;
   set&lt;br /&gt;
   {&lt;br /&gt;
    throw new NotSupportedException ( "Theming Not Supported" );&lt;br /&gt;
   }&lt;br /&gt;
  }&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="1"&gt;  [EditorBrowsable ( EditorBrowsableState.Never ), Themeable ( false ), Browsable ( false )]&lt;br /&gt;
  public override FontInfo Font&lt;br /&gt;
  {&lt;br /&gt;
   get&lt;br /&gt;
   {&lt;br /&gt;
    return base.Font;&lt;br /&gt;
   }&lt;br /&gt;
  }&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="1"&gt;  [EditorBrowsable ( EditorBrowsableState.Never ), Browsable ( false ), Themeable ( false )]&lt;br /&gt;
  public override Color ForeColor&lt;br /&gt;
  {&lt;br /&gt;
   get&lt;br /&gt;
   {&lt;br /&gt;
    return base.ForeColor;&lt;br /&gt;
   }&lt;br /&gt;
   set&lt;br /&gt;
   {&lt;br /&gt;
    base.ForeColor = value;&lt;br /&gt;
   }&lt;br /&gt;
  }&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="1"&gt;  [Browsable ( false ), Themeable ( false ), EditorBrowsable ( EditorBrowsableState.Never )]&lt;br /&gt;
  public override string GroupingText&lt;br /&gt;
  {&lt;br /&gt;
   get&lt;br /&gt;
   {&lt;br /&gt;
    return base.GroupingText;&lt;br /&gt;
   }&lt;br /&gt;
   set&lt;br /&gt;
   {&lt;br /&gt;
    base.GroupingText = value;&lt;br /&gt;
   }&lt;br /&gt;
  }&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="1"&gt;  [Browsable ( false ), Themeable ( false ), EditorBrowsable ( EditorBrowsableState.Never )]&lt;br /&gt;
  public override Unit Height&lt;br /&gt;
  {&lt;br /&gt;
   get&lt;br /&gt;
   {&lt;br /&gt;
    return base.Height;&lt;br /&gt;
   }&lt;br /&gt;
   set&lt;br /&gt;
   {&lt;br /&gt;
    base.Height = value;&lt;br /&gt;
   }&lt;br /&gt;
  }&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="1"&gt;  [Browsable ( false ), EditorBrowsable ( EditorBrowsableState.Never ), Themeable ( false )]&lt;br /&gt;
  public override HorizontalAlign HorizontalAlign&lt;br /&gt;
  {&lt;br /&gt;
   get&lt;br /&gt;
   {&lt;br /&gt;
    return base.HorizontalAlign;&lt;br /&gt;
   }&lt;br /&gt;
   set&lt;br /&gt;
   {&lt;br /&gt;
    base.HorizontalAlign = value;&lt;br /&gt;
   }&lt;br /&gt;
  }&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="1"&gt;  [Browsable ( false ), Themeable ( false ), EditorBrowsable ( EditorBrowsableState.Never )]&lt;br /&gt;
  public override ScrollBars ScrollBars&lt;br /&gt;
  {&lt;br /&gt;
   get&lt;br /&gt;
   {&lt;br /&gt;
    return base.ScrollBars;&lt;br /&gt;
   }&lt;br /&gt;
   set&lt;br /&gt;
   {&lt;br /&gt;
    base.ScrollBars = value;&lt;br /&gt;
   }&lt;br /&gt;
  }&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="1"&gt;  [DefaultValue ( "" ), Themeable ( false ), EditorBrowsable ( EditorBrowsableState.Never ), Browsable ( false )]&lt;br /&gt;
  public override string SkinID&lt;br /&gt;
  {&lt;br /&gt;
   get&lt;br /&gt;
   {&lt;br /&gt;
    return string.Empty;&lt;br /&gt;
   }&lt;br /&gt;
   set&lt;br /&gt;
   {&lt;br /&gt;
    throw new NotSupportedException ( "SkinID Not Supported" );&lt;br /&gt;
   }&lt;br /&gt;
  }&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="1"&gt;  [Browsable ( false ), Themeable ( false ), EditorBrowsable ( EditorBrowsableState.Never )]&lt;br /&gt;
  public override short TabIndex&lt;br /&gt;
  {&lt;br /&gt;
   get&lt;br /&gt;
   {&lt;br /&gt;
    return base.TabIndex;&lt;br /&gt;
   }&lt;br /&gt;
   set&lt;br /&gt;
   {&lt;br /&gt;
    base.TabIndex = value;&lt;br /&gt;
   }&lt;br /&gt;
  }&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="1"&gt;  [DefaultValueAttribute ( "DeclarativeCatalogPart_PartTitle" )]&lt;br /&gt;
  public override string Title&lt;br /&gt;
  {&lt;br /&gt;
   get&lt;br /&gt;
   {&lt;br /&gt;
    string text = ( string ) this.ViewState["Title"];&lt;br /&gt;
    if ( text == null )&lt;br /&gt;
    {&lt;br /&gt;
     return "Unknown";&lt;br /&gt;
    }&lt;br /&gt;
    return text;&lt;br /&gt;
   }&lt;br /&gt;
   set&lt;br /&gt;
   {&lt;br /&gt;
    this.ViewState["Title"] = value;&lt;br /&gt;
   }&lt;br /&gt;
  }&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="1"&gt;  [Browsable ( false ), EditorBrowsable ( EditorBrowsableState.Never ), Themeable ( false )]&lt;br /&gt;
  public override string ToolTip&lt;br /&gt;
  {&lt;br /&gt;
   get&lt;br /&gt;
   {&lt;br /&gt;
    return base.ToolTip;&lt;br /&gt;
   }&lt;br /&gt;
   set&lt;br /&gt;
   {&lt;br /&gt;
    base.ToolTip = value;&lt;br /&gt;
   }&lt;br /&gt;
  }&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="1"&gt;  [EditorBrowsable ( EditorBrowsableState.Never ), Themeable ( false ), Browsable ( false )]&lt;br /&gt;
  public override bool Visible&lt;br /&gt;
  {&lt;br /&gt;
   get&lt;br /&gt;
   {&lt;br /&gt;
    return base.Visible;&lt;br /&gt;
   }&lt;br /&gt;
   set&lt;br /&gt;
   {&lt;br /&gt;
    base.Visible = value;&lt;br /&gt;
   }&lt;br /&gt;
  }&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="1"&gt;  [DefaultValue ( "" ), Editor ( "System.Web.UI.Design.UserControlFileEditor, System.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", typeof ( UITypeEditor ) ), CategoryAttribute ( "Behavior" ), Themeable ( false ), UrlProperty, DescriptionAttribute ( "DeclarativeCatlaogPart_WebPartsListUserControlPath" )]&lt;br /&gt;
  public string WebPartsListUserControlPath&lt;br /&gt;
  {&lt;br /&gt;
   get&lt;br /&gt;
   {&lt;br /&gt;
    if ( this._webPartsListUserControlPath == null )&lt;br /&gt;
    {&lt;br /&gt;
     return string.Empty;&lt;br /&gt;
    }&lt;br /&gt;
    return this._webPartsListUserControlPath;&lt;br /&gt;
   }&lt;br /&gt;
   set&lt;br /&gt;
   {&lt;br /&gt;
    this._webPartsListUserControlPath = value;&lt;br /&gt;
    this._descriptions = null;&lt;br /&gt;
   }&lt;br /&gt;
  }&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="1"&gt;  [TemplateContainer ( typeof ( DeclarativeCatalogPart ) ), Browsable ( false ), DefaultValue ( ( string ) null ), PersistenceMode ( PersistenceMode.InnerProperty )]&lt;br /&gt;
  public ITemplate WebPartsTemplate&lt;br /&gt;
  {&lt;br /&gt;
   get&lt;br /&gt;
   {&lt;br /&gt;
    return this._webPartsTemplate;&lt;br /&gt;
   }&lt;br /&gt;
   set&lt;br /&gt;
   {&lt;br /&gt;
    this._webPartsTemplate = value;&lt;br /&gt;
    this._descriptions = null;&lt;br /&gt;
   }&lt;br /&gt;
  }&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="1"&gt;  [Themeable ( false ), EditorBrowsable ( EditorBrowsableState.Never ), Browsable ( false )]&lt;br /&gt;
  public override Unit Width&lt;br /&gt;
  {&lt;br /&gt;
   get&lt;br /&gt;
   {&lt;br /&gt;
    return base.Width;&lt;br /&gt;
   }&lt;br /&gt;
   set&lt;br /&gt;
   {&lt;br /&gt;
    base.Width = value;&lt;br /&gt;
   }&lt;br /&gt;
  }&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="1"&gt;  [Themeable ( false ), Browsable ( false ), EditorBrowsable ( EditorBrowsableState.Never )]&lt;br /&gt;
  public override bool Wrap&lt;br /&gt;
  {&lt;br /&gt;
   get&lt;br /&gt;
   {&lt;br /&gt;
    return base.Wrap;&lt;br /&gt;
   }&lt;br /&gt;
   set&lt;br /&gt;
   {&lt;br /&gt;
    base.Wrap = value;&lt;br /&gt;
   }&lt;br /&gt;
  }&lt;br /&gt;
  #endregion&lt;br /&gt;
 }&lt;/font&gt;&lt;br /&gt;
&lt;font size="1"&gt; public class CustomNonParentingControl : Control&lt;br /&gt;
 {&lt;br /&gt;
  protected override void AddedControl ( Control control, int index ){}&lt;br /&gt;
  protected override void RemovedControl ( Control control ){}&lt;br /&gt;
 }&lt;/font&gt;&lt;/p&gt;
&lt;/font&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=114855"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=114855" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/aspringer/aggbug/114855.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Athenz</dc:creator>
            <guid>http://geekswithblogs.net/aspringer/archive/2007/08/21/114855.aspx</guid>
            <pubDate>Tue, 21 Aug 2007 18:54:25 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/aspringer/comments/114855.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/aspringer/archive/2007/08/21/114855.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/aspringer/comments/commentRss/114855.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/aspringer/services/trackbacks/114855.aspx</trackback:ping>
        </item>
        <item>
            <title>Custom CatalogZone</title>
            <category>ASP.NET 2.0</category>
            <category>WebParts</category>
            <link>http://geekswithblogs.net/aspringer/archive/2007/08/21/114856.aspx</link>
            <description>&lt;p&gt;Source for a Custom CatalogZone This hijacks the catalogpartchrome and uses a customcatalogpartchrome but has a few other niceties as well.&lt;/p&gt;
&lt;p&gt;&lt;font size="1"&gt;/// &amp;lt;summary&amp;gt; &lt;br /&gt;
/// Summary description for CustomCatalogZone &lt;br /&gt;
/// &amp;lt;/summary&amp;gt; &lt;br /&gt;
public class CustomCatalogZone : CatalogZone &lt;br /&gt;
{ &lt;br /&gt;
// Fields &lt;br /&gt;
private ITemplate _zoneTemplate; &lt;br /&gt;
&lt;br /&gt;
protected override CatalogPartChrome CreateCatalogPartChrome () &lt;br /&gt;
{ &lt;br /&gt;
return new CustomCatalogPartChrome ( this ); &lt;br /&gt;
} &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
protected override void RaisePostBackEvent ( string eventArgument ) &lt;br /&gt;
{ &lt;br /&gt;
string[] textArray = eventArgument.Split ( new char[] { '$' } ); &lt;br /&gt;
if ( ( textArray.Length == 2 ) &amp;amp;&amp;amp; ( textArray[0] == "select" ) ) &lt;br /&gt;
{ &lt;br /&gt;
this.SelectedCatalogPartID = textArray[1]; &lt;br /&gt;
} &lt;br /&gt;
else if ( string.Equals ( eventArgument, "add", StringComparison.OrdinalIgnoreCase ) ) &lt;br /&gt;
{ &lt;br /&gt;
if ( this.AddVerb.Visible &amp;amp;&amp;amp; this.AddVerb.Enabled ) &lt;br /&gt;
{ &lt;br /&gt;
HttpContext.Current.Session["WebPartsAdded"] = true; &lt;br /&gt;
&lt;br /&gt;
typeof ( CatalogZoneBase ).GetMethod ( "AddSelectedWebParts", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance ).Invoke ( this, new object[] { } ); &lt;br /&gt;
&lt;br /&gt;
this.Close (); &lt;br /&gt;
&lt;br /&gt;
} &lt;br /&gt;
} &lt;br /&gt;
else if ( string.Equals ( eventArgument, "close", StringComparison.OrdinalIgnoreCase ) ) &lt;br /&gt;
{ &lt;br /&gt;
if ( this.CloseVerb.Visible &amp;amp;&amp;amp; this.CloseVerb.Enabled ) &lt;br /&gt;
{ &lt;br /&gt;
this.Close (); &lt;br /&gt;
} &lt;br /&gt;
} &lt;br /&gt;
else &lt;br /&gt;
{ &lt;br /&gt;
base.RaisePostBackEvent ( eventArgument ); &lt;br /&gt;
} &lt;br /&gt;
} &lt;br /&gt;
&lt;br /&gt;
protected override void Close () &lt;br /&gt;
{ &lt;br /&gt;
if ( base.WebPartManager != null ) &lt;br /&gt;
{ &lt;br /&gt;
base.WebPartManager.DisplayMode = WebPartManager.BrowseDisplayMode; &lt;br /&gt;
} &lt;br /&gt;
&lt;br /&gt;
// HttpContext.Current.Response.Redirect ( "default.aspx" ); &lt;br /&gt;
&lt;br /&gt;
} &lt;br /&gt;
&lt;br /&gt;
}&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=114856"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=114856" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/aspringer/aggbug/114856.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Athenz</dc:creator>
            <guid>http://geekswithblogs.net/aspringer/archive/2007/08/21/114856.aspx</guid>
            <pubDate>Tue, 21 Aug 2007 18:56:22 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/aspringer/comments/114856.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/aspringer/archive/2007/08/21/114856.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/aspringer/comments/commentRss/114856.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/aspringer/services/trackbacks/114856.aspx</trackback:ping>
        </item>
        <item>
            <title>Custom CatalogPartChrome</title>
            <category>ASP.NET 2.0</category>
            <category>WebParts</category>
            <link>http://geekswithblogs.net/aspringer/archive/2007/08/21/114857.aspx</link>
            <description>&lt;p&gt;Source for CustomCatalogPartChrome referenced from CustomCatalogZone&lt;/p&gt;
&lt;p&gt;&lt;font size="1"&gt; /// &amp;lt;summary&amp;gt; &lt;br /&gt;
/// Summary description for CustomCatalogPartChrome &lt;br /&gt;
/// &amp;lt;/summary&amp;gt; &lt;br /&gt;
public class CustomCatalogPartChrome : CatalogPartChrome &lt;br /&gt;
{ &lt;br /&gt;
private CatalogZone _zone; &lt;br /&gt;
private Page _page; &lt;br /&gt;
&lt;br /&gt;
public CustomCatalogPartChrome (CatalogZone zone):base(zone) &lt;br /&gt;
{ &lt;br /&gt;
&lt;br /&gt;
this._zone = zone; &lt;br /&gt;
this._page = zone.Page; &lt;br /&gt;
} &lt;br /&gt;
&lt;br /&gt;
public override void RenderCatalogPart ( HtmlTextWriter writer, CatalogPart catalogPart ) &lt;br /&gt;
{ &lt;br /&gt;
if ( catalogPart == null ) &lt;br /&gt;
{ &lt;br /&gt;
throw new ArgumentNullException ( "catalogPart" ); &lt;br /&gt;
} &lt;br /&gt;
PartChromeType chromeType = this.Zone.GetEffectiveChromeType ( catalogPart ); &lt;br /&gt;
Style style = base.CreateCatalogPartChromeStyle ( catalogPart, chromeType ); &lt;br /&gt;
if ( !style.IsEmpty ) &lt;br /&gt;
{ &lt;br /&gt;
style.AddAttributesToRender ( writer, this.Zone ); &lt;br /&gt;
} &lt;br /&gt;
writer.AddAttribute ( HtmlTextWriterAttribute.Cellspacing, "0" ); &lt;br /&gt;
writer.AddAttribute ( HtmlTextWriterAttribute.Cellpadding, "0" ); &lt;br /&gt;
writer.AddAttribute ( HtmlTextWriterAttribute.Border, "0" ); &lt;br /&gt;
writer.AddStyleAttribute ( HtmlTextWriterStyle.Width, "100%" ); &lt;br /&gt;
writer.RenderBeginTag ( HtmlTextWriterTag.Table ); &lt;br /&gt;
switch ( chromeType ) &lt;br /&gt;
{ &lt;br /&gt;
case PartChromeType.TitleOnly: &lt;br /&gt;
case PartChromeType.TitleAndBorder: &lt;br /&gt;
{ &lt;br /&gt;
writer.RenderBeginTag ( HtmlTextWriterTag.Tr ); &lt;br /&gt;
Style partTitleStyle = this.Zone.PartTitleStyle; &lt;br /&gt;
if ( !partTitleStyle.IsEmpty ) &lt;br /&gt;
{ &lt;br /&gt;
partTitleStyle.AddAttributesToRender ( writer, this.Zone ); &lt;br /&gt;
} &lt;br /&gt;
writer.RenderBeginTag ( HtmlTextWriterTag.Td ); &lt;br /&gt;
this.RenderTitle ( writer, catalogPart ); &lt;br /&gt;
writer.RenderEndTag (); &lt;br /&gt;
writer.RenderEndTag (); &lt;br /&gt;
break; &lt;br /&gt;
} &lt;br /&gt;
} &lt;br /&gt;
if ( catalogPart.ChromeState != PartChromeState.Minimized ) &lt;br /&gt;
{ &lt;br /&gt;
writer.RenderBeginTag ( HtmlTextWriterTag.Tr ); &lt;br /&gt;
Style partStyle = this.Zone.PartStyle; &lt;br /&gt;
if ( !partStyle.IsEmpty ) &lt;br /&gt;
{ &lt;br /&gt;
partStyle.AddAttributesToRender ( writer, this.Zone ); &lt;br /&gt;
} &lt;br /&gt;
writer.RenderBeginTag ( HtmlTextWriterTag.Td ); &lt;br /&gt;
this.RenderPartContents ( writer, catalogPart ); &lt;br /&gt;
typeof ( CatalogPartChrome ).GetMethod ( "RenderItems", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance ).Invoke ( this, new object[] { writer, catalogPart } ); &lt;br /&gt;
writer.RenderEndTag (); &lt;br /&gt;
writer.RenderEndTag (); &lt;br /&gt;
} &lt;br /&gt;
writer.RenderEndTag (); &lt;br /&gt;
} &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
public void RenderTitle ( HtmlTextWriter writer, CatalogPart catalogPart ) &lt;br /&gt;
{ &lt;br /&gt;
Label label = new Label (); &lt;br /&gt;
label.Text = catalogPart.DisplayTitle; &lt;br /&gt;
label.ToolTip = catalogPart.Description; &lt;br /&gt;
label.Page = this._page; &lt;br /&gt;
label.RenderControl ( writer ); &lt;br /&gt;
} &lt;br /&gt;
}&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=114857"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=114857" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/aspringer/aggbug/114857.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Athenz</dc:creator>
            <guid>http://geekswithblogs.net/aspringer/archive/2007/08/21/114857.aspx</guid>
            <pubDate>Tue, 21 Aug 2007 19:08:09 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/aspringer/comments/114857.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/aspringer/archive/2007/08/21/114857.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/aspringer/comments/commentRss/114857.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/aspringer/services/trackbacks/114857.aspx</trackback:ping>
        </item>
    </channel>
</rss>