<feed version="0.3" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns="http://purl.org/atom/ns#" xml:lang="en-US"><title>Famil Jones</title><link rel="alternate" type="text/html" href="http://www.dotnetjunkies.com/WebLog/familjones/default.aspx" /><tagline type="text/html">A .NET Blog</tagline><id>http://www.dotnetjunkies.com/WebLog/familjones/default.aspx</id><author><url>http://www.dotnetjunkies.com/WebLog/familjones/default.aspx</url></author><generator url="http://communityserver.org" version="1.0.1.50214">Community Server</generator><modified>2004-04-01T17:51:00Z</modified><entry><title>Introducing the New Rich-Text Editor for ASP.NET AJAX</title><link rel="alternate" type="text/html" href="http://www.dotnetjunkies.com/WebLog/familjones/archive/2008/12/09/558461.aspx" /><id>58df7014-fd75-437c-9641-150997716d1c:558461</id><created>2008-12-09T11:46:00Z</created><content type="text/html" mode="escaped">&lt;TABLE&gt;

&lt;TR&gt;
&lt;TD&gt;Karamasoft Released UltimateEditor 3.3&lt;BR&gt;for ASP.NET AJAX&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;TABLE&gt;

&lt;TR&gt;
&lt;TD&gt;&lt;a href="http://www.karamasoft.com/home.aspx?component=UltimateEditor&amp;amp;referrer=dnjue330"&gt;&lt;IMG src="http://www.karamasoft.com/Images/Product/UltimateEditor_100x100.jpg"&gt;&lt;/A&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;a href="http://www.karamasoft.com/home.aspx?component=UltimateEditor&amp;amp;referrer=dnjue330"&gt;UltimateEditor&lt;/A&gt; is a Microsoft Word®-like &lt;BR&gt;rich-text editor with built-in spell checker.&lt;BR&gt;&lt;BR&gt;You can add a WYSIWYG online HTML editor&lt;BR&gt;to your ASP.NET website or CMS application&lt;BR&gt;&lt;a href="http://uisuite.blip.tv/"&gt;in 2 minutes&lt;/A&gt;. &lt;/TD&gt;&lt;/TR&gt;&lt;/TABLE&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;&lt;a href="http://www.karamasoft.com/Samples.aspx?component=UltimateEditor&amp;amp;referrer=dnjue330"&gt;&lt;IMG title="See Live Demos" alt="See Live Demos" src="http://www.karamasoft.com/Images/Site/LiveDemoB.gif"&gt;&lt;/A&gt; &amp;nbsp; &amp;nbsp;&lt;a href="http://www.karamasoft.com/Download.aspx?referrer=dnjue330"&gt;&lt;IMG title="Download Now" alt="Download Now" src="http://www.karamasoft.com/Images/Site/DownloadO.gif"&gt;&lt;/A&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;TABLE&gt;

&lt;TR&gt;
&lt;TD align="left"&gt;&lt;SPAN&gt;
&lt;P&gt;&lt;B&gt;Feature Highlights&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;&lt;IMG src="http://www.karamasoft.com/Images/Site/BulletSquare.gif"&gt; &lt;a href="http://www.karamasoft.com/Samples.aspx?component=UltimateEditor&amp;amp;referrer=dnjue330&amp;amp;sample=Configuration"&gt;Word®-like&lt;/A&gt; editing&lt;/P&gt;
&lt;P&gt;&lt;IMG src="http://www.karamasoft.com/Images/Site/BulletSquare.gif"&gt; Spell check &lt;a href="http://www.karamasoft.com/Samples.aspx?component=UltimateEditor&amp;amp;referrer=dnjue330&amp;amp;sample=SpellAsYouType"&gt;as you type&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;IMG src="http://www.karamasoft.com/Images/Site/BulletSquare.gif"&gt; Upload to &lt;a href="http://www.karamasoft.com/Samples.aspx?component=UltimateEditor&amp;amp;referrer=dnjue330&amp;amp;sample=UploadDatabase"&gt;database&lt;/A&gt; [&lt;SPAN&gt;new&lt;/SPAN&gt;]&lt;/P&gt;
&lt;P&gt;&lt;IMG src="http://www.karamasoft.com/Images/Site/BulletSquare.gif"&gt; Convert to &lt;a href="http://www.karamasoft.com/Samples.aspx?component=UltimateEditor&amp;amp;referrer=dnjue330&amp;amp;sample=ConvertToPDF"&gt;PDF&lt;/A&gt; [&lt;SPAN&gt;new&lt;/SPAN&gt;]&lt;/P&gt;
&lt;P&gt;&lt;IMG src="http://www.karamasoft.com/Images/Site/BulletSquare.gif"&gt; Auto &lt;a href="http://www.karamasoft.com/Samples.aspx?component=UltimateEditor&amp;amp;referrer=dnjue330&amp;amp;sample=Configuration"&gt;Word cleanup&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;IMG src="http://www.karamasoft.com/Images/Site/BulletSquare.gif"&gt; Complete &lt;a href="http://www.karamasoft.com/Samples.aspx?component=UltimateEditor&amp;amp;referrer=dnjue330&amp;amp;sample=ChangeToolbarLayout"&gt;customization&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;IMG src="http://www.karamasoft.com/Images/Site/BulletSquare.gif"&gt; Right-click &lt;a href="http://www.karamasoft.com/Samples.aspx?component=UltimateEditor&amp;amp;referrer=dnjue330&amp;amp;sample=ContextMenu"&gt;context menu&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;IMG src="http://www.karamasoft.com/Images/Site/BulletSquare.gif"&gt; &lt;a href="http://www.karamasoft.com/Samples.aspx?component=UltimateEditor&amp;amp;referrer=dnjue330&amp;amp;sample=InsertTemplate"&gt;Templates&lt;/B&gt; and &lt;a href="http://www.karamasoft.com/Samples.aspx?component=UltimateEditor&amp;amp;referrer=dnjue330&amp;amp;sample=Themes"&gt;themes&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;IMG src="http://www.karamasoft.com/Images/Site/BulletSquare.gif"&gt; &lt;a href="http://www.karamasoft.com/Samples.aspx?component=UltimateEditor&amp;amp;referrer=dnjue330&amp;amp;sample=ChangeLanguage"&gt;Multi-language&lt;/A&gt; support&lt;/P&gt;&lt;/SPAN&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;a href="http://www.karamasoft.com/Samples.aspx?component=UltimateEditor&amp;amp;referrer=dnjue330"&gt;&lt;IMG title="Rich-Text Editor for ASP.NET" alt="Rich-Text Editor for ASP.NET" src="http://www.karamasoft.com/Images/Flash/products/editor.gif"&gt;&lt;/A&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TABLE&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;TABLE&gt;

&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;&lt;B&gt;Other ASP.NET AJAX Products&lt;/B&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;&lt;a href="http://www.karamasoft.com/home.aspx?component=UISuite&amp;amp;referrer=dnjue330"&gt;&lt;IMG src="http://www.karamasoft.com/Images/Product/UISuite_50x50.jpg"&gt;&lt;/A&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;a href="http://www.karamasoft.com/home.aspx?component=UISuite&amp;amp;referrer=dnjue330"&gt;UI Suite&lt;SUP&gt;®&lt;/SUP&gt;&lt;/A&gt;&lt;BR&gt;All Components in a&lt;BR&gt;Value Package&lt;/TD&gt;
&lt;TD&gt;&lt;a href="http://www.karamasoft.com/home.aspx?component=UltimatePanel&amp;amp;referrer=dnjue330"&gt;&lt;IMG src="http://www.karamasoft.com/Images/Product/UltimatePanel_50x50.jpg"&gt;&lt;/A&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;a href="http://www.karamasoft.com/home.aspx?component=UltimatePanel&amp;amp;referrer=dnjue330"&gt;UltimatePanel&lt;/A&gt;&lt;BR&gt;Side Panel Bar with&lt;BR&gt;Accordion Boxes&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;&lt;a href="http://www.karamasoft.com/home.aspx?component=UltimateAjax&amp;amp;referrer=dnjue330"&gt;&lt;IMG src="http://www.karamasoft.com/Images/Product/UltimateAjax_50x50.jpg"&gt;&lt;/A&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;a href="http://www.karamasoft.com/home.aspx?component=UltimateAjax&amp;amp;referrer=dnjue330"&gt;UltimateAjax&lt;/A&gt;&lt;BR&gt;AJAX control for&lt;BR&gt;Partial Updates&lt;/TD&gt;
&lt;TD&gt;&lt;a href="http://www.karamasoft.com/home.aspx?component=UltimateSearch&amp;amp;referrer=dnjue330"&gt;&lt;IMG src="http://www.karamasoft.com/Images/Product/UltimateSearch_50x50.jpg"&gt;&lt;/A&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;a href="http://www.karamasoft.com/home.aspx?component=UltimateSearch&amp;amp;referrer=dnjue330"&gt;UltimateSearch&lt;/A&gt;&lt;BR&gt;Search Engine for&lt;BR&gt;Your Site or CMS&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;&lt;a href="http://www.karamasoft.com/home.aspx?component=UltimateCalendar&amp;amp;referrer=dnjue330"&gt;&lt;IMG src="http://www.karamasoft.com/Images/Product/UltimateCalendar_50x50.jpg"&gt;&lt;/A&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;a href="http://www.karamasoft.com/home.aspx?component=UltimateCalendar&amp;amp;referrer=dnjue330"&gt;UltimateCalendar&lt;/A&gt;&lt;BR&gt;Popup Calendar with&lt;BR&gt;Date Picker&lt;/TD&gt;
&lt;TD&gt;&lt;a href="http://www.karamasoft.com/home.aspx?component=UltimateSitemap&amp;amp;referrer=dnjue330"&gt;&lt;IMG src="http://www.karamasoft.com/Images/Product/UltimateSitemap_50x50.jpg"&gt;&lt;/A&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;a href="http://www.karamasoft.com/home.aspx?component=UltimateSitemap&amp;amp;referrer=dnjue330"&gt;UltimateSitemap&lt;/A&gt;&lt;BR&gt;Sitemap of Your Website&lt;BR&gt;Breadcrumbs on All Pages&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;&lt;a href="http://www.karamasoft.com/home.aspx?component=UltimateEmail&amp;amp;referrer=dnjue330"&gt;&lt;IMG src="http://www.karamasoft.com/Images/Product/UltimateEmail_50x50.jpg"&gt;&lt;/A&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;a href="http://www.karamasoft.com/home.aspx?component=UltimateEmail&amp;amp;referrer=dnjue330"&gt;UltimateEmail&lt;/A&gt;&lt;BR&gt;Email Validator and&lt;BR&gt;Mail Merge&lt;/TD&gt;
&lt;TD&gt;&lt;a href="http://www.karamasoft.com/home.aspx?component=UltimateSpell&amp;amp;referrer=dnjue330"&gt;&lt;IMG src="http://www.karamasoft.com/Images/Product/UltimateSpell_50x50.jpg"&gt;&lt;/A&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;a href="http://www.karamasoft.com/home.aspx?component=UltimateSpell&amp;amp;referrer=dnjue330"&gt;UltimateSpell&lt;/A&gt;&lt;BR&gt;Microsoft Word&lt;SUP&gt;®&lt;/SUP&gt;-like&lt;BR&gt;Spell Checker&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;&lt;a href="http://www.karamasoft.com/home.aspx?component=UltimateMenu&amp;amp;referrer=dnjue330"&gt;&lt;IMG src="http://www.karamasoft.com/Images/Product/UltimateMenu_50x50.jpg"&gt;&lt;/A&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;a href="http://www.karamasoft.com/home.aspx?component=UltimateMenu&amp;amp;referrer=dnjue330"&gt;UltimateMenu&lt;/A&gt;&lt;BR&gt;Popup Menu with&lt;BR&gt;Visual Designer&lt;/TD&gt;
&lt;TD&gt;&lt;a href="http://www.karamasoft.com/home.aspx?component=UltimateTabstrip&amp;amp;referrer=dnjue330"&gt;&lt;IMG src="http://www.karamasoft.com/Images/Product/UltimateTabstrip_50x50.jpg"&gt;&lt;/A&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;a href="http://www.karamasoft.com/home.aspx?component=UltimateTabstrip&amp;amp;referrer=dnjue330"&gt;UltimateTabstrip&lt;/A&gt;&lt;BR&gt;Tabstrip and MultiPage&lt;BR&gt;In One Control&lt;/TD&gt;&lt;/TR&gt;&lt;/TABLE&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;TABLE&gt;

&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;&lt;B&gt;About Karamasoft&lt;/B&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;&lt;a href="http://www.karamasoft.com/?referrer=dnjue330"&gt;Karamasoft&lt;/A&gt; has been providing high-quality products for ASP.NET&lt;BR&gt;developers &lt;B&gt;since 2002&lt;/B&gt;. Karamasoft components are being used&lt;BR&gt;by thousands of developers in over &lt;B&gt;50 countries&lt;/B&gt;. Karamasoft has&lt;BR&gt;a strong customer base ranging from government agencies to&lt;BR&gt;universities, technology companies to financial institutions, and&lt;BR&gt;small businesses to &lt;B&gt;Fortune 500 companies&lt;/B&gt;.&lt;/TD&gt;&lt;/TR&gt;&lt;/TABLE&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;HR&gt;
&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;TABLE&gt;

&lt;TR&gt;
&lt;TD&gt;&lt;a href="http://www.karamasoft.com/?referrer=dnjue330"&gt;&lt;IMG title="The Ultimate Components for ASP.NET Developers" alt="The Ultimate Components for ASP.NET Developers" src="http://www.karamasoft.com/Images/Karamasoft.gif"&gt;&lt;/A&gt; &lt;/TD&gt;
&lt;TD&gt;19 Cambria&lt;BR&gt;Mission Viejo, CA 92692&lt;BR&gt;Toll Free: 1-800-401-7543&lt;/TD&gt;&lt;/TR&gt;&lt;/TABLE&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TABLE&gt;&lt;img src="http://www.dotnetjunkies.com/WebLog/aggbug.aspx?PostID=558461" width="1" height="1"&gt;</content><slash:comments>0</slash:comments><wfw:commentRss>http://www.dotnetjunkies.com/WebLog/familjones/commentrss.aspx?PostID=558461</wfw:commentRss></entry><entry><title>Karamasoft Released UltimateSearch 3.1 for ASP.NET</title><link rel="alternate" type="text/html" href="http://www.dotnetjunkies.com/WebLog/familjones/archive/2008/07/08/484625.aspx" /><id>58df7014-fd75-437c-9641-150997716d1c:484625</id><created>2008-07-08T09:56:00Z</created><content type="text/html" mode="escaped">&lt;a href="http://www.karamasoft.com/UltimateSearch/Overview.aspx"&gt;UltimateSearch 3.1&lt;/a&gt; has a lot of &lt;a href="http://www.karamasoft.com/UltimateSearch/History.aspx"&gt;new features and bug fixes&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Load Documents From Database&lt;/b&gt; - Use ".ashx" pages to load documents (pdf, doc, xls, ppt) from database in a content management system.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Windows Scheduled Task&lt;/b&gt; - Use the provided Windows executable program to update the dependency file based on your schedule.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Mobile Devices&lt;/b&gt; - Set the "User-Agent" parameter in the Config file so that your web server can index your website specifically for mobile devices.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Index Remote Documents&lt;/b&gt; - Documents (pdf, doc, xls, ppt) don't have to reside on your local machine or network anymore. You can index remote documents by specifying the links in "scanUrlList".&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.karamasoft.com/Download.aspx"&gt;&lt;img src="http://www.karamasoft.com/Images/Site/DownloadO.gif" border="0" alt="" /&gt;&lt;/a&gt;&lt;img src="http://www.dotnetjunkies.com/WebLog/aggbug.aspx?PostID=484625" width="1" height="1"&gt;</content><slash:comments>0</slash:comments><wfw:commentRss>http://www.dotnetjunkies.com/WebLog/familjones/commentrss.aspx?PostID=484625</wfw:commentRss></entry><entry><title>Karamasoft Released UltimateSpell 3.1 for ASP.NET</title><link rel="alternate" type="text/html" href="http://www.dotnetjunkies.com/WebLog/familjones/archive/2008/04/23/465829.aspx" /><id>58df7014-fd75-437c-9641-150997716d1c:465829</id><created>2008-04-23T10:04:00Z</created><content type="text/html" mode="escaped">&lt;a href="http://www.karamasoft.com/UltimateSpell/Overview.aspx"&gt;UltimateSpell 3.1&lt;/a&gt; has a lot of &lt;a href="http://www.karamasoft.com/UltimateSpell/History.aspx"&gt;new features and bug fixes&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Negative Filtering&lt;/b&gt; - You can now use the ControlIdsToCheck property to exclude editable areas from the spell checking process by adding a minus "-" prefix.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Auto Position&lt;/b&gt; - Spell as you type boxes are now automatically positioned whenever the page layout is changed after the page is loaded.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Auto Hide Scrollbar&lt;/b&gt; - Scrollbar in single line textbox is now hidden.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.karamasoft.com/Download.aspx"&gt;&lt;img src="http://www.karamasoft.com/Images/Site/DownloadO.gif" border="0" alt="" /&gt;&lt;/a&gt;&lt;img src="http://www.dotnetjunkies.com/WebLog/aggbug.aspx?PostID=465829" width="1" height="1"&gt;</content><slash:comments>0</slash:comments><wfw:commentRss>http://www.dotnetjunkies.com/WebLog/familjones/commentrss.aspx?PostID=465829</wfw:commentRss></entry><entry><title>JavaScript Tips for ASP.NET Developers - Part 2</title><link rel="alternate" type="text/html" href="http://www.dotnetjunkies.com/WebLog/familjones/archive/2007/09/18/315586.aspx" /><id>58df7014-fd75-437c-9641-150997716d1c:315586</id><created>2007-09-18T05:52:00Z</created><content type="text/html" mode="escaped">&lt;P&gt;&lt;A href="http://www.karamasoft.com/WhitePapers/WhitePapers.aspx"&gt;&lt;IMG src="http://www.karamasoft.com/Images/Site/JavaScriptTips.gif"&gt;&lt;/A&gt;&lt;BR&gt;&lt;BR&gt;&lt;STRONG&gt;Second part&lt;/STRONG&gt; of a white paper series essential for ASP.NET developers&lt;BR&gt;who want to build a powerful web UI.&lt;BR&gt;&lt;BR&gt;&lt;STRONG&gt;ASP.NET&lt;/STRONG&gt; server controls make your life easier on server-side,&lt;BR&gt;but you may still need to do some client-side programming to build a powerful UI.&lt;BR&gt;&lt;BR&gt;&lt;STRONG&gt;JavaScript&lt;/STRONG&gt; is the most widely used language on the client-side, and this&lt;BR&gt;&lt;STRONG&gt;FREE&lt;/FONT&gt;&lt;/STRONG&gt; &lt;STRONG&gt;white paper&lt;/STRONG&gt; by &lt;A href="http://www.karamasoft.com/"&gt;&lt;STRONG&gt;Karamasoft&lt;/STRONG&gt;&lt;/A&gt; is specifically composed&lt;BR&gt;for ASP.NET developers.&lt;BR&gt;&lt;BR&gt;&lt;A href="http://www.karamasoft.com/WhitePapers/WhitePapers.aspx"&gt;&lt;IMG src="http://www.karamasoft.com/Images/Site/DownloadB.gif"&gt;&lt;/A&gt;&lt;/P&gt;&lt;img src="http://www.dotnetjunkies.com/WebLog/aggbug.aspx?PostID=315586" width="1" height="1"&gt;</content><slash:comments>0</slash:comments><wfw:commentRss>http://www.dotnetjunkies.com/WebLog/familjones/commentrss.aspx?PostID=315586</wfw:commentRss></entry><entry><title>JavaScript Tips for ASP.NET Developers - Part 1</title><link rel="alternate" type="text/html" href="http://www.dotnetjunkies.com/WebLog/familjones/archive/2007/08/29/294842.aspx" /><id>58df7014-fd75-437c-9641-150997716d1c:294842</id><created>2007-08-29T09:56:00Z</created><content type="text/html" mode="escaped">&lt;A href="http://www.karamasoft.com/WhitePapers/WhitePapers.aspx"&gt;&lt;IMG src="http://www.karamasoft.com/Images/Site/JavaScriptTips.gif"&gt;&lt;/A&gt;&lt;BR&gt;&lt;BR&gt;&lt;B&gt;ASP.NET&lt;/B&gt; server controls make your life easier on server-side,&lt;BR&gt;but you may still need to do some client-side programming to build a powerful UI.&lt;BR&gt;&lt;BR&gt;&lt;B&gt;JavaScript&lt;/B&gt; is the most widely used language on the client-side, and this&lt;BR&gt;&lt;STRONG&gt;FREE&lt;/FONT&gt;&lt;/STRONG&gt; &lt;STRONG&gt;white paper&lt;/STRONG&gt; by &lt;STRONG&gt;&lt;A href="http://www.karamasoft.com"&gt;Karamasoft&lt;/A&gt;&lt;/STRONG&gt; is specifically composed&lt;BR&gt;for ASP.NET developers.&lt;BR&gt;&lt;BR&gt;&lt;A href="http://www.karamasoft.com/WhitePapers/WhitePapers.aspx"&gt;&lt;IMG src="http://www.karamasoft.com/Images/Site/DownloadB.gif"&gt;&lt;/A&gt;&lt;img src="http://www.dotnetjunkies.com/WebLog/aggbug.aspx?PostID=294842" width="1" height="1"&gt;</content><slash:comments>0</slash:comments><wfw:commentRss>http://www.dotnetjunkies.com/WebLog/familjones/commentrss.aspx?PostID=294842</wfw:commentRss></entry><entry><title>Karamasoft Released UltimateTabstrip for ASP.NET</title><link rel="alternate" type="text/html" href="http://www.dotnetjunkies.com/WebLog/familjones/archive/2007/07/13/263729.aspx" /><id>58df7014-fd75-437c-9641-150997716d1c:263729</id><created>2007-07-13T10:49:00Z</created><content type="text/html" mode="escaped">&lt;P&gt;&lt;A href="http://www.karamasoft.com/?component=UltimateTabstrip"&gt;&lt;IMG src="http://www.karamasoft.com/Images/Product/UltimateTabstrip.gif"&gt;&lt;/A&gt; &amp;nbsp; &lt;A href="http://www.karamasoft.com/?component=UltimateTabstrip"&gt;&lt;B&gt;UltimateTabstrip&lt;/B&gt;&lt;/A&gt; is a tabstrip and multipage control for ASP.NET.&lt;BR&gt;&lt;BR&gt;· &lt;B&gt;Built-in Schemes&lt;/B&gt; - Pick one of the ready-to-use schemes, and override it to build your own tabstrip style.&lt;BR&gt;&lt;BR&gt;· &lt;B&gt;OpenOn Behavior&lt;/B&gt; - Display the content of the active tab on mouse click or on mouse hover.&lt;BR&gt;&lt;BR&gt;· &lt;B&gt;Header &amp;amp; Content Template&lt;/B&gt; - Place ASP.NET server controls and HTML controls into your tab headers and contents.&lt;BR&gt;&lt;BR&gt;· &lt;B&gt;Orientation/Position/Alignment&lt;/B&gt; - Set your tabstrip layout to horizontal or vertical, set its position based on your content, and set its alignment accordingly.&lt;BR&gt;&lt;BR&gt;· &lt;B&gt;Hierarchical&lt;/B&gt; - Create hierarchical tabstrip structures by placing child tabstrips into parent tabstrips.&lt;BR&gt;&lt;BR&gt;· &lt;B&gt;MultiLine&lt;/B&gt; - Create multi-line tabstrip structures (horizontal or vertical).&lt;BR&gt;&lt;BR&gt;· &lt;B&gt;MultiPage&lt;/B&gt; - Create MultiPage views by hiding tab headers and using your own controls to navigate through tab contents.&lt;BR&gt;&lt;BR&gt;· &lt;B&gt;Accessibility&lt;/B&gt; - Build Section 508 Compliant tabstrips with keyboard support.&lt;BR&gt;&lt;BR&gt;· &lt;B&gt;Server-Side API&lt;/B&gt; - Detect the event fired when the ActiveTabIndex property changes and add/remove tabs and set their properties programmatically on the server-side.&lt;BR&gt;&lt;BR&gt;· &lt;B&gt;Client-Side API&lt;/B&gt; - Detect the tabstrip events, activate the tabs and set the tab properties programmatically on the client-side.&lt;BR&gt;&lt;BR&gt;· &lt;B&gt;Master Page / User Control&lt;/B&gt; - Place your tabstrip control inside a master page or a user control, and create your own website navigation.&lt;BR&gt;&lt;BR&gt;· &lt;B&gt;AJAX Integration&lt;/B&gt; - Built-in support for integration with both UltimateAjax and ASP.NET AJAX (former Atlas).&lt;BR&gt;&lt;BR&gt;· &lt;B&gt;Cross-Browser Support&lt;/B&gt; - IE5+, NS6+, Firefox 1.0+, Mozilla 1.0+, Opera 7.5+.&lt;/P&gt;
&lt;P&gt;&lt;A href="http://www.karamasoft.com/Samples.aspx?component=UltimateTabstrip"&gt;&lt;IMG src="http://www.karamasoft.com/Images/Site/LiveDemoO.gif"&gt;&lt;/A&gt; &amp;nbsp; &lt;A href="http://www.karamasoft.com/Download.aspx"&gt;&lt;IMG src="http://www.karamasoft.com/Images/Site/DownloadB.gif"&gt;&lt;/A&gt; &lt;BR&gt;&lt;BR&gt;&lt;A href="http://www.karamasoft.com/Samples.aspx?component=UltimateTabstrip"&gt;&lt;IMG src="http://www.karamasoft.com/images/snapshot/asp-net-tabstrip.gif"&gt;&lt;/A&gt;&lt;/P&gt;&lt;img src="http://www.dotnetjunkies.com/WebLog/aggbug.aspx?PostID=263729" width="1" height="1"&gt;</content><slash:comments>0</slash:comments><wfw:commentRss>http://www.dotnetjunkies.com/WebLog/familjones/commentrss.aspx?PostID=263729</wfw:commentRss></entry><entry><title>FREE Spell-Checker for ASP.NET using Word</title><link rel="alternate" type="text/html" href="http://www.dotnetjunkies.com/WebLog/familjones/archive/2007/05/17/236403.aspx" /><id>58df7014-fd75-437c-9641-150997716d1c:236403</id><created>2007-05-17T06:03:00Z</created><content type="text/html" mode="escaped">&lt;P&gt;It's pretty straightforward to use the spell-checking &lt;BR&gt;functionality of Microsoft Word in a Windows .NET &lt;BR&gt;application, but it's a little bit tricky to apply &lt;BR&gt;the same approach to an ASP.NET web application &lt;BR&gt;due to its stateless nature.&lt;/P&gt;
&lt;P&gt;This white paper explains how to implement a spell-checker &lt;BR&gt;for ASP.NET using Word.&lt;/P&gt;
&lt;P&gt;Source code is provided in both C# and VB for FREE.&lt;/P&gt;
&lt;P&gt;Note that you need a Microsoft Word license on your machine &lt;BR&gt;in order to use the software.&lt;/P&gt;
&lt;P&gt;&lt;A href="http://www.karamasoft.com/whitepapers/whitepapers.aspx"&gt;http://www.karamasoft.com/whitepapers/whitepapers.aspx&lt;/A&gt;&lt;/P&gt;&lt;img src="http://www.dotnetjunkies.com/WebLog/aggbug.aspx?PostID=236403" width="1" height="1"&gt;</content><slash:comments>0</slash:comments><wfw:commentRss>http://www.dotnetjunkies.com/WebLog/familjones/commentrss.aspx?PostID=236403</wfw:commentRss></entry><entry><title>Karamasoft Released UltimateEmail 1.0 for .NET</title><link rel="alternate" type="text/html" href="http://www.dotnetjunkies.com/WebLog/familjones/archive/2007/04/18/227751.aspx" /><id>58df7014-fd75-437c-9641-150997716d1c:227751</id><created>2007-04-18T11:53:00Z</created><content type="text/html" mode="escaped">&lt;A href="http://www.karamasoft.com/"&gt;&lt;B&gt;Karamasoft&lt;/B&gt;&lt;/A&gt; released a new product, &lt;A href="http://www.karamasoft.com/?component=UltimateEmail"&gt;&lt;B&gt;UltimateEmail&lt;/B&gt;&lt;/A&gt;, for email address validation and mail merge. &lt;BR&gt;&lt;BR&gt;UltimateEmail includes &lt;B&gt;two server controls&lt;/B&gt; that come in handy in your ASP.NET applications. You can also use the &lt;B&gt;server-side API&lt;/B&gt; in both Web and Windows applications. &lt;BR&gt;&lt;BR&gt;&lt;B&gt;UltimateEmailValidator&lt;/B&gt; control validates an email address in &lt;B&gt;4 levels&lt;/B&gt;: &lt;BR&gt;&lt;BR&gt;&lt;IMG src="http://www.karamasoft.com/Images/Site/bullet.jpg"&gt; &lt;I&gt;Syntax&lt;/I&gt;: email address syntax valid&lt;BR&gt;&lt;IMG src="http://www.karamasoft.com/Images/Site/bullet.jpg"&gt; &lt;I&gt;Domain&lt;/I&gt;: email server (MX record) set&lt;BR&gt;&lt;IMG src="http://www.karamasoft.com/Images/Site/bullet.jpg"&gt; &lt;I&gt;SMTP&lt;/I&gt;: email server up and running&lt;BR&gt;&lt;IMG src="http://www.karamasoft.com/Images/Site/bullet.jpg"&gt; &lt;I&gt;Account&lt;/I&gt;: email server has the address &lt;BR&gt;&lt;BR&gt;&lt;B&gt;UltimateEmailMerge&lt;/B&gt; control provides you with the mail merge functionality in order to send a template email to a list of people with customized delivery and content information. You can load it from any &lt;B&gt;data source&lt;/B&gt; such as: &lt;BR&gt;&lt;BR&gt;&lt;IMG src="http://www.karamasoft.com/Images/Site/bullet.jpg"&gt; DataSet, DataTable, DataView, DataReader&lt;BR&gt;&lt;IMG src="http://www.karamasoft.com/Images/Site/bullet.jpg"&gt; Collection, Array, ArrayList, XmlDocument&lt;BR&gt;&lt;IMG src="http://www.karamasoft.com/Images/Site/bullet.jpg"&gt; Text File, Comma-delimited String &lt;BR&gt;&lt;BR&gt;You can easily integrate it with &lt;B&gt;UltimateEditor&lt;/B&gt; in order to send a template email to your customers with the click of a toolbar button. It comes with sample applications in C# and VB for .NET 1.x and .NET 2.0.&lt;BR&gt;&lt;BR&gt;&lt;A href="http://www.karamasoft.com/Samples.aspx?component=UltimateEmail"&gt;&lt;IMG src="http://www.karamasoft.com/Images/Site/LiveDemoO.gif"&gt;&lt;/A&gt; &amp;nbsp; &lt;A href="http://www.karamasoft.com/Download.aspx"&gt;&lt;IMG src="http://www.karamasoft.com/Images/Site/DownloadB.gif"&gt;&lt;/A&gt;&lt;img src="http://www.dotnetjunkies.com/WebLog/aggbug.aspx?PostID=227751" width="1" height="1"&gt;</content><slash:comments>0</slash:comments><wfw:commentRss>http://www.dotnetjunkies.com/WebLog/familjones/commentrss.aspx?PostID=227751</wfw:commentRss></entry><entry><title>AJAXify your web pages with Karamasoft UISuite</title><link rel="alternate" type="text/html" href="http://www.dotnetjunkies.com/WebLog/familjones/archive/2007/02/02/191201.aspx" /><id>58df7014-fd75-437c-9641-150997716d1c:191201</id><created>2007-02-02T04:41:00Z</created><content type="text/html" mode="escaped">Karamasoft released new versions to support AJAX, and to introduce new &lt;BR&gt;features. You can now easily integrate your web pages with UltimateAjax, and &lt;BR&gt;ASP.NET AJAX (former Atlas).&lt;BR&gt;&lt;BR&gt;&lt;A href="http://www.karamasoft.com"&gt;http://www.karamasoft.com&lt;/A&gt;&lt;img src="http://www.dotnetjunkies.com/WebLog/aggbug.aspx?PostID=191201" width="1" height="1"&gt;</content><slash:comments>0</slash:comments><wfw:commentRss>http://www.dotnetjunkies.com/WebLog/familjones/commentrss.aspx?PostID=191201</wfw:commentRss></entry><entry><title>Karamasoft Released UltimateCallback 1.0 for ASP.NET</title><link rel="alternate" type="text/html" href="http://www.dotnetjunkies.com/WebLog/familjones/archive/2006/03/30/136475.aspx" /><id>58df7014-fd75-437c-9641-150997716d1c:136475</id><created>2006-03-30T04:34:00Z</created><content type="text/html" mode="escaped">&lt;A href="http://www.karamasoft.com/"&gt;Karamasoft&lt;/A&gt; announced the initial release of UltimateCallback, an ASP.NET server control to provide callback functionality in your web applications. This control allows you to make web pages more responsive by exchanging data with the server behind the scenes. Every time the user initiates a callback request UltimateCallback control refreshes only its own contents instead of reloading the entire web page as in the case of a regular postback to server.&lt;BR&gt;&lt;BR&gt;&lt;IMG src="http://www.karamasoft.com/Images/Snapshot/asp-net-callback.gif"&gt;&lt;BR&gt;&lt;BR&gt;UltimateCallback allows web developers to AJAX-enable their web applications to increase interactivity, speed and usability. Even though remote scripting technology was known and has been used for several years there has not been a robust framework to interact with the server easily. Now you can just locate an UltimateCallback control onto your web form, and drag and drop HTML and ASP.NET controls into the UltimateCallback panel. All you have to do is to initiate a callback request from client-side and handle the request in the Callback event handler on the server-side. You're done. You will notice that only the contents of the UltimateCallback control will be updated automatically whenever the user makes a callback to server.&lt;BR&gt;&lt;BR&gt;If you want to override the rendering mechanism you can achieve this either on the server-side or client-side based on your needs. You can return the successful callback result to a client-side function, while returning callback error to another client-side function for exception handling. You can display an HTML block while processing the callback request as well.&lt;BR&gt;&lt;BR&gt;You can also enable caching in order to cache callback arguments and results on the client-side to improve performance. If you want to work with the latest values on the web form you can get the latest state of all form elements along with the callback request. You can initiate callbacks automatically at specified intervals in milliseconds without a single line of coding. The control provides down-level browser support by handling callback requests as regular postbacks when XMLHTTP is not supported.&lt;BR&gt;&lt;BR&gt;For more information visit &lt;A href="http://www.karamasoft.com/UltimateCallback/Overview.aspx"&gt;http://www.karamasoft.com/UltimateCallback/Overview.aspx&lt;/A&gt;. For samples visit &lt;A href="http://www.karamasoft.com/Samples.aspx?component=UltimateCallback"&gt;http://www.karamasoft.com/Samples.aspx?component=UltimateCallback&lt;/A&gt;.&lt;img src="http://www.dotnetjunkies.com/WebLog/aggbug.aspx?PostID=136475" width="1" height="1"&gt;</content><slash:comments>0</slash:comments><wfw:commentRss>http://www.dotnetjunkies.com/WebLog/familjones/commentrss.aspx?PostID=136475</wfw:commentRss></entry><entry><title>Karamasoft gives a new meaning to UI: Ultimate Interface™</title><link rel="alternate" type="text/html" href="http://www.dotnetjunkies.com/WebLog/familjones/archive/2004/09/15/25750.aspx" /><id>58df7014-fd75-437c-9641-150997716d1c:25750</id><created>2004-09-15T12:36:00Z</created><content type="text/html" mode="escaped">&lt;P&gt;Karamasoft released a brand-new website navigation product, &lt;STRONG&gt;ASP.NET Sitemap Suite 1.0&lt;/STRONG&gt;. It is composed of UltimateSitemap and UltimateSitemapPath server controls.&lt;/P&gt;
&lt;P&gt;UltimateSitemap control automatically generates a sitemap of your web application in a table or treeview format. It has a built-in visual designer, Sitemap Builder, fully integrated into VS.NET. UltimateSitemapPath control generates a navigation path (breadcrumb) on your web pages. Visit &lt;A href="http://www.karamasoft.com" target=_blank&gt;www.karamasoft.com&lt;/A&gt; to see this new product.&lt;/P&gt;
&lt;P&gt;Karamasoft also introduced &lt;STRONG&gt;Support Forums&lt;/STRONG&gt; for developers to share and exchange information, knowledge and sample code. Visit &lt;A href="http://www.karamasoft.com/forums" target=_blank&gt;www.karamasoft.com/forums&lt;/A&gt; to see the new forums website.&lt;/P&gt;&lt;img src="http://www.dotnetjunkies.com/WebLog/aggbug.aspx?PostID=25750" width="1" height="1"&gt;</content><slash:comments>0</slash:comments><wfw:commentRss>http://www.dotnetjunkies.com/WebLog/familjones/commentrss.aspx?PostID=25750</wfw:commentRss></entry><entry><title>Pass Variables Between ASP.NET Pages</title><link rel="alternate" type="text/html" href="http://www.dotnetjunkies.com/WebLog/familjones/archive/2004/04/08/11020.aspx" /><id>58df7014-fd75-437c-9641-150997716d1c:11020</id><created>2004-04-08T07:13:00Z</created><content type="text/html" mode="escaped">&lt;P&gt;You can always pass variables between ASP.NET pages as part of a query string in the URL. If your form is not running at server you can also use the Request object to retrieve the values of the form elements (especially hidden input elements for this purpose). However, if you have a form with runat=server, and you don't want to expose the variables to the user then your choices are limited. Here is a way to pass variables between ASP.NET pages:&lt;/P&gt;
&lt;P dir=ltr style="MARGIN-RIGHT: 0px"&gt;1. In your &lt;EM&gt;SendingPage.aspx&lt;/EM&gt; add an item to the &lt;STRONG&gt;context&lt;/STRONG&gt;.&lt;BR&gt;&lt;FONT face="Courier New" size=2&gt;&amp;nbsp; Dim variableToPass as String = "Passed Value"&lt;BR&gt;&amp;nbsp; Context.Items.Add("variableToPass", variableToPass)&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;2. In your &lt;EM&gt;SendingPage.aspx&lt;/EM&gt; call &lt;STRONG&gt;Server.Transfer&lt;/STRONG&gt; to transfer to your &lt;EM&gt;ReceivingPage.aspx&lt;/EM&gt;.&lt;BR&gt;&lt;FONT face="Courier New" size=2&gt;&amp;nbsp; Server.Transfer("ReceivingPage.aspx", True)&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;3. In your &lt;EM&gt;ReceivingPage.aspx&lt;/EM&gt; retrieve the variable from the &lt;STRONG&gt;context&lt;/STRONG&gt;.&lt;BR&gt;&lt;FONT face="Courier New" size=2&gt;&amp;nbsp; Dim receivedValue As String&lt;BR&gt;&amp;nbsp; receivedValue = Context.Items("variableToPass")&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;Note that&amp;nbsp;the page URL in the address bar of the browser window will&amp;nbsp;stay as &lt;EM&gt;SendingPage.aspx&lt;/EM&gt; even though you&amp;nbsp;are now in&amp;nbsp;&lt;EM&gt;ReceivingPage.aspx&lt;/EM&gt;. You can get more information on &lt;EM&gt;Server.Transfer vs. Response.Redirect&lt;/EM&gt; at &lt;A href="http://www.developer.com/net/asp/article.php/3299641"&gt;http://www.developer.com/net/asp/article.php/3299641&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;If you are interested in passing &lt;EM&gt;server control values&lt;/EM&gt; between ASP.NET pages please refer to &lt;A href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpguide/html/cpconPassingServerControlValuesBetweenPages.asp"&gt;http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpguide/html/cpconPassingServerControlValuesBetweenPages.asp&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;Famil Jones,&lt;BR&gt;&lt;A href="http://www.karamasoft.com/"&gt;Karamasoft&lt;/A&gt;&lt;/P&gt;&lt;img src="http://www.dotnetjunkies.com/WebLog/aggbug.aspx?PostID=11020" width="1" height="1"&gt;</content><slash:comments>3</slash:comments><wfw:commentRss>http://www.dotnetjunkies.com/WebLog/familjones/commentrss.aspx?PostID=11020</wfw:commentRss></entry><entry><title>Trap window close event for IE browser</title><link rel="alternate" type="text/html" href="http://www.dotnetjunkies.com/WebLog/familjones/archive/2004/04/06/10884.aspx" /><id>58df7014-fd75-437c-9641-150997716d1c:10884</id><created>2004-04-06T13:54:00Z</created><content type="text/html" mode="escaped">&lt;P&gt;Let's say you want to trap the window close event for the web browser so that you can give a confirmation dialog asking if the user is sure to leave the page. The problem is that there is no &lt;STRONG&gt;onclose&lt;/STRONG&gt; event for the &lt;STRONG&gt;window&lt;/STRONG&gt; object. The closest event might be &lt;STRONG&gt;onunload&lt;/STRONG&gt; since it fires immediately before the window object is unloaded. However, when the &lt;STRONG&gt;onunload&lt;/STRONG&gt; event fires it is too late to display a JavaScript alert. Therefore, we need an event that fires prior to a page being unloaded, which is &lt;STRONG&gt;&lt;FONT color=#ff0000&gt;onbeforeunload&lt;/FONT&gt;&lt;/STRONG&gt;. Define &lt;STRONG&gt;onbeforeunload&lt;/STRONG&gt; event in your page &lt;STRONG&gt;&lt;FONT color=#0000ff&gt;&amp;lt;&lt;/FONT&gt;&lt;FONT color=#a52a2a&gt;BODY&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;&amp;gt;&lt;/FONT&gt;&lt;/STRONG&gt; element as follows:&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;&lt;STRONG&gt;&amp;lt;&lt;/STRONG&gt;&lt;/FONT&gt;&lt;FONT color=#a52a2a&gt;&lt;STRONG&gt;BODY &lt;/STRONG&gt;&lt;/FONT&gt;&lt;FONT color=#000000&gt;&lt;FONT color=#ff0000&gt;onbeforeunload&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;="HandleOnClose()"&lt;STRONG&gt;&amp;gt;&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;Then, add the following JavaScript code into the &lt;STRONG&gt;&lt;FONT color=#0000ff&gt;&amp;lt;&lt;/FONT&gt;&lt;FONT color=#a52a2a&gt;HEAD&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;&amp;gt;&lt;/FONT&gt;&lt;/STRONG&gt; section of your &lt;STRONG&gt;ASPX&lt;/STRONG&gt; page:&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;&amp;lt;&lt;/FONT&gt;&lt;FONT color=#a52a2a&gt;script&lt;/FONT&gt; &lt;FONT color=#ff0000&gt;language&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;="javascript"&amp;gt;&lt;BR&gt;&lt;/FONT&gt;&amp;lt;!--&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;function&lt;/FONT&gt; HandleOnClose() {&lt;BR&gt;&amp;nbsp;&amp;nbsp; if (&lt;FONT color=#0000ff&gt;event&lt;/FONT&gt;.clientY &amp;lt; 0) {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT color=#0000ff&gt;event&lt;/FONT&gt;.returnValue = 'Are you sure you want to leave the page?';&lt;BR&gt;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;}&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#008000&gt;//--&amp;gt;&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;&amp;lt;/&lt;/FONT&gt;&lt;FONT color=#a52a2a&gt;script&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;&amp;gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;The trick here is to check &lt;STRONG&gt;clientY&lt;/STRONG&gt; property of the&amp;nbsp;&lt;STRONG&gt;event&lt;/STRONG&gt; object, which is used to set or retrieve the y-coordinate of the mouse pointer's position relative to the client area of the window, excluding window decorations and scroll bars. This way, you can detect if the user clicked on &lt;STRONG&gt;X&lt;/STRONG&gt; button to close the page, or clicked on &lt;STRONG&gt;Refresh&lt;/STRONG&gt; button to refresh the page, etc. This approach does not handle key events such as &lt;STRONG&gt;Alt-F4&lt;/STRONG&gt; that lets the user close the window by using the keyboard. You have to handle keyboard events separately and this issue might be a topic for another article...&lt;/P&gt;
&lt;P&gt;Famil Jones,&lt;BR&gt;&lt;A href="http://www.karamasoft.com/"&gt;Karamasoft&lt;/A&gt;&lt;/P&gt;&lt;img src="http://www.dotnetjunkies.com/WebLog/aggbug.aspx?PostID=10884" width="1" height="1"&gt;</content><slash:comments>0</slash:comments><wfw:commentRss>http://www.dotnetjunkies.com/WebLog/familjones/commentrss.aspx?PostID=10884</wfw:commentRss></entry><entry><title>TAB inside textarea (and textbox)?</title><link rel="alternate" type="text/html" href="http://www.dotnetjunkies.com/WebLog/familjones/archive/2004/04/01/10607.aspx" /><id>58df7014-fd75-437c-9641-150997716d1c:10607</id><created>2004-04-01T17:51:00Z</created><content type="text/html" mode="escaped">&lt;P&gt;When you want to insert a &lt;STRONG&gt;TAB&lt;/STRONG&gt; character inside a &lt;STRONG&gt;textarea&lt;/STRONG&gt; (or a &lt;STRONG&gt;textbox&lt;/STRONG&gt;) in a web page, you press &lt;STRONG&gt;TAB&lt;/STRONG&gt; key and the focus moves to another field in the page instead of a &lt;STRONG&gt;TAB&lt;/STRONG&gt;&amp;nbsp;character&amp;nbsp;being inserted into the textarea. The problem is that &lt;STRONG&gt;TAB&lt;/STRONG&gt; key is reserved for web pages to navigate through the objects that can be focused (or blurred) inside the web page.&lt;BR&gt;&amp;nbsp;&lt;BR&gt;&lt;STRONG&gt;TAB&lt;/STRONG&gt; characters are especially useful when you want to display formatted text in your HTML text field. In order to solve this problem, we need to override one of &lt;STRONG&gt;onkey&lt;/STRONG&gt; related events of the text field so that the &lt;STRONG&gt;TAB&lt;/STRONG&gt; character would be inserted where the cursor stays instead of the text field losing the focus to the next control in the web page.&amp;nbsp;There are&amp;nbsp;three &lt;STRONG&gt;onkey&lt;/STRONG&gt; related events: &lt;STRONG&gt;onkeydown&lt;/STRONG&gt;, &lt;STRONG&gt;onkeyup&lt;/STRONG&gt; and &lt;STRONG&gt;onkeypress&lt;/STRONG&gt; for an HTML text field. However, &lt;STRONG&gt;onkeypress&lt;/STRONG&gt; only fires for some special character set and it does not fire for the &lt;STRONG&gt;TAB&lt;/STRONG&gt; key. Therefore, we can&amp;nbsp;only use &lt;STRONG&gt;onkeydown&lt;/STRONG&gt; or &lt;STRONG&gt;onkeyup&lt;/STRONG&gt;. We will use &lt;STRONG&gt;onkeydown&lt;/STRONG&gt; event since it fires as soon as the user presses a key, not when the user releases a key.&lt;/P&gt;
&lt;P&gt;Define &lt;STRONG&gt;onkeydown&lt;/STRONG&gt; event for the &lt;STRONG&gt;asp:textbox&lt;/STRONG&gt; controls in &lt;STRONG&gt;&lt;FONT color=#0000ff&gt;&amp;lt;&lt;/FONT&gt;&lt;FONT color=#a52a2a&gt;BODY&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;&amp;gt;&lt;/FONT&gt;&lt;/STRONG&gt; section of your &lt;STRONG&gt;ASPX&lt;/STRONG&gt; page as follows:&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;&amp;lt;&lt;/FONT&gt;&lt;FONT color=#a52a2a&gt;asp:textbox&lt;/FONT&gt; &lt;FONT color=#ff0000&gt;id&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;="TextBox1"&lt;/FONT&gt; &lt;FONT color=#ff0000&gt;runat&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;="server"&lt;/FONT&gt; &lt;FONT color=#ff0000&gt;width&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;="520px"&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;&amp;gt;&lt;/FONT&gt;Press TAB key to move the focus to the next field when the cursor is here...&lt;FONT color=#0000ff&gt;&amp;lt;&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;/&lt;/FONT&gt;&lt;FONT color=#a52a2a&gt;asp:textbox&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;&amp;gt;&amp;lt;&lt;/FONT&gt;&lt;FONT color=#a52a2a&gt;br&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;&amp;gt;&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;&amp;lt;&lt;/FONT&gt;&lt;FONT color=#a52a2a&gt;asp:textbox&lt;/FONT&gt; &lt;FONT color=#ff0000&gt;id&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;="TextBox2"&lt;/FONT&gt; &lt;FONT color=#ff0000&gt;runat&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;="server"&lt;/FONT&gt; &lt;STRONG&gt;&lt;FONT color=#ff0000&gt;onkeydown&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;="HandleKeyDown(this);"&lt;/FONT&gt;&lt;/STRONG&gt; &lt;FONT color=#ff0000&gt;width&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;="520px"&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;&amp;gt;&lt;/FONT&gt;Press TAB key to insert a tab character into this textbox when the cursor is here...&lt;FONT color=#0000ff&gt;&amp;lt;/&lt;/FONT&gt;&lt;FONT color=#a52a2a&gt;asp:textbox&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;&amp;gt;&amp;lt;&lt;/FONT&gt;&lt;FONT color=#a52a2a&gt;br&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;&amp;gt;&lt;/FONT&gt;&lt;BR&gt;&lt;FONT color=#0000ff&gt;&amp;lt;&lt;/FONT&gt;&lt;FONT color=#a52a2a&gt;asp:textbox&lt;/FONT&gt; &lt;FONT color=#ff0000&gt;id&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;="TextArea1"&lt;/FONT&gt; &lt;FONT color=#ff0000&gt;runat&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;="server"&lt;/FONT&gt; &lt;STRONG&gt;&lt;FONT color=#ff0000&gt;onkeydown&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;="HandleKeyDown(this);"&lt;/FONT&gt;&lt;/STRONG&gt; &lt;FONT color=#ff0000&gt;width&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;="520px"&lt;/FONT&gt; &lt;FONT color=#ff0000&gt;height&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;="200px"&lt;/FONT&gt; &lt;FONT color=#ff0000&gt;textmode&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;="MultiLine"&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;&amp;gt;&lt;/FONT&gt;Press TAB key to insert a tab character into this textarea when the cursor is here...&lt;FONT color=#0000ff&gt;&amp;lt;/&lt;/FONT&gt;&lt;FONT color=#a52a2a&gt;asp:textbox&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;&amp;gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;Then, add the following &lt;STRONG&gt;JavaScript&lt;/STRONG&gt; code into &lt;STRONG&gt;&lt;FONT color=#0000ff&gt;&amp;lt;&lt;/FONT&gt;&lt;FONT color=#a52a2a&gt;HEAD&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;&amp;gt;&lt;/FONT&gt;&lt;/STRONG&gt; section of your &lt;STRONG&gt;ASPX&lt;/STRONG&gt; page:&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;&amp;lt;&lt;/FONT&gt;&lt;FONT color=#a52a2a&gt;script&lt;/FONT&gt; &lt;FONT color=#ff0000&gt;language&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;="javascript"&amp;gt;&lt;BR&gt;&lt;/FONT&gt;&amp;lt;!--&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;function&lt;/FONT&gt; HandleKeyDown(obj) {&lt;BR&gt;&lt;FONT color=#0000ff&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;var&lt;/FONT&gt; tabKeyCode = 9;&lt;BR&gt;&lt;FONT color=#0000ff&gt;&amp;nbsp;&amp;nbsp; if&lt;/FONT&gt; (&lt;FONT color=#0000ff&gt;event&lt;/FONT&gt;.keyCode == tabKeyCode &amp;amp;&amp;amp; &lt;FONT color=#0000ff&gt;event&lt;/FONT&gt;.srcElement == obj) {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; obj.selection = document.selection.createRange();&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; obj.selection.text = String.fromCharCode(tabKeyCode);&lt;BR&gt;&lt;FONT color=#0000ff&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; event&lt;/FONT&gt;.returnValue = &lt;FONT color=#0000ff&gt;false&lt;/FONT&gt;;&lt;BR&gt;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;}&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#008000&gt;//--&amp;gt;&lt;/FONT&gt;&lt;BR&gt;&lt;FONT color=#0000ff&gt;&amp;lt;/&lt;/FONT&gt;&lt;FONT color=#a52a2a&gt;script&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;&amp;gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;The above code will only work for &lt;STRONG&gt;IE browsers&lt;/STRONG&gt;. You&amp;nbsp;will need to handle the &lt;STRONG&gt;onkeydown&lt;/STRONG&gt; event differently for other browsers.&lt;/P&gt;
&lt;P&gt;By using the above&amp;nbsp;technique, we solved &lt;STRONG&gt;TAB in textarea&lt;/STRONG&gt; problem in the &lt;STRONG&gt;Menu CSS&lt;/STRONG&gt; text area in our &lt;A href="http://www.karamasoft.com/MenuSuite/MenuBuilder.aspx"&gt;&lt;STRONG&gt;MenuBuilder&lt;/STRONG&gt;&lt;/A&gt;&amp;nbsp;(visual menu designer) application&amp;nbsp;of our &lt;STRONG&gt;ASP.NET Menu&lt;/STRONG&gt; product, &lt;A href="http://www.karamasoft.com/"&gt;&lt;STRONG&gt;Karamasoft&lt;/STRONG&gt;&lt;/A&gt; &lt;A href="http://www.karamasoft.com/MenuSuite/Overview.aspx"&gt;&lt;STRONG&gt;MenuSuite&amp;#8482;&lt;/STRONG&gt;&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;Famil Jones,&lt;BR&gt;&lt;A href="http://www.karamasoft.com/"&gt;Karamasoft&lt;/A&gt;&lt;/P&gt;&lt;img src="http://www.dotnetjunkies.com/WebLog/aggbug.aspx?PostID=10607" width="1" height="1"&gt;</content><slash:comments>0</slash:comments><wfw:commentRss>http://www.dotnetjunkies.com/WebLog/familjones/commentrss.aspx?PostID=10607</wfw:commentRss></entry></feed>