<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss'><id>tag:blogger.com,1999:blog-6162232</id><updated>2010-03-10T05:12:58.735-05:00</updated><title type='text'>The dotNET blog</title><subtitle type='html'>Here you will find all articles that i've found interesting about any aspect of the .NET world.</subtitle><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6162232/posts/default'/><link rel='alternate' type='text/html' href='http://www.thedotnetblog.com/default.html'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://www.thedotnetblog.com/atom.xml'/><author><name>Daniel</name><uri>http://www.blogger.com/profile/10286214721217824764</uri><email>noreply@blogger.com</email></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>24</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-6162232.post-4236093616483088011</id><published>2010-01-13T14:29:00.001-05:00</published><updated>2010-01-13T14:45:17.549-05:00</updated><title type='text'>Haiti's earthquake - Fund raising</title><content type='html'>I've been working from projects to projects for the last 2 years with a few breaks, so I didn't had time to keep posting fresh posts about the .NET world.&amp;nbsp; I will try, in 2010, to share with you guys all the things I've learned (and there's a LOT!).&lt;br /&gt;&lt;br /&gt;But for now, I'm taking a few moments to ask for your help.&amp;nbsp; As all of you may know, Haiti was hit by a major earthquake on January 12 2010.&amp;nbsp; Those people really need our help.&amp;nbsp; One of my good friend is from Haiti.&amp;nbsp; He lives in Montreal right now, but his family is still living there. &lt;br /&gt;&lt;br /&gt;After the earhtquake, we tried to get in touch with the family as soon as we learned the news.&amp;nbsp; They finally contact us this morning with fresh news.&amp;nbsp; Thankfully, just a few scratches.&amp;nbsp; But the house is GONE.&lt;br /&gt;&lt;br /&gt;I'm not the Red-Cross or the Salvation Army.&amp;nbsp; But I want to help.&amp;nbsp; I've told my friend that I would do everything in my power to raise some money to help the family rebuild their lifes.&amp;nbsp;This is where you guys can help.&amp;nbsp; Please consider to make a little donation using the&amp;nbsp;link below.&amp;nbsp; If one of my articles was useful to you in any way, please take the time to donate to help those people in needs.&lt;br /&gt;&lt;br /&gt;You can donate any amount you want.&amp;nbsp; I will personnaly send all the money raised to the family directly thru my friend.&lt;br /&gt;&lt;br /&gt;I hope that this message will find his way.&lt;br /&gt;&lt;br /&gt;Thank you for your help.&lt;br /&gt;&lt;br /&gt;&lt;form action="https://www.paypal.com/cgi-bin/webscr" method="post"&gt;&lt;input type="hidden" name="cmd" value="_s-xclick"&gt;&lt;br /&gt;&lt;input type="hidden" name="hosted_button_id" value="11149643"&gt;&lt;br /&gt;&lt;input type="image" src="https://www.paypal.com/en_US/i/btn/btn_donateCC_LG.gif" border="0" name="submit" alt="PayPal - The safer, easier way to pay online!"&gt;&lt;br /&gt;&lt;img alt="" border="0" src="https://www.paypal.com/en_US/i/scr/pixel.gif" width="1" height="1"&gt;&lt;br /&gt;&lt;/form&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6162232-4236093616483088011?l=www.thedotnetblog.com%2Fdefault.html' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/6162232/4236093616483088011/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=6162232&amp;postID=4236093616483088011' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6162232/posts/default/4236093616483088011'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6162232/posts/default/4236093616483088011'/><link rel='alternate' type='text/html' href='http://www.thedotnetblog.com/2010/01/haitis-earthquake-fund-raising.html' title='Haiti&apos;s earthquake - Fund raising'/><author><name>Daniel</name><uri>http://www.blogger.com/profile/10286214721217824764</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='18108903163688288387'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6162232.post-1839260802800307397</id><published>2007-01-04T10:46:00.000-05:00</published><updated>2007-01-04T11:16:49.010-05:00</updated><title type='text'>An Xml-Driven, Self-Caching ASCX MenuStrip Control</title><content type='html'>&lt;i&gt;A great idea from &lt;a href="http://www.eggheadcafe.com/articles/pbrombergresume.asp"&gt;Peter Bromberg&lt;/a&gt;, original article can be found &lt;a href="http://www.eggheadcafe.com/tutorials/aspnet/8c6e8619-1260-47ea-9355-f85da3698fbc/an-xmldriven-selfcachi.aspx"&gt;here&lt;/a&gt;&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;hr&gt;&lt;br /&gt;&lt;P&gt;If you are like me, you are always looking for ways to make your programming life easier - reusable class libraries and controls being a prime target of this effort. One of the things that annoys me about ASP.NET 2.0 is that it offers an ASP.NET menu control, but I just can't bring myself to like it. Sure, it's highly configurable, works with SiteMap xml data, and so on. But, regardless of the amount of tinkering I"ve done, there always seems to be some little annoyance about it's behavior that "gets my goat". &lt;/P&gt;&lt;br /&gt;&lt;P&gt;For the kind of development I do, I rarely need one of those fancy-schmancy multilevel javascript callback xpealidocious bodacious scriptabobulous menu thingies. All I need is what I like to call a "MenuStrip". Its a control that lays out items that link to to where you want to go, and it fits with the CSS and design of your page. I don't need dropdowns because if you click an item, you go to that page where I would have another one of these with page-specific items on it, including a "HOME" item that can take you back to the home page (or to where you came from). You can drag the control into a ContentPlaceholder on your page, set an XML source file for the menu items, and you are done. &lt;/P&gt;&lt;br /&gt;&lt;P&gt;What I"ve done here, since I couldn't find one already done - that I liked, is&amp;nbsp;to create such an animal, with these features:&lt;/P&gt;&lt;br /&gt;&lt;P&gt;1) The CSS to match my page layout is inline in the ASCX page portion of the control. It's not a lot of CSS, so I'd rather have it "keep it's own". If I ever need to change it for another site, that's easy to do.&lt;/P&gt;&lt;br /&gt;&lt;P&gt;2) The control loads the XML to display its contents into a DataSet, and caches it for speed. It also sports a file-based CacheDependency so that if I want to change the items on a particular menu, all I need to do is edit the small Xml File that specifies them. When the file is changed, the Cache Item gets invalidated and the control automatically reloads the modified file, updating my changes instantly.&lt;/P&gt;&lt;br /&gt;&lt;P&gt;3) You can specify the name of the Xml file to use as a property of the control - so each MenuStrip on each page knows exactly which Xml file to use for the items it is supposed to display.&lt;/P&gt;&lt;br /&gt;&lt;P&gt;Here's an example of what one looks like, minus the page, and I also have a separate page where you can look at images of two different versions:&lt;/P&gt;&lt;br /&gt;&lt;P&gt;&lt;IMG height=47 alt="Example ASCX Menustrip Control" src="http://www.eggheadcafe.com/articles/menustrip3.jpg" width=640&gt;&lt;/P&gt;&lt;br /&gt;&lt;P&gt;Here's a&lt;A href="http://www.eggheadcafe.com/articles/Menustrip.htm" target=_blank&gt; link to the bigger pictures&lt;/A&gt;. &lt;/P&gt;&lt;br /&gt;&lt;P&gt;When you download this solution, I'm going to include a MasterPage and two Default pages with two different versions of the control on them, so everything will integrate nicely in a nice site layout. The original CSS Layout came from a free template for SNews, a PHP CMS application; I've converted it to a nice MasterPage.&lt;/P&gt;&lt;br /&gt;&lt;P&gt;Now let's look at the code for the ASCX codebehind:&lt;/P&gt;&lt;br /&gt;&lt;br /&gt;&lt;DIV style="FONT-SIZE: 10pt; BACKGROUND: white; COLOR: black; FONT-FAMILY: Courier New"&gt;&lt;br /&gt;&lt;SPAN style="COLOR: #2b91af"&gt;&amp;nbsp;1&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;using&lt;/SPAN&gt; System;&lt;br /&gt;&lt;SPAN style="COLOR: #2b91af"&gt;&amp;nbsp;2&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;using&lt;/SPAN&gt; System.Data;&lt;br /&gt;&lt;SPAN style="COLOR: #2b91af"&gt;&amp;nbsp;3&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;using&lt;/SPAN&gt; System.Configuration;&lt;br /&gt;&lt;SPAN style="COLOR: #2b91af"&gt;&amp;nbsp;4&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;using&lt;/SPAN&gt; System.Collections;&lt;br /&gt;&lt;SPAN style="COLOR: #2b91af"&gt;&amp;nbsp;5&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;using&lt;/SPAN&gt; System.Web;&lt;br /&gt;&lt;SPAN style="COLOR: #2b91af"&gt;&amp;nbsp;6&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;using&lt;/SPAN&gt; System.Web.Security;&lt;br /&gt;&lt;SPAN style="COLOR: #2b91af"&gt;&amp;nbsp;7&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;using&lt;/SPAN&gt; System.Web.UI;&lt;br /&gt;&lt;SPAN style="COLOR: #2b91af"&gt;&amp;nbsp;8&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;using&lt;/SPAN&gt; System.Web.UI.WebControls;&lt;br /&gt;&lt;SPAN style="COLOR: #2b91af"&gt;&amp;nbsp;9&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;using&lt;/SPAN&gt; System.Web.UI.WebControls.WebParts;&lt;br /&gt;&lt;SPAN style="COLOR: #2b91af"&gt;10&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;using&lt;/SPAN&gt; System.Web.UI.HtmlControls;&lt;br /&gt;&lt;SPAN style="COLOR: #2b91af"&gt;11&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;using&lt;/SPAN&gt; System.Data.SqlClient;&lt;br /&gt;&lt;SPAN style="COLOR: #2b91af"&gt;12&lt;/SPAN&gt;&amp;nbsp;&lt;br /&gt;&lt;SPAN style="COLOR: #2b91af"&gt;13&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN style="COLOR: blue"&gt;namespace&lt;/SPAN&gt; MenuStrip&lt;br /&gt;&lt;SPAN style="COLOR: #2b91af"&gt;14&lt;/SPAN&gt;&amp;nbsp;{&lt;br /&gt;&lt;SPAN style="COLOR: #2b91af"&gt;15&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;public&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;partial&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;class&lt;/SPAN&gt; &lt;SPAN style="COLOR: #2b91af"&gt;ucMenu&lt;/SPAN&gt; : System.Web.UI.&lt;SPAN style="COLOR: #2b91af"&gt;UserControl&lt;/SPAN&gt;&lt;br /&gt;&lt;SPAN style="COLOR: #2b91af"&gt;16&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&lt;SPAN style="COLOR: #2b91af"&gt;17&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;private&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;string&lt;/SPAN&gt; menuFile = &lt;SPAN style="COLOR: #a31515"&gt;"Menu.xml"&lt;/SPAN&gt;;&lt;br /&gt;&lt;SPAN style="COLOR: #2b91af"&gt;18&lt;/SPAN&gt;&amp;nbsp;&lt;br /&gt;&lt;SPAN style="COLOR: #2b91af"&gt;19&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;public&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;string&lt;/SPAN&gt; MenuFile&lt;br /&gt;&lt;SPAN style="COLOR: #2b91af"&gt;20&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&lt;SPAN style="COLOR: #2b91af"&gt;21&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;get&lt;/SPAN&gt; { &lt;SPAN style="COLOR: blue"&gt;return&lt;/SPAN&gt; menuFile; }&lt;br /&gt;&lt;SPAN style="COLOR: #2b91af"&gt;22&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;set&lt;/SPAN&gt; { menuFile = &lt;SPAN style="COLOR: blue"&gt;value&lt;/SPAN&gt;; }&lt;br /&gt;&lt;SPAN style="COLOR: #2b91af"&gt;23&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;SPAN style="COLOR: #2b91af"&gt;24&lt;/SPAN&gt;&amp;nbsp;&lt;br /&gt;&lt;SPAN style="COLOR: #2b91af"&gt;25&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;protected&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;void&lt;/SPAN&gt; Page_Load(&lt;SPAN style="COLOR: blue"&gt;object&lt;/SPAN&gt; sender, &lt;SPAN style="COLOR: #2b91af"&gt;EventArgs&lt;/SPAN&gt; e)&lt;br /&gt;&lt;SPAN style="COLOR: #2b91af"&gt;26&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&lt;SPAN style="COLOR: #2b91af"&gt;27&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; PopulateMenu();&lt;br /&gt;&lt;SPAN style="COLOR: #2b91af"&gt;28&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;SPAN style="COLOR: #2b91af"&gt;29&lt;/SPAN&gt;&amp;nbsp;&lt;br /&gt;&lt;SPAN style="COLOR: #2b91af"&gt;30&lt;/SPAN&gt;&amp;nbsp;&lt;br /&gt;&lt;SPAN style="COLOR: #2b91af"&gt;31&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;private&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;void&lt;/SPAN&gt; PopulateMenu()&lt;br /&gt;&lt;SPAN style="COLOR: #2b91af"&gt;32&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&lt;SPAN style="COLOR: #2b91af"&gt;33&lt;/SPAN&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; &lt;SPAN style="COLOR: #2b91af"&gt;DataSet&lt;/SPAN&gt; ds=&lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; &lt;SPAN style="COLOR: #2b91af"&gt;DataSet&lt;/SPAN&gt;();&lt;br /&gt;&lt;SPAN style="COLOR: #2b91af"&gt;34&lt;/SPAN&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; &lt;SPAN style="COLOR: blue"&gt;if&lt;/SPAN&gt; (Cache[menuFile] != &lt;SPAN style="COLOR: blue"&gt;null&lt;/SPAN&gt;)&lt;br /&gt;&lt;SPAN style="COLOR: #2b91af"&gt;35&lt;/SPAN&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; {&lt;br /&gt;&lt;SPAN style="COLOR: #2b91af"&gt;36&lt;/SPAN&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; ds = (&lt;SPAN style="COLOR: #2b91af"&gt;DataSet&lt;/SPAN&gt;)Cache[menuFile];&lt;br /&gt;&lt;SPAN style="COLOR: #2b91af"&gt;37&lt;/SPAN&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; }&lt;br /&gt;&lt;SPAN style="COLOR: #2b91af"&gt;38&lt;/SPAN&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; &lt;SPAN style="COLOR: blue"&gt;else&lt;/SPAN&gt;&lt;br /&gt;&lt;SPAN style="COLOR: #2b91af"&gt;39&lt;/SPAN&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; {&lt;br /&gt;&lt;SPAN style="COLOR: #2b91af"&gt;40&lt;/SPAN&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; ds.ReadXml(Server.MapPath(menuFile));&lt;br /&gt;&lt;SPAN style="COLOR: #2b91af"&gt;41&lt;/SPAN&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; Cache.Insert(menuFile,ds, &lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt;&lt;br /&gt;&lt;SPAN style="COLOR: #2b91af"&gt;42&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp; System.Web.Caching.&lt;SPAN style="COLOR: #2b91af"&gt;CacheDependency&lt;/SPAN&gt;(Server.MapPath(menuFile)));&lt;br /&gt;&lt;SPAN style="COLOR: #2b91af"&gt;43&lt;/SPAN&gt;&amp;nbsp;&lt;br /&gt;&lt;SPAN style="COLOR: #2b91af"&gt;44&lt;/SPAN&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; }&lt;br /&gt;&lt;SPAN style="COLOR: #2b91af"&gt;45&lt;/SPAN&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; &lt;SPAN style="COLOR: #2b91af"&gt;DataTable&lt;/SPAN&gt; dt = ds.Tables[0]; &lt;br /&gt;&lt;SPAN style="COLOR: #2b91af"&gt;46&lt;/SPAN&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; &lt;SPAN style="COLOR: #2b91af"&gt;HyperLink&lt;/SPAN&gt; hl = &lt;SPAN style="COLOR: blue"&gt;null&lt;/SPAN&gt;;&lt;br /&gt;&lt;SPAN style="COLOR: #2b91af"&gt;47&lt;/SPAN&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; &lt;SPAN style="COLOR: blue"&gt;string&lt;/SPAN&gt; ctrlId = &lt;SPAN style="COLOR: #a31515"&gt;""&lt;/SPAN&gt;;&lt;br /&gt;&lt;SPAN style="COLOR: #2b91af"&gt;48&lt;/SPAN&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; &lt;SPAN style="COLOR: blue"&gt;for&lt;/SPAN&gt; (&lt;SPAN style="COLOR: blue"&gt;int&lt;/SPAN&gt; i = 0; i &amp;lt; dt.Rows.Count; i++)&lt;br /&gt;&lt;SPAN style="COLOR: #2b91af"&gt;49&lt;/SPAN&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; {&lt;br /&gt;&lt;SPAN style="COLOR: #2b91af"&gt;50&lt;/SPAN&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; ctrlId = &lt;SPAN style="COLOR: #a31515"&gt;"HyperLink"&lt;/SPAN&gt; + i.ToString();&lt;br /&gt;&lt;SPAN style="COLOR: #2b91af"&gt;51&lt;/SPAN&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; hl = (&lt;SPAN style="COLOR: #2b91af"&gt;HyperLink&lt;/SPAN&gt;)&lt;SPAN style="COLOR: blue"&gt;this&lt;/SPAN&gt;.FindControl(ctrlId);&lt;br /&gt;&lt;SPAN style="COLOR: #2b91af"&gt;52&lt;/SPAN&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; hl.NavigateUrl = (&lt;SPAN style="COLOR: blue"&gt;string&lt;/SPAN&gt;)dt.Rows[i][&lt;SPAN style="COLOR: #a31515"&gt;"NavigateUrl"&lt;/SPAN&gt;];&lt;br /&gt;&lt;SPAN style="COLOR: #2b91af"&gt;53&lt;/SPAN&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; hl.Text = (&lt;SPAN style="COLOR: blue"&gt;string&lt;/SPAN&gt;)dt.Rows[i][&lt;SPAN style="COLOR: #a31515"&gt;"Text"&lt;/SPAN&gt;];&lt;br /&gt;&lt;SPAN style="COLOR: #2b91af"&gt;54&lt;/SPAN&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; &lt;br /&gt;&lt;SPAN style="COLOR: #2b91af"&gt;55&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;SPAN style="COLOR: #2b91af"&gt;56&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;SPAN style="COLOR: #2b91af"&gt;57&lt;/SPAN&gt;&amp;nbsp;}&lt;/DIV&gt;&lt;br /&gt;&lt;br /&gt;&lt;P class=clsBodyText&gt;You see that the Menustrip control has a public MenuFile property which allows us to specify the Xml File in the declarative markup for the control, like so:&lt;BR&gt;&lt;/P&gt;&lt;br /&gt;&lt;P class="clsBodyText style5"&gt;&amp;lt;uc1:ucMenu ID="UcMenu1" runat="server" MenuFile="Menu.Xml" /&amp;gt;&lt;/P&gt;&lt;br /&gt;&lt;P class="clsBodyText style6"&gt;Then, I have the control load the required file into a DataSet, Cache it and set a file-based CacheDependency, and it proceeds to "fill in" the NavigateUrl and Text Properties of a bunch of blank Hyperlink Controls that I have in the HTML Markup portion of the ASCX "Page". The rest is done via CSS. You can have as many "blank" Hyperlink controls in the HTML markup of the ASCX as you think you may have menu-items, controls that aren't populated by the code&amp;nbsp;simply don't show up.&lt;BR&gt;&lt;BR&gt;This may be a little different approach than other "menu" thingies that you have seen, I hope you like it. The solution you can download below has two fully working versions of the control, and the items point to actual pages on eggheadcafe.com (we'd like you to stick around while you are experimenting with it).&lt;/P&gt;&lt;br /&gt;&lt;P class="clsBodyText style6"&gt;One last item - this is a WAP (Web Application Project) NOT a "WebSite" project. If you haven't installed the WAP add-in, you will find that the solution does not load. You can find out more about WAP along with a link to the download at &lt;A href="http://weblogs.asp.net/scottgu/archive/2006/05/08/VS-2005-Web-Application-Project-V1.0-Released.aspx"&gt;ScottGu's Blog here&lt;/A&gt;.&lt;BR&gt;&lt;BR&gt;Download the &lt;A href="http://www.eggheadcafe.com/articles/menustrip.zip"&gt;Visual Studio 2005&amp;nbsp;Web Application Project Solution&lt;/A&gt; that acompanies this article &lt;/P&gt;&lt;br /&gt;&lt;P class=clsBodyText&gt;&lt;/P&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6162232-1839260802800307397?l=www.thedotnetblog.com%2Fdefault.html' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.eggheadcafe.com/tutorials/aspnet/8c6e8619-1260-47ea-9355-f85da3698fbc/an-xmldriven-selfcachi.aspx' title='An Xml-Driven, Self-Caching ASCX MenuStrip Control'/><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/6162232/1839260802800307397/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=6162232&amp;postID=1839260802800307397' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6162232/posts/default/1839260802800307397'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6162232/posts/default/1839260802800307397'/><link rel='alternate' type='text/html' href='http://www.thedotnetblog.com/2007/01/xml-driven-self-caching-ascx-menustrip.html' title='An Xml-Driven, Self-Caching ASCX MenuStrip Control'/><author><name>Daniel</name><uri>http://www.blogger.com/profile/10286214721217824764</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='18108903163688288387'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6162232.post-115938016318461923</id><published>2006-09-27T14:00:00.000-04:00</published><updated>2006-09-27T14:02:43.203-04:00</updated><title type='text'>Creating Custom Cache Dependency</title><content type='html'>ASP.NET 2.0 offers you several ways to set a dependency between a cached item and a file(s), another cached item(s) or SQL Server database table. No doubt they satisfy most of the real world needs. However, at times the features offered by these dependencies are not sufficient. In such cases you can create your own dependency and use it instead of inbuilt ones. In this article you learn how this can be accomplished.&lt;br /&gt;&lt;a href="http://www.dotnetbips.com/articles/displayarticle.aspx?id=517" target="_blank"&gt;Read more...&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6162232-115938016318461923?l=www.thedotnetblog.com%2Fdefault.html' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.dotnetbips.com/articles/displayarticle.aspx?id=517' title='Creating Custom Cache Dependency'/><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/6162232/115938016318461923/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=6162232&amp;postID=115938016318461923' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6162232/posts/default/115938016318461923'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6162232/posts/default/115938016318461923'/><link rel='alternate' type='text/html' href='http://www.thedotnetblog.com/2006/09/creating-custom-cache-dependency.html' title='Creating Custom Cache Dependency'/><author><name>Daniel</name><uri>http://www.blogger.com/profile/10286214721217824764</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='18108903163688288387'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6162232.post-115757533879259405</id><published>2006-09-06T16:42:00.000-04:00</published><updated>2006-09-06T16:42:18.820-04:00</updated><title type='text'>Localization Made Easy with ASP.NET 2.0</title><content type='html'>Do you have an ASP.NET application ready and now you want to translate it into different languages, or are you developing a new application for which you want to support localization? If yes, ASP.NET 2.0 makes it easier than ever before to do so.&lt;br /&gt;&lt;br /&gt;More details &lt;a href="http://www.codeguru.com/csharp/.net/net_asp/miscellaneous/article.php/c12407/"&gt;here&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6162232-115757533879259405?l=www.thedotnetblog.com%2Fdefault.html' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.codeguru.com/csharp/.net/net_asp/miscellaneous/article.php/c12407/' title='Localization Made Easy with ASP.NET 2.0'/><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/6162232/115757533879259405/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=6162232&amp;postID=115757533879259405' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6162232/posts/default/115757533879259405'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6162232/posts/default/115757533879259405'/><link rel='alternate' type='text/html' href='http://www.thedotnetblog.com/2006/09/localization-made-easy-with-aspnet-20_06.html' title='Localization Made Easy with ASP.NET 2.0'/><author><name>Daniel</name><uri>http://www.blogger.com/profile/10286214721217824764</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='18108903163688288387'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6162232.post-115651636891496868</id><published>2006-08-25T10:32:00.000-04:00</published><updated>2006-08-25T10:32:49.030-04:00</updated><title type='text'>ASP.NET Caching Dependencies</title><content type='html'>The concept of Caching was introduced in ASP.NET 1.X and has been improved significantly in ASP.NET 2.0. Caching allows you to store commonly used items in the memory and thus not create them from scratch when they are requested. There are different types of Caching available in the .NET framework. In this &lt;a href="http://gridviewguy.com/ArticleDetails.aspx?articleID=195"&gt;article&lt;/a&gt; the author will introduce us to Caching dependencies.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6162232-115651636891496868?l=www.thedotnetblog.com%2Fdefault.html' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://gridviewguy.com/ArticleDetails.aspx?articleID=195' title='ASP.NET Caching Dependencies'/><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/6162232/115651636891496868/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=6162232&amp;postID=115651636891496868' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6162232/posts/default/115651636891496868'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6162232/posts/default/115651636891496868'/><link rel='alternate' type='text/html' href='http://www.thedotnetblog.com/2006/08/aspnet-caching-dependencies.html' title='ASP.NET Caching Dependencies'/><author><name>Daniel</name><uri>http://www.blogger.com/profile/10286214721217824764</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='18108903163688288387'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6162232.post-115506234570564983</id><published>2006-08-08T14:23:00.000-04:00</published><updated>2006-08-08T14:42:53.213-04:00</updated><title type='text'>View State: The Silent Perf Killer</title><content type='html'>&lt;style type="text/css"&gt;&lt;br /&gt;PRE&lt;br /&gt;{&lt;br /&gt;    PADDING-RIGHT: 15px;&lt;br /&gt;    PADDING-LEFT: 25px;&lt;br /&gt;    FONT-SIZE: 70%;&lt;br /&gt;    BACKGROUND: #eeeeee;&lt;br /&gt;    MARGIN-BOTTOM: 1em;&lt;br /&gt;    PADDING-BOTTOM: 10px;&lt;br /&gt;    PADDING-TOP: 10px;&lt;br /&gt;    FONT-FAMILY: 'courier new',courier,serif&lt;br /&gt;}&lt;br /&gt;PRE.clsCode&lt;br /&gt;{&lt;br /&gt;    PADDING-RIGHT: 15px;&lt;br /&gt;    PADDING-LEFT: 25px;&lt;br /&gt;    FONT-SIZE: 70%;&lt;br /&gt;    BACKGROUND: #eeeeee;&lt;br /&gt;    MARGIN-BOTTOM: 1em;&lt;br /&gt;    PADDING-BOTTOM: 10px;&lt;br /&gt;    PADDING-TOP: 10px;&lt;br /&gt;    FONT-FAMILY: 'courier new',courier,serif&lt;br /&gt;}&lt;br /&gt;&lt;/style&gt;&lt;br /&gt;&lt;br /&gt;&lt;P&gt;In some ways, view state is the greatest thing since sliced bread. After all, it’s view state that allows pages and controls to persist state across postbacks. That’s why you don’t have to write code to keep the text in a TextBox from disappearing when a button is clicked as you did in classic ASP, or requery a database and rebind a DataGrid following a postback.&lt;/P&gt;&lt;P&gt;But view state has a dark side, too: when it grows too large, it’s a silent performance killer. Some controls, such as TextBoxes, are judicious with view state. Others, notably DataGrids and GridViews, emit view state in proportion to the amount of information displayed. I cringe when I see a GridView displaying 200 or 300 rows of data. Even though ASP.NET 2.0 view state is roughly half the size of ASP.NET 1.&lt;I&gt;x&lt;/I&gt; view state, one lousy GridView can easily cut the effective bandwidth of a connection between a browser and a Web server by 50 percent or more.&lt;/P&gt;&lt;P&gt;You can turn off view state for individual controls by setting EnableViewState to false, but some controls, particularly DataGrids, lose some of their functionality when denied the freedom to use view state. A much better solution to taming view state is keeping it on the server. In ASP.NET 1.&lt;I&gt;x&lt;/I&gt;, you can override a page’s LoadPageStateFromPersistenceMedium and SavePageStateToPersistenceMedium methods and handle view state however you like. The overrides shown in the code below prevent view state from being persisted in a hidden field and persist it in session state instead.&lt;/P&gt;&lt;br /&gt;&lt;br /&gt;&lt;PRE class="clsCode"&gt;&lt;br /&gt;protected override object LoadPageStateFromPersistenceMedium ()&lt;br /&gt;{&lt;br /&gt;    string key = Request.RawUrl + &amp;amp;quot;_VIEWSTATE&amp;amp;quot;;&lt;br /&gt;    object state = Session[key];               &lt;br /&gt;    return (state == null) ?&lt;br /&gt;        base.LoadPageStateFromPersistenceMedium () : state;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;protected override void&lt;br /&gt;    SavePageStateToPersistenceMedium (object viewState)&lt;br /&gt;{&lt;br /&gt;    string key = Request.RawUrl + &amp;amp;quot;_VIEWSTATE&amp;amp;quot;;&lt;br /&gt;    Session[key] = viewState;&lt;br /&gt;} &lt;br /&gt;&lt;/PRE&gt;&lt;br /&gt;&lt;P&gt;Storing view state in session state is particularly effective when paired with the default session state process model—that is, when session state is stored in memory in the ASP.NET worker process. If session state is stored in a database instead, then only testing will show whether keeping view state in session state improves or degrades performance.&lt;/P&gt;&lt;P&gt;The same technique works in ASP.NET 2.0, but ASP.NET 2.0 offers a simpler means for persisting view state in session state. You begin by defining a custom page adapter whose GetStatePersister method returns an instance of the .NET Framework SessionPageStatePersister class:&lt;/P&gt;&lt;br /&gt;&lt;PRE class="clsCode"&gt;&lt;br /&gt;public class SessionPageStateAdapter :&lt;br /&gt;    System.Web.UI.Adapters.PageAdapter&lt;br /&gt;{&lt;br /&gt;    public override PageStatePersister GetStatePersister ()&lt;br /&gt;    {&lt;br /&gt;        return new SessionPageStatePersister(this.Page);&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;/PRE&gt;&lt;BR /&gt;&lt;br /&gt;&lt;P&gt;Then you register the custom page adapter as the default page adapter by dropping an App.browsers file like the following into the application’s App_Browsers folder:&lt;/P&gt;&lt;br /&gt;&lt;PRE class="clsCode"&gt;&lt;br /&gt;&amp;lt;browsers&amp;gt;&lt;br /&gt;  &amp;lt;browser refID="Default"&amp;gt;&lt;br /&gt;    &amp;lt;controlAdapters&amp;gt;&lt;br /&gt;      &amp;lt;adapter controlType="System.Web.UI.Page"&lt;br /&gt;        adapterType="SessionPageStateAdapter" /&amp;gt;&lt;br /&gt;    &amp;lt;/controlAdapters&amp;gt;&lt;br /&gt;  &amp;lt;/browser&amp;gt;&lt;br /&gt;&amp;lt;/browsers&amp;gt;&lt;br /&gt;&lt;/PRE&gt;&lt;BR /&gt;&lt;br /&gt;&lt;P&gt;(You can name the file anything you like as long as it has a .browsers extension.) Thereafter, ASP.NET will load the page adapter and use the returned SessionPageStatePersister to persist all page state, including view state.&lt;/P&gt;&lt;P&gt;One downside to using a custom page adapter is that it acts globally for every page in the application. If you’d prefer to persist view state in session state for some pages but not for others, use the technique shown in the first snippet of this article. Additionally, you can run into issues with this technique if a user creates multiple browser windows within the same session.&lt;/P&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6162232-115506234570564983?l=www.thedotnetblog.com%2Fdefault.html' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/6162232/115506234570564983/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=6162232&amp;postID=115506234570564983' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6162232/posts/default/115506234570564983'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6162232/posts/default/115506234570564983'/><link rel='alternate' type='text/html' href='http://www.thedotnetblog.com/2006/08/view-state-silent-perf-killer.html' title='View State: The Silent Perf Killer'/><author><name>Daniel</name><uri>http://www.blogger.com/profile/10286214721217824764</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='18108903163688288387'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6162232.post-114677198270130746</id><published>2006-05-04T15:46:00.000-04:00</published><updated>2006-08-08T14:59:15.326-04:00</updated><title type='text'>Client-side programming with Atlas: Builder AU: Program</title><content type='html'>Microsoft has developed its own approach to AJAX development called Atlas, which promises browser ubiquity as well as tight, albeit optional, ASP.NET integration. In this column, we survey the Atlas architecture to get a better understanding of how you may use it in your development work.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6162232-114677198270130746?l=www.thedotnetblog.com%2Fdefault.html' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.builderau.com.au/program/soa/Client_side_programming_with_Atlas/0,39024614,39249423,00.htm' title='Client-side programming with Atlas: Builder AU: Program'/><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/6162232/114677198270130746/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=6162232&amp;postID=114677198270130746' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6162232/posts/default/114677198270130746'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6162232/posts/default/114677198270130746'/><link rel='alternate' type='text/html' href='http://www.thedotnetblog.com/2006/05/client-side-programming-with-atlas.html' title='Client-side programming with Atlas: Builder AU: Program'/><author><name>Daniel</name><uri>http://www.blogger.com/profile/10286214721217824764</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='18108903163688288387'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6162232.post-114667891233563373</id><published>2006-05-03T13:55:00.000-04:00</published><updated>2006-08-08T14:59:51.616-04:00</updated><title type='text'>Optimizing Your Asp.Net Pages for Faster Loading and Better Performance</title><content type='html'>In this article the author discusses some options for speeding up the loading of your ASP.NET pages. Some tips include using caching, control use, and data handling techniques.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6162232-114667891233563373?l=www.thedotnetblog.com%2Fdefault.html' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.wwwcoder.com/main/parentid/457/site/6228/68/default.aspx' title='Optimizing Your Asp.Net Pages for Faster Loading and Better Performance'/><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/6162232/114667891233563373/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=6162232&amp;postID=114667891233563373' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6162232/posts/default/114667891233563373'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6162232/posts/default/114667891233563373'/><link rel='alternate' type='text/html' href='http://www.thedotnetblog.com/2006/05/optimizing-your-aspnet-pages-for.html' title='Optimizing Your Asp.Net Pages for Faster Loading and Better Performance'/><author><name>Daniel</name><uri>http://www.blogger.com/profile/10286214721217824764</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='18108903163688288387'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6162232.post-107206736947668795</id><published>2003-12-21T23:29:00.000-05:00</published><updated>2006-08-08T15:00:43.666-04:00</updated><title type='text'>Using ASP.NET HTTP Handlers to create a photo album</title><content type='html'>In this article you'll learn about the .NET Framework's equivalent of ISAPI extensions: the ASP.NET HTTP Handlers. Using a photo album as example, the author explains the creation and configuration of HTTP Handlers and he discusses caching to improve performance.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6162232-107206736947668795?l=www.thedotnetblog.com%2Fdefault.html' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.microsoft.com/belux/nl/msdn/community/columns/desmet/httphandler.mspx' title='Using ASP.NET HTTP Handlers to create a photo album'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6162232/posts/default/107206736947668795'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6162232/posts/default/107206736947668795'/><link rel='alternate' type='text/html' href='http://www.thedotnetblog.com/2003/12/using-aspnet-http-handlers-to-create.html' title='Using ASP.NET HTTP Handlers to create a photo album'/><author><name>Daniel</name><uri>http://www.blogger.com/profile/10286214721217824764</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='18108903163688288387'/></author></entry><entry><id>tag:blogger.com,1999:blog-6162232.post-107097959005869282</id><published>2003-12-09T09:19:00.000-05:00</published><updated>2006-08-08T15:01:22.240-04:00</updated><title type='text'>Data binding and Web Services using Custom Collections</title><content type='html'>The data binding capabilities in .NET are great, you can bind many controls to almost any type of data, but in some scenarios data binding has its limitations. For example data binding is not possible when using custom collections, instead of DataSets, coming from a Web Service. This article explains the problem and a possible, easy-to-use, solution: a class that dynamically builds wrapper classes at run time, which exposes the field member of the proxy classes as properties.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6162232-107097959005869282?l=www.thedotnetblog.com%2Fdefault.html' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.microsoft.com/belux/nl/msdn/community/columns/jtielens/webservicewrapper.mspx' title='Data binding and Web Services using Custom Collections'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6162232/posts/default/107097959005869282'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6162232/posts/default/107097959005869282'/><link rel='alternate' type='text/html' href='http://www.thedotnetblog.com/2003/12/data-binding-and-web-services-using.html' title='Data binding and Web Services using Custom Collections'/><author><name>Daniel</name><uri>http://www.blogger.com/profile/10286214721217824764</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='18108903163688288387'/></author></entry><entry><id>tag:blogger.com,1999:blog-6162232.post-107064567080170654</id><published>2003-12-05T12:34:00.000-05:00</published><updated>2003-12-05T12:34:41.710-05:00</updated><title type='text'></title><content type='html'>&lt;a href="http://www.15seconds.com/issue/010214.htm"&gt;Using Managed Components from Unmanaged Code&lt;/a&gt;: &lt;br&gt;&lt;font size='1'&gt;Mansoor is back to explain .NET runtime's forward compatibility feature. Here he shows us how to access .NET components from COM components.&lt;/font&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6162232-107064567080170654?l=www.thedotnetblog.com%2Fdefault.html' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/6162232/107064567080170654/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=6162232&amp;postID=107064567080170654' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6162232/posts/default/107064567080170654'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6162232/posts/default/107064567080170654'/><link rel='alternate' type='text/html' href='http://www.thedotnetblog.com/2003/12/using-managed-components-from.html' title=''/><author><name>Daniel</name><uri>http://www.blogger.com/profile/10286214721217824764</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='18108903163688288387'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6162232.post-107064507651489170</id><published>2003-12-05T12:24:00.000-05:00</published><updated>2003-12-05T12:24:47.516-05:00</updated><title type='text'></title><content type='html'>&lt;a href="http://www.15seconds.com/issue/020730.htm"&gt;Accessing Active Directory Through the .NET Framework&lt;/a&gt;: &lt;br&gt;&lt;font size='1'&gt;The System.DirectoryServices namespace gives users access to some rudimentary user administration via ASP.NET. This article first reviews what the Active Directory (AD) is, then looks briefly at the actual System.DirectoryServices namespace itself, and finally presents the code that allows us to add, edit, and delete users.&lt;/font&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6162232-107064507651489170?l=www.thedotnetblog.com%2Fdefault.html' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/6162232/107064507651489170/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=6162232&amp;postID=107064507651489170' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6162232/posts/default/107064507651489170'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6162232/posts/default/107064507651489170'/><link rel='alternate' type='text/html' href='http://www.thedotnetblog.com/2003/12/accessing-active-directory-through.html' title=''/><author><name>Daniel</name><uri>http://www.blogger.com/profile/10286214721217824764</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='18108903163688288387'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6162232.post-107063305025019667</id><published>2003-12-05T09:04:00.000-05:00</published><updated>2003-12-05T09:04:21.403-05:00</updated><title type='text'></title><content type='html'>&lt;a href="http://www.devx.com/Intel/Article/17883"&gt;Designing Your Apps to Handle Loss of Connectivity Well&lt;/a&gt;: &lt;br&gt;&lt;font size='1'&gt;Many applications have a built-in dependency on a live network connection that doesn't become obvious until you try to operate them on a disconnected device. This paper highlights techniques you can use to architect your applications to handle loss of connectivity in an intelligent way. This will lead to a better user experiences and greater customer satisfaction.&lt;/font&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6162232-107063305025019667?l=www.thedotnetblog.com%2Fdefault.html' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/6162232/107063305025019667/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=6162232&amp;postID=107063305025019667' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6162232/posts/default/107063305025019667'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6162232/posts/default/107063305025019667'/><link rel='alternate' type='text/html' href='http://www.thedotnetblog.com/2003/12/designing-your-apps-to-handle-loss-of.html' title=''/><author><name>Daniel</name><uri>http://www.blogger.com/profile/10286214721217824764</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='18108903163688288387'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6162232.post-107059540563524894</id><published>2003-12-04T22:36:00.000-05:00</published><updated>2003-12-04T22:36:56.386-05:00</updated><title type='text'></title><content type='html'>&lt;a href="http://www.codeproject.com/cs/webservices/omnisearch.asp"&gt;Caching Google Web Service Request&lt;/a&gt;&lt;br&gt;&lt;font size='1'&gt;This describes how to use the Google Web Service and serialization in order to cache Google search requests so that the website owner doesn't go past the 1000 request limit set by Google. This will allow you to limit the number of requests you make to the Google Web service. This is done by serializing the Google Request Object into an XML file and writing it to the disk. Then when a user does a search the search engine checks the cache before going to Google to request the search.&lt;/font&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6162232-107059540563524894?l=www.thedotnetblog.com%2Fdefault.html' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/6162232/107059540563524894/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=6162232&amp;postID=107059540563524894' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6162232/posts/default/107059540563524894'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6162232/posts/default/107059540563524894'/><link rel='alternate' type='text/html' href='http://www.thedotnetblog.com/2003/12/caching-google-web-service-requestthis.html' title=''/><author><name>Daniel</name><uri>http://www.blogger.com/profile/10286214721217824764</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='18108903163688288387'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6162232.post-107056238993265185</id><published>2003-12-04T13:26:00.000-05:00</published><updated>2003-12-04T13:29:30.603-05:00</updated><title type='text'></title><content type='html'>&lt;a href="http://www.codeproject.com/dotnet/EnterpriseConectionString.asp"&gt;Strategy to distribute secure database connection strings in an enterprise environment - .NET&lt;/a&gt;:&lt;br&gt; &lt;font size='1'&gt;The following article discusses a simple strategy to maintain and distribute connection strings securely.&lt;/font&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6162232-107056238993265185?l=www.thedotnetblog.com%2Fdefault.html' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/6162232/107056238993265185/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=6162232&amp;postID=107056238993265185' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6162232/posts/default/107056238993265185'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6162232/posts/default/107056238993265185'/><link rel='alternate' type='text/html' href='http://www.thedotnetblog.com/2003/12/strategy-to-distribute-secure-database.html' title=''/><author><name>Daniel</name><uri>http://www.blogger.com/profile/10286214721217824764</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='18108903163688288387'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6162232.post-107050148995355194</id><published>2003-12-03T20:31:00.000-05:00</published><updated>2003-12-03T20:31:40.353-05:00</updated><title type='text'></title><content type='html'>&lt;a href="http://aspnet.4guysfromrolla.com/articles/112603-1.aspx"&gt;ASP.NET.4GuysFromRolla.com: Quickly Editing an XML File&lt;/a&gt;&lt;br&gt;&lt;font size='1'&gt; Today virtually all Web sites use a traditional relational database for persistent storage, retrieval and modification of data. Databases have numerous advantages, such as having a rich standardized querying language (SQL), providing transaction support, and good performance. Anytime you are building a professional-grade Web site, or are dealing with large amounts of data, it behooves you to use a database to store and retrieve the data. Sometimes, though, for smaller Web sites or for small amounts of data, a database seems like a bit of overkill. Too, for Web site hosting companies that charge extra to have database support, it might not make sense to pay this extra fee if you only need to store a tiny bit of persistent information. This article, by &lt;a href="mailto:zubairdotnet@yahoo.com"&gt;Zubair Ahmed&lt;/a&gt;, demonstrates how a simple XML file can be used to store, retrieve, modify and even delete records with the help of the DataGrid Web control. &lt;p /&gt; Below is a sneak-peak of the user interface we'll be building for editing this XML file. Note that by the end of this article you'll be able to build a means to insert new records in an XML file, as well as update and delete existing records. Additionally, feel free to check out the &lt;a href="http://aspnet.4guysfromrolla.com/demos/xmlDG.aspx"&gt;live demo&lt;/a&gt;. &lt;p&gt;&lt;center&gt;&lt;a href="http://aspnet.4guysfromrolla.com/images/xmlDG.gif"&gt;&lt;img src="http://aspnet.4guysfromrolla.com/images/xmlDG.tiny.gif" alt="The DataGrid for editing/adding to the XML document." border="1" width="400" height="259" /&gt;&lt;/a&gt;&lt;/center&gt;&lt;/p&gt;&lt;br /&gt; [&lt;a HREF="http://aspnet.4guysfromrolla.com/articles/112603-1.aspx"&gt;Read More&lt;/a&gt;] | [&lt;a href="http://aspnet.4guysfromrolla.com/"&gt;Visit ASPNET.4GuysFromRolla.com&lt;/a&gt;] &lt;/font&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6162232-107050148995355194?l=www.thedotnetblog.com%2Fdefault.html' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/6162232/107050148995355194/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=6162232&amp;postID=107050148995355194' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6162232/posts/default/107050148995355194'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6162232/posts/default/107050148995355194'/><link rel='alternate' type='text/html' href='http://www.thedotnetblog.com/2003/12/asp.html' title=''/><author><name>Daniel</name><uri>http://www.blogger.com/profile/10286214721217824764</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='18108903163688288387'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6162232.post-107048219190363989</id><published>2003-12-03T15:09:00.000-05:00</published><updated>2003-12-03T15:10:02.570-05:00</updated><title type='text'></title><content type='html'>&lt;a href="http://www.wwwcoder.com/main/DesktopDefault.aspx?tabId=68&amp;mid=407&amp;site=1901&amp;parentid=177"&gt;Bind a Datalist to a Remote XML File&lt;/a&gt;:&lt;br&gt;&lt;font size='1'&gt;In this article we will cover binding a remote XML file to a datalist. In this specific example, the remote file will be an RSS file containing syndicated content.&lt;/font&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6162232-107048219190363989?l=www.thedotnetblog.com%2Fdefault.html' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/6162232/107048219190363989/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=6162232&amp;postID=107048219190363989' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6162232/posts/default/107048219190363989'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6162232/posts/default/107048219190363989'/><link rel='alternate' type='text/html' href='http://www.thedotnetblog.com/2003/12/bind-datalist-to-remote-xml-filein.html' title=''/><author><name>Daniel</name><uri>http://www.blogger.com/profile/10286214721217824764</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='18108903163688288387'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6162232.post-107048073244117442</id><published>2003-12-03T14:45:00.000-05:00</published><updated>2003-12-03T14:45:42.743-05:00</updated><title type='text'></title><content type='html'>&lt;a href="http://www.microsoft.com/belux/nl/msdn/community/columns/desmet/hostaspnet2.mspx"&gt;Hosting the ASP.NET runtime in your own application - part 2&lt;/a&gt;: &lt;br&gt;&lt;font size='1'&gt;In this second article you will learn how to create an application that enables running an ASP.NET application from a cd-rom.&lt;/font&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6162232-107048073244117442?l=www.thedotnetblog.com%2Fdefault.html' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/6162232/107048073244117442/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=6162232&amp;postID=107048073244117442' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6162232/posts/default/107048073244117442'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6162232/posts/default/107048073244117442'/><link rel='alternate' type='text/html' href='http://www.thedotnetblog.com/2003/12/hosting-asp.html' title=''/><author><name>Daniel</name><uri>http://www.blogger.com/profile/10286214721217824764</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='18108903163688288387'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6162232.post-107048067381553336</id><published>2003-12-03T14:44:00.000-05:00</published><updated>2003-12-03T14:46:51.633-05:00</updated><title type='text'></title><content type='html'>&lt;a href="http://www.microsoft.com/belux/nl/msdn/community/columns/desmet/hostaspnet1.mspx"&gt;Hosting the ASP.NET runtime in your own application - part 1&lt;/a&gt;: &lt;br&gt;&lt;font size='1'&gt;It's quite easy to host the ASP.NET runtime in your own application. This first article in a series of two demonstrates how to execute ASP.NET pages and display the result in Internet Explorer.&lt;/font&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6162232-107048067381553336?l=www.thedotnetblog.com%2Fdefault.html' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/6162232/107048067381553336/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=6162232&amp;postID=107048067381553336' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6162232/posts/default/107048067381553336'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6162232/posts/default/107048067381553336'/><link rel='alternate' type='text/html' href='http://www.thedotnetblog.com/2003/12/hosting-asp_03.html' title=''/><author><name>Daniel</name><uri>http://www.blogger.com/profile/10286214721217824764</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='18108903163688288387'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6162232.post-107048028417896861</id><published>2003-12-03T14:38:00.000-05:00</published><updated>2003-12-03T14:38:14.423-05:00</updated><title type='text'></title><content type='html'>&lt;a href="http://www.dotnetbips.com/displayarticle.aspx?id=79"&gt;Passing Values between ASP.NET Web Forms&lt;/a&gt;:&lt;br&gt;&lt;font size='1'&gt;ASP.NET web forms provide excellent event driven programming model to developers. This does simplifies the overall design of your application but poses some problems of its own. For example, in traditional ASP you can easily pass values from one ASP page to another ASP page using POST. The same thing is not possible in ASP.NET if you want to stick to web form model (i.e. Server side form and control processing.). There are, however, some ways that can be used to overcome this situation. This article examines various possibilities to do the same. More specifically we will cover how to pass values using querystring, how to use session variables to do the same and finally how to use Server.Transfer method to do that.&lt;/font&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6162232-107048028417896861?l=www.thedotnetblog.com%2Fdefault.html' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/6162232/107048028417896861/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=6162232&amp;postID=107048028417896861' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6162232/posts/default/107048028417896861'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6162232/posts/default/107048028417896861'/><link rel='alternate' type='text/html' href='http://www.thedotnetblog.com/2003/12/passing-values-between-asp.html' title=''/><author><name>Daniel</name><uri>http://www.blogger.com/profile/10286214721217824764</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='18108903163688288387'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6162232.post-107047995707939710</id><published>2003-12-03T14:32:00.000-05:00</published><updated>2003-12-03T14:32:47.396-05:00</updated><title type='text'></title><content type='html'>&lt;a href="http://www.wwwcoder.com/main/DesktopDefault.aspx?tabId=68&amp;mid=407&amp;site=1987&amp;parentid=177"&gt;Adding Attributes to an Object Within a Datalist&lt;/a&gt;: &lt;br&gt;&lt;font size='1'&gt;In this article we cover the difference between adding attributes to objects directly and objects contained within a datalist. In this specific example we will add some Javascript behind an image button for a confirmation dialog.&lt;/font&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6162232-107047995707939710?l=www.thedotnetblog.com%2Fdefault.html' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/6162232/107047995707939710/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=6162232&amp;postID=107047995707939710' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6162232/posts/default/107047995707939710'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6162232/posts/default/107047995707939710'/><link rel='alternate' type='text/html' href='http://www.thedotnetblog.com/2003/12/adding-attributes-to-object-within.html' title=''/><author><name>Daniel</name><uri>http://www.blogger.com/profile/10286214721217824764</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='18108903163688288387'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6162232.post-107047952604671562</id><published>2003-12-03T14:25:00.000-05:00</published><updated>2003-12-03T14:25:36.463-05:00</updated><title type='text'></title><content type='html'>&lt;a href="http://www.dotnetbips.com/displayarticle.aspx?id=205"&gt;Highlighted Hovering and Anywhere Selecting A DataGrid Row&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6162232-107047952604671562?l=www.thedotnetblog.com%2Fdefault.html' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/6162232/107047952604671562/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=6162232&amp;postID=107047952604671562' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6162232/posts/default/107047952604671562'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6162232/posts/default/107047952604671562'/><link rel='alternate' type='text/html' href='http://www.thedotnetblog.com/2003/12/highlighted-hovering-and-anywhere.html' title=''/><author><name>Daniel</name><uri>http://www.blogger.com/profile/10286214721217824764</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='18108903163688288387'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6162232.post-107047616524909155</id><published>2003-12-03T13:29:00.000-05:00</published><updated>2003-12-03T14:06:54.416-05:00</updated><title type='text'></title><content type='html'>&lt;a href="http://www.devx.com/dotnet/Article/11358"&gt;How To Pass Parameters to Threads in Windows Forms Applications and Get Results&lt;/a&gt;: &lt;br&gt;&lt;font size='1'&gt;Launching new threads is easy, but it's not as obvious how you can pass parameters to the threads and get the results back. In addition, accessing Windows Forms controls from multiple threads can cause problems. In this article, you'll see how to pass parameters, receive results, and access controls safely from multiple threads in a Windows Forms application.&lt;/font&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6162232-107047616524909155?l=www.thedotnetblog.com%2Fdefault.html' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/6162232/107047616524909155/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=6162232&amp;postID=107047616524909155' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6162232/posts/default/107047616524909155'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6162232/posts/default/107047616524909155'/><link rel='alternate' type='text/html' href='http://www.thedotnetblog.com/2003/12/how-to-pass-parameters-to-threads-in.html' title=''/><author><name>Daniel</name><uri>http://www.blogger.com/profile/10286214721217824764</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='18108903163688288387'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6162232.post-107047543941841022</id><published>2003-12-03T13:17:00.000-05:00</published><updated>2003-12-03T13:22:56.010-05:00</updated><title type='text'></title><content type='html'>&lt;a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dndotnet/html/dotNetADSearch.asp"&gt;Using System.DirectoryServices to Search the Active Directory&lt;/a&gt;&lt;br&gt;&lt;font size='1'&gt;Duncan Mackenzie describes how to use the System.DirectoryServices namespace to search for information in Microsoft Active Directory.&lt;/font&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6162232-107047543941841022?l=www.thedotnetblog.com%2Fdefault.html' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/6162232/107047543941841022/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=6162232&amp;postID=107047543941841022' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6162232/posts/default/107047543941841022'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6162232/posts/default/107047543941841022'/><link rel='alternate' type='text/html' href='http://www.thedotnetblog.com/2003/12/using-system.html' title=''/><author><name>Daniel</name><uri>http://www.blogger.com/profile/10286214721217824764</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='18108903163688288387'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry></feed>