<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://www.infragistics.com/community/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Tom Puglisi</title><link>http://www.infragistics.com/community/blogs/tom_puglisi/default.aspx</link><description /><dc:language>en</dc:language><generator>CommunityServer 2008.5 SP3 (Build: 36.8414)</generator><item><title>UltraMediaPlayer CAB Walkthrough</title><link>http://www.infragistics.com/community/blogs/tom_puglisi/archive/2012/07/11/ultramediaplayer-cab-walkthrough.aspx</link><pubDate>Wed, 11 Jul 2012 21:21:00 GMT</pubDate><guid isPermaLink="false">7a8b7c76-b7ad-48e0-9694-5b04ca132ed0:362017</guid><dc:creator>[Infragistics] Tom Puglisi</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.infragistics.com/community/blogs/tom_puglisi/rsscomments.aspx?PostID=362017</wfw:commentRss><comments>http://www.infragistics.com/community/blogs/tom_puglisi/archive/2012/07/11/ultramediaplayer-cab-walkthrough.aspx#comments</comments><description>&lt;p&gt;Hey everyone,&lt;/p&gt;
&lt;p&gt;To help those people that are using Windows Forms and Microsoft CAB, I decided to clean up and update my &amp;quot;Ultra Media Player&amp;quot; Reference application and tell you all about it. &lt;br /&gt;&lt;br /&gt;I created a video that walks you through the technical aspects of the application, as well as some aspects of Microsoft CAB (Composite UI Application Block), Infragistics CAB Utility Kit, as well as how you can make an awesome Media Player application using the time proven Infragistics Windows Forms controls ALONG WITH CAB!&lt;/p&gt;
&lt;p&gt;Due to quite a few questions on Windows Forms, CAB, and the&amp;nbsp;Infragistics Composite UI Application Block Extension kit, I felt that this reference app and walkthrough would be the best way to communicate things such as:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;How the Infragistics CAB functionality is set up in the sample app (igFormShellApplication)&lt;/li&gt;
&lt;li&gt;How Infragistics UI Elements (buttons, menu items, etc) are created in ONE module, then passed off to the SHELL without actually being any references&lt;/li&gt;
&lt;li&gt;How to create and load Smart Parts into the awesome Infragistics Windows Forms based WorkSpaces such as the DockManager workspace, Tabbed MDI workspace, etc&lt;/li&gt;
&lt;li&gt;How to use the CAB Event Broker to PUBLISH and SUBSCRIBE to events to update the UI across unreferenced assembly boundaries.&lt;/li&gt;
&lt;li&gt;I also have an awesome Draw Filter (Infragistics Windows Forms&amp;#39;s technique of hijacking the PAINTING of controls to do things YOUR way) that I created to achieve a load-on-demand strategy for accessing media files, extracting a video snapshot and loading it into the Infragistics WinListView control.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src="http://media.infragistics.com/community/winforms/media/Common/UltraMediaPlayer_CAB_Walkthrough.mp4.bmp" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;Please watch the video and download the sample application (links below). Review the code, comments, and enjoy!&lt;/p&gt;
&lt;p&gt;&lt;a title="Watch Video Here" href="http://media.infragistics.com/community/winforms/media/Common/UltraMediaPlayer_CAB_Walkthrough.mp4"&gt;Watch Video Here&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://download.infragistics.com/users/TomP/UltraMediaPlayer_UPDATED.zip"&gt;Download Sample Application Here&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.infragistics.com/community/aggbug.aspx?PostID=362017" width="1" height="1"&gt;</description><category domain="http://www.infragistics.com/community/blogs/tom_puglisi/archive/tags/Windows+Forms/default.aspx">Windows Forms</category><category domain="http://www.infragistics.com/community/blogs/tom_puglisi/archive/tags/Draw+Filter/default.aspx">Draw Filter</category><category domain="http://www.infragistics.com/community/blogs/tom_puglisi/archive/tags/Composite+UI+Application+Block/default.aspx">Composite UI Application Block</category><category domain="http://www.infragistics.com/community/blogs/tom_puglisi/archive/tags/CAB/default.aspx">CAB</category></item><item><title>Insert Dynamic Images in Infragistics Reporting</title><link>http://www.infragistics.com/community/blogs/tom_puglisi/archive/2012/02/01/insert-dynamic-images-in-infragistics-reporting.aspx</link><pubDate>Wed, 01 Feb 2012 21:25:00 GMT</pubDate><guid isPermaLink="false">7a8b7c76-b7ad-48e0-9694-5b04ca132ed0:329585</guid><dc:creator>[Infragistics] Tom Puglisi</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.infragistics.com/community/blogs/tom_puglisi/rsscomments.aspx?PostID=329585</wfw:commentRss><comments>http://www.infragistics.com/community/blogs/tom_puglisi/archive/2012/02/01/insert-dynamic-images-in-infragistics-reporting.aspx#comments</comments><description>&lt;p&gt;&lt;span style="font-size:small;"&gt;&lt;a href="http://www.infragistics.com/dotnet/netadvantage/reporting.aspx#Overview"&gt;Infragistics Reporting&lt;/a&gt; is an awesome product that you can use to add reports to your applications. I know many of you have &lt;a href="http://www.infragistics.com/dotnet/netadvantage/winforms.aspx#Overview"&gt;Windows Forms&lt;/a&gt; applications and are thinking of using the IG Reporting to quickly add a rich set of reports. I ALSO know that there are customers that have custom controls that they have invested TONS of time in creating, for example, custom scientific charts (wink!) and would LOVE to see them in the Infragistics Reports. Well, with the technique used in this article, you can do this, provided you can convert your custom control into an image. This technique takes advantage of the Infragistics Reporting product&amp;rsquo;s Image control&amp;rsquo;s &lt;a href="http://help.infragistics.com/NetAdvantage/reporting/2011.2/CLR4.0?page=Image_Using_the_Image_Control.html"&gt;ability to dynamically pick up images&lt;/a&gt; on the file system each time the report is generated. In this topic, I will use the Infragistics Windows Forms &lt;a href="http://www.infragistics.com/dotnet/netadvantage/winforms/winchart.aspx#Overview"&gt;UltraWinChart&lt;/a&gt; as my &amp;ldquo;custom control that I want to add to the report&amp;rdquo;.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:small;"&gt;&lt;a href="http://media.infragistics.com/community/Release/11.2/WinForms/NetAdvantage_Reporting_in_WinForms2.zip"&gt;Download the sample here.&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:small;"&gt;&amp;nbsp;&lt;img src="http://media.infragistics.com/community/Release/11.2/WinForms/Insert_Dynamic_Images_in_Infragistics_Reporting.png" height="401" width="644" alt="" /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h2&gt;Logic&lt;/h2&gt;
&lt;p&gt;&lt;span style="font-size:small;"&gt;The execution logic is simple:&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style="font-size:small;"&gt;Convert your control into an image and save it to disk. The Infragistics UltraWinChart &lt;a href="http://help.infragistics.com/NetAdvantage/WinForms/2011.2/CLR2.0/?page=Infragistics2.Win.UltraWinChart.v11.2~Infragistics.Win.UltraWinChart.UltraChart~SaveTo.html"&gt;has a method for that&lt;/a&gt;, so it is easy.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-size:small;"&gt;Refresh your report&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-size:small;"&gt;THAT&amp;rsquo;S IT!&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;pre name="code" class="C#"&gt;        private void LoadData()
        {
            //Add dummy data to the chart control:
            this.ultraChart1.Data.DataSource = 
                Infragistics.UltraChart.Data.DemoTable.AllPositive();
            this.ultraChart1.Data.DataBind();

            //Dump an image of the chart control:
            this.ultraChart1.SaveTo(
                Application.StartupPath + @&amp;quot;\Images\A.jpg&amp;quot;, 
                System.Drawing.Imaging.ImageFormat.Jpeg);

            //Render the report:
            this.ultraReportViewer1.RefreshReport();
        }
&lt;/pre&gt;
&lt;h2&gt;Project and Report Setup&lt;/h2&gt;
&lt;p&gt;&lt;span style="font-size:small;"&gt;That&amp;rsquo;s easy too. Add an Infragistics Reporting Image control to your report and set its ImageURL Property to a valid path and filename for your image. Remember, you will be generating that actual image and naming it as you have specified in the ImageURL Property, so keep that in mind.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:small;"&gt;&lt;img src="http://media.infragistics.com/community/Release/11.2/WinForms/Insert_Dynamic_Images_in_Infragistics_Reporting2.png" height="252" width="504" alt="" /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:small;"&gt;That&amp;rsquo;s it! You can use this technique to dump ANY of your controls or anything else into an Image that will get picked up by the Infragistics Report at runtime!&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.infragistics.com/community/aggbug.aspx?PostID=329585" width="1" height="1"&gt;</description></item><item><title>WinGrid Runtime Config and Persistence</title><link>http://www.infragistics.com/community/blogs/tom_puglisi/archive/2012/01/26/wingrid-runtime-config-and-persistence.aspx</link><pubDate>Thu, 26 Jan 2012 21:20:00 GMT</pubDate><guid isPermaLink="false">7a8b7c76-b7ad-48e0-9694-5b04ca132ed0:328243</guid><dc:creator>[Infragistics] Tom Puglisi</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.infragistics.com/community/blogs/tom_puglisi/rsscomments.aspx?PostID=328243</wfw:commentRss><comments>http://www.infragistics.com/community/blogs/tom_puglisi/archive/2012/01/26/wingrid-runtime-config-and-persistence.aspx#comments</comments><description>&lt;p&gt;&lt;span style="font-size:small;"&gt;Ever wanted to create a WinForms app that uses WinGrid and expose the powerful control API to your end users so that they can totally customize columns, add formulas, style the look and feel, even add, remove and hide columns, or JUST ABOUT ANYTHING that you can typically do in Microsoft&amp;trade; Visual Studio though the Property Window? Well, check out this blog post and you CAN!&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="http://media.infragistics.com/community/Release/11.2/WinForms/wingrid_load_and_save_layouts_02.png" height="609" width="703" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:small;"&gt;In this sample (&lt;a href="http://media.infragistics.com/community/Release/11.2/WinForms/WinGrid_Save_Load_Layout.zip"&gt;feel free to download it&lt;/a&gt;), I have the Infragistics NetAdvantage Windows Forms WinGrid control along with a Microsoft Property Grid control thrown onto the form. I am also using the NetAdvantage &lt;a href="http://www.infragistics.com/dotnet/netadvantage/winforms/wintilepanel.aspx#Overview"&gt;WinTilePanel&lt;/a&gt; control to allow you to move the various controls around the screen however you like. The Property Grid control is hooked up to the WinGrid control&amp;rsquo;s DisplayLayout property. The DisplayLayout property essentially contains ALL of the WinGrid control&amp;rsquo;s important property settings related to its functionality, behaviors, features, schema, and so forth. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:small;"&gt;With this kind of setup, you can run the application and then play around with the various property settings at runtime. However, the awesome part is:&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:small;"&gt;With just a few lines of code, you can SAVE whatever changes you make to WinGrid and then LOAD them up later on. That&amp;rsquo;s the part that I LIKE &lt;img style="border-bottom-style:none;border-left-style:none;border-top-style:none;border-right-style:none;" class="wlEmoticon wlEmoticon-smile" alt="Smile" src="http://blogs.infragistics.com/controlpanel/blogs/posteditor.aspx/$wlEmoticon-smile[2].png" /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:small;"&gt;This is the form layout along with the controls:&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="http://media.infragistics.com/community/Release/11.2/WinForms/wingrid_load_and_save_layouts_01.png" height="313" width="519" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:small;"&gt;The following code shows the simplicity of LOADING and SAVING this particular WinGrid control&amp;rsquo;s settings:&lt;/span&gt;&lt;/p&gt;
&lt;pre class="c#" name="code"&gt;        string _settings = Application.StartupPath + @&amp;quot;\settings.xml&amp;quot;;

        private void Form1_Load(object sender, EventArgs e)
        {
            //Load Settings
            if (File.Exists(_settings))
            {
                this.ultraGrid1.DisplayLayout.LoadFromXml(
                    _settings, 
                    Infragistics.Win.UltraWinGrid.PropertyCategories.All);
            }
            //Get Data
            this.ordersTableAdapter.Fill(this.nwindDataSet.Orders);
            this.order_DetailsTableAdapter1.Fill(this.nwindDataSet.Order_Details);
            
            //Set PropertyGrid to WinGrid&amp;#39;s DisplayLayout property
            this.propertyGrid1.SelectedObject = this.ultraGrid1.DisplayLayout;
        }

        private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {
            //Save Layout
            this.ultraGrid1.DisplayLayout.SaveAsXml(
                _settings, 
                Infragistics.Win.UltraWinGrid.PropertyCategories.All);
        }&lt;/pre&gt;
&lt;p&gt;&lt;span style="font-size:small;"&gt;When you download and run this sample, you can observe the various columns that have been added to the BAND[0].Columns collection as well as the BAND[1].Columns collection. I added two unbound columns and set their Formula property through the WinCalcManager component&amp;rsquo;s Formula Editor. That&amp;rsquo;s right! I also have the NetAdvantage &lt;a href="http://www.infragistics.com/dotnet/netadvantage/winforms/wincalcmanager.aspx#Overview"&gt;WinCalcManager&lt;/a&gt; component thrown onto the form so that even at runtime, I can use the component&amp;rsquo;s ability to customize WinGrid by adding as many additional empty columns as I like, while setting the Column object&amp;rsquo;s Formula property to evaluate as many as 140 Excel-like functions that are at your disposal. You can also provide WinCalcManager-powered summaries that aggregate column data. As a matter of fact, the ROOT entity in WinGrid has an unbound column that actually displays the SUM of its child order item&amp;rsquo;s TOTAL column.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:small;"&gt;Try this: after playing around with the sample, DELETE the settings.xml file from the sample&amp;rsquo;s BIN folder. Now run it again. The WinGrid control will be reset. All of MY customizations that were saved are now blown away. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:small;"&gt;Now that you have seen this sample and got the idea of how it works, you can apply the same or similar concepts to your larger-scale apps as well. Remember that if you use the Microsoft Property Grid control, you may scare some of your end users, but you can carefully target just PARTS of the WinGrid object model in order to minimize your end users BREAKING stuff!&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:small;"&gt;Enjoy!&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.infragistics.com/community/aggbug.aspx?PostID=328243" width="1" height="1"&gt;</description></item><item><title>Simple Microsoft™ CAB Sample</title><link>http://www.infragistics.com/community/blogs/tom_puglisi/archive/2012/01/19/simple-microsoft-cab-sample.aspx</link><pubDate>Thu, 19 Jan 2012 21:39:00 GMT</pubDate><guid isPermaLink="false">7a8b7c76-b7ad-48e0-9694-5b04ca132ed0:326807</guid><dc:creator>[Infragistics] Tom Puglisi</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.infragistics.com/community/blogs/tom_puglisi/rsscomments.aspx?PostID=326807</wfw:commentRss><comments>http://www.infragistics.com/community/blogs/tom_puglisi/archive/2012/01/19/simple-microsoft-cab-sample.aspx#comments</comments><description>&lt;p&gt;&lt;span style="font-size:small;"&gt;As I was digging through the ole&amp;rsquo; code bucket, I found a sample that I made several years ago in order to communicate the Microsoft&amp;trade; CAB (Composite UI Application Block) Architectural Framework. There have been a few customers asking me questions about MS CAB as of late, so I decided to post this sample and discuss it a tad. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:small;"&gt;This sample is a simple implementation of MS CAB; in other words, it does not use any of those Guidance Automation Toolkit scripts (SCSF &amp;ndash; smart client software factory). This is just a plain, simple &amp;ldquo;reference the MS CAB assemblies, and write the entire code yourself by hand&amp;rdquo; kind of sample! This sample also does not implement the MVP (Model View Presenter) pattern, which is also a by-product of using SCSF. In this sample, there is actually CODE IN THE UI &amp;ndash; GASP!&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:small;"&gt;Again, this sample was created to show a very simple implementation of MS CAB and its core components, along with the Infragistics CAB Extensibility Kit that comes with your Infragistics NetAdvantage Windows Forms installation. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:small;"&gt;&lt;a href="http://media.infragistics.com/community/Release/11.2/WinForms/CabMediaPlayer.zip"&gt;Feel free to download and review the code within this example.&lt;/a&gt; &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:small;"&gt;The sample application comes in the form of a media player. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:small;"&gt;&lt;img src="http://media.infragistics.com/community/Release/11.2/WinForms/cab_media_player_easy_02.png" height="458" width="561" alt="" /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;h2&gt;Project References&lt;/h2&gt;
&lt;p&gt;&lt;img src="http://media.infragistics.com/community/Release/11.2/WinForms/cab_media_player_easy_03.png" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:small;"&gt;One of the most important things that make this a CAB application are the references. The three Microsoft.Practices.[XXXXX] assemblies contain the essential components that help execute, fire events, manage user controls (Smart Parts) and form elements (UIElements) through out your application&amp;rsquo;s execution cycle. The Microsoft CAB assemblies are located in a folder named &amp;ldquo;Lib&amp;rdquo; located within the main solution folder. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:small;"&gt;The Infragistics.CompositeUI.Winforms assembly reference represents the CAB Extensibility Kit library that extends several Infragistics controls to work just like CAB WorkSpaces as well as provide UIElement Support to other Infragistics controls. &lt;/span&gt;&lt;/p&gt;
&lt;h2&gt;Review of Projects&lt;/h2&gt;
&lt;p&gt;&lt;span style="font-size:small;"&gt;&lt;img src="http://media.infragistics.com/community/Release/11.2/WinForms/cab_media_player_easy_01.png" alt="" /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style="font-size:small;"&gt;CabMediaPlayer &amp;ndash; This contains the &amp;ldquo;shell&amp;rdquo; or main, empty user interface. The Shell will be populated by other, more functional user controls (Smart Parts) that exist within the other Projects. The Shell also contains controls that are designed to accept buttons, menu items, or other &amp;ldquo;UIElements&amp;rdquo; that are defined and contained within the other Projects. &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-size:small;"&gt;MediaContentAddin, PlaylistAddin, WindowsMediaPlayerAddin &amp;ndash; These projects can be considered &amp;ldquo;add-ins&amp;rdquo; or &amp;ldquo;plug-ins&amp;rdquo; that automatically expose their designated functionality at runtime, through the help of the CAB runtime, to the main Shell. Each of these add-ins contain functionality, Smart Parts, and UIElements that fit into the main Shell so that you can see and interact with these functionalities. &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-size:small;"&gt;MediaPlayerCommon &amp;ndash; This is a project that contains code common to all add-ins, therefore referenced by the add-ins. &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-size:small;"&gt;Infragistics Project &amp;ndash; This is the Infragistics CAB project. This is included within the Visual Studio Solution so that upgrading NetAdvantage volume versions is easy and performed all in one place. If you just reference the compiled assembly, you would need to upgrade this stand-alone project wherever it resides and then manually update everything that references this with your new assembly build. This project also comes with the Infragistics Windows Forms installation.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;span style="font-size:small;"&gt;ALL projects reference the Infragistics and Microsoft CAB related assemblies. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:small;"&gt;The add-in projects reference the MediaPlayerCommon project.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:small;"&gt;The Shell project (CabMediaPlayer) does NOT have any references to any of the add-in projects. The add-ins are loaded at runtime by CAB through references noted in the ProfileCatalog.xml file located in the Shell project (CabMediaPlayer).&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:small;"&gt;So, download this sample, run it and load up some media files. Double click the media items in the playlist to play them and observe what happens through out the UI. Afterwards, go through the various projects to see the actual parts of the CAB implementation (Dependency Injection, Events, UIElements, Smart Parts, WorkSpaces, etc) in a simplified form. Enjoy!&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.infragistics.com/community/aggbug.aspx?PostID=326807" width="1" height="1"&gt;</description></item><item><title>WPF Data Chart to PDF</title><link>http://www.infragistics.com/community/blogs/tom_puglisi/archive/2012/01/16/wpf-data-chart-to-pdf.aspx</link><pubDate>Mon, 16 Jan 2012 16:05:00 GMT</pubDate><guid isPermaLink="false">7a8b7c76-b7ad-48e0-9694-5b04ca132ed0:326021</guid><dc:creator>[Infragistics] Tom Puglisi</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.infragistics.com/community/blogs/tom_puglisi/rsscomments.aspx?PostID=326021</wfw:commentRss><comments>http://www.infragistics.com/community/blogs/tom_puglisi/archive/2012/01/16/wpf-data-chart-to-pdf.aspx#comments</comments><description>&lt;p&gt;&lt;span style="font-size:small;"&gt;The Infragistics NetAdvantage WPF controls toolset currently does not have a PDF engine, however, for certain cases, one can use the PDF engine available in the NetAdvantage Windows Forms toolset. In this topic, I will give you a quick explanation on how to accomplish this by taking an image snapshot of a WPF FrameworkElement and adding it to the PDF. &lt;a href="http://media.infragistics.com/community/Release/11.2/XamlDV/wpf_datachart_to_pdf/xamChartToPDF.zip"&gt;I also include a simple downloadable sample.&lt;/a&gt; &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="http://media.infragistics.com/community/Release/11.2/XamlDV/wpf_datachart_to_pdf/wpf_datachart_to_pdf.png" height="546" width="610" alt="" /&gt;&lt;/p&gt;
&lt;h2&gt;Getting Started&lt;/h2&gt;
&lt;p&gt;&lt;span style="font-size:small;"&gt;Create a basic WPF Application that contains a Window along with an instance of xamDataChart. The xamDataChart control is set up with some data along with any combination of series, axes, legends, or whatever you need. For directions on how to get to this point, you can refer to the following &lt;a href="http://help.infragistics.com/NetAdvantage/WPFDV/2011.2/CLR4.0/?page=xamDataChart_Getting_Started_with_xamDataChart.html"&gt;xamDataChart getting started help topic&lt;/a&gt;. &lt;/span&gt;&lt;/p&gt;
&lt;h2&gt;&lt;span style="font-size:small;"&gt;References&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&lt;span style="font-size:small;"&gt;Add the following references to your Microsoft&amp;trade; Visual Studio project:&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style="font-size:small;"&gt;Infragistics4.Documents.Core.v11.2&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-size:small;"&gt;Infragistics4.Documents.Reports.v11.2&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;span style="font-size:small;"&gt;The &amp;ldquo;4&amp;rdquo; in the first assembly naming section represents &amp;ldquo;CLR4&amp;rdquo;, and the &amp;ldquo;11.2&amp;rdquo; in the assembly name represents &amp;ldquo;the 2011, volume two version of the NetAdvantage product&amp;rdquo;.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:small;"&gt;These assemblies are part of the NetAdvantage Windows Forms installation.&lt;/span&gt;&lt;/p&gt;
&lt;h2&gt;&lt;span style="font-size:small;"&gt;Execution Logic&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&lt;span style="font-size:small;"&gt;This is straight forward &amp;ndash; convert a FrameWork element into an image; in this case, the xamDataChart control instance. Create a PDF Document and then insert the image into the PDF document. That&amp;rsquo;s it. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:small;"&gt;Image from FrameworkElement&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:small;"&gt;The following C# code accomplishes this:&lt;/span&gt;&lt;/p&gt;
&lt;pre class="C#" name="code"&gt;        public static void SaveImage(string fileName, FrameworkElement element)
        {
            string imageExtension = 
                new FileInfo(fileName).Extension.ToLower(CultureInfo.InvariantCulture);

            BitmapEncoder imgEncoder = null;
            switch (imageExtension)
            {
                case &amp;quot;.bmp&amp;quot;:
                    imgEncoder = new BmpBitmapEncoder();
                    break;

                case &amp;quot;.jpg&amp;quot;:
                case &amp;quot;.jpeg&amp;quot;:
                    imgEncoder = new JpegBitmapEncoder();
                    break;

                case &amp;quot;.png&amp;quot;:
                    imgEncoder = new PngBitmapEncoder();
                    break;

                case &amp;quot;.gif&amp;quot;:
                    imgEncoder = new GifBitmapEncoder();
                    break;

                case &amp;quot;.tif&amp;quot;:
                case &amp;quot;.tiff&amp;quot;:
                    imgEncoder = new TiffBitmapEncoder();
                    break;

                case &amp;quot;.wdp&amp;quot;:
                    imgEncoder = new WmpBitmapEncoder();
                    break;

                default:
                    imgEncoder = new BmpBitmapEncoder();
                    break;
            }

            if (element != null)
            {
                RenderTargetBitmap bmpSource = 
                    new RenderTargetBitmap(
                        (int)element.ActualWidth, 
                        (int)element.ActualHeight, 96, 96, 
                        PixelFormats.Pbgra32);
                bmpSource.Render(element);

                imgEncoder.Frames.Add(BitmapFrame.Create(bmpSource));
                using (Stream stream = File.Create(fileName))
                {
                    imgEncoder.Save(stream);
                    stream.Close();
                }
            }
        }&lt;/pre&gt;
&lt;h2&gt;&lt;span style="font-size:small;"&gt;Creating a PDF Document&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&lt;span style="font-size:small;"&gt;The following code creates a PDF document and includes the image generated from the previous code block.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;pre class="C#" name="code"&gt;        private void button1_Click(object sender, RoutedEventArgs e)
        {
            Report theReport = new Report();

            ISection theSection = theReport.AddSection();

            IText theText = theSection.AddText();

            theText.AddContent(&amp;quot;Chart Data&amp;quot;);

            string theImgFile = 
                AppDomain.CurrentDomain.BaseDirectory + @&amp;quot;\theimg.png&amp;quot;;


            SaveImage(theImgFile, this.xamDataChart1);

            theSection.AddImage(
                new Infragistics.Documents.Reports.Graphics.Image(theImgFile));


            string theFile = AppDomain.CurrentDomain.BaseDirectory + @&amp;quot;\thePDF.pdf&amp;quot;;

            theReport.Publish(theFile, FileFormat.PDF);

            System.Diagnostics.Process.Start(theFile);

        }&lt;/pre&gt;
&lt;p&gt;&lt;span style="font-size:small;"&gt;And there you have it, a simple way to convert a FrameworkElement into an Image and then load it into a PDF Document. One thing to note &amp;ndash; this is a WYSIWYG approach &amp;ndash; meaning that Whatever state the FrameworkElement is in,(xamDataChart control in this case) the image will be captured in that exact same state. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:small;"&gt;&lt;a href="http://media.infragistics.com/community/Release/11.2/XamlDV/wpf_datachart_to_pdf/xamChartToPDF.zip"&gt;Feel free to download the included sample application&lt;/a&gt;.&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.infragistics.com/community/aggbug.aspx?PostID=326021" width="1" height="1"&gt;</description><enclosure url="http://media.infragistics.com/community/Release/11.2/XamlDV/wpf_datachart_to_pdf/xamChartToPDF.zip" length="-1" type="application/x-compressed" /></item><item><title>NetAdvantage Reporting in Windows Forms</title><link>http://www.infragistics.com/community/blogs/tom_puglisi/archive/2011/11/29/netadvantage-reporting-in-windows-forms.aspx</link><pubDate>Tue, 29 Nov 2011 19:56:00 GMT</pubDate><guid isPermaLink="false">7a8b7c76-b7ad-48e0-9694-5b04ca132ed0:318479</guid><dc:creator>[Infragistics] Tom Puglisi</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.infragistics.com/community/blogs/tom_puglisi/rsscomments.aspx?PostID=318479</wfw:commentRss><comments>http://www.infragistics.com/community/blogs/tom_puglisi/archive/2011/11/29/netadvantage-reporting-in-windows-forms.aspx#comments</comments><description>&lt;p&gt;&lt;span style="font-size:small;"&gt;So you want to add reporting capabilities to your Windows Forms applications, how is this done? By using the new Infragistics NetAdvantage Reporting product, you can now create and add reports to your Windows Forms applications easily!&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="http://media.infragistics.com/community/Release/11.2/WinForms/netadvantage_reporting_in_winforms_01.png" height="347" width="545" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:small;"&gt;In this topic, I will show Windows Forms developers how to create a new report in Microsoft&amp;trade; Visual Studio&amp;trade; using the Infragistics NetAdvantage Reporting product and then display your report in a Windows Form.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:small;"&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:small;"&gt;&lt;b&gt;Getting Started&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:small;"&gt;Create a NEW Windows Forms project named &lt;/span&gt;&lt;span style="font-size:small;"&gt;&amp;ldquo;NetAdvantage_Reporting_in_WinForms&amp;rdquo;. Add a new folder to your project named &amp;ldquo;Reports&amp;rdquo;.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:small;"&gt;Double-click on Form1 and get it into design mode. You will add two Infragistics Windows Forms controls to it. In your Visual Studio toolbox, locate the Infragistics NetAdvantage 11.2 toolbox tab and in this tab, drag and drop the UltraComboEditor control onto your form. Set its Dock property to &amp;ldquo;Top&amp;rdquo;. Then locate the NetAdvantage Reporting Windows Forms toolbox tab and then drag and drop the UltraReportViewer control onto your form and set its Dock property to &amp;ldquo;Fill&amp;rdquo;. Everything should look like this so far:&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="http://media.infragistics.com/community/Release/11.2/WinForms/netadvantage_reporting_in_winforms_02.png" height="485" width="667" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:small;"&gt;&lt;b&gt;Creating a Simple Report&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:small;"&gt;To create a new report, locate and right-click the Reporting folder you created earlier and select &amp;ldquo;Add New Item&amp;rdquo;. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:small;"&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:small;"&gt;In the Add New Item dialog, Locate the Infragistics node, expand it and select Reporting. You will then select the &amp;ldquo;Infragistics Report&amp;rdquo; item from the list of various Infragistics Reporting items.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:small;"&gt;Name the report &amp;ldquo;Product_Listing&amp;quot;.igr&amp;rdquo; and click ADD. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="http://media.infragistics.com/community/Release/11.2/WinForms/netadvantage_reporting_in_winforms_03.png" height="447" width="614" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:small;"&gt;&lt;b&gt;Design the Report&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:small;"&gt;To design the content of the report, double click the Infragistics Report you just added to your project. You can now design the report using the intuitive Infragistics design-time user interface. We will keep things simple in this topic, so to start designing the report, click the Add &amp;ldquo;A Report Data Source&amp;hellip;&amp;rdquo; icon located in the center of your report that is shown in design mode. You can navigate to an instance of the Microsoft&amp;trade; Northwind&amp;trade; database sample that you should have running somewhere that is accessible. Select the Products table for this particular report. Locate the Report Data Explorer tab in Visual Studio and bring it into view. You are now ready to select data to show on your report.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="http://media.infragistics.com/community/Release/11.2/WinForms/netadvantage_reporting_in_winforms_04.png" height="356" width="582" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:small;"&gt;In the Report Data Explorer, locate and control+click the following three fields:&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style="font-size:small;"&gt;ProductName&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-size:small;"&gt;UnitPrice&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-size:small;"&gt;UnitsInStock&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;span style="font-size:small;"&gt;With these three fields selected, drag and drop them as one unit onto the center of the Report Body. This is how you define which data fields will be presented in the Report Body. You can feel free to experiment setting properties on the various items that were just generated. For example, select the entire Header row in the Table that was just created and then set its background color to a color of your choice.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:small;"&gt;Let&amp;rsquo;s create a Title for this report by finding the Visual Studio Toolbox, locating the NetAdvantage Reporting toolbox tab and then drag and drop a Label control onto the Page Header portion of the report. This is located towards the top of the report in design mode. Change the Text to &amp;ldquo;Northwind Product Listing&amp;rdquo; and then change the Label&amp;rsquo;s Font size to 30. Feel free to experiment with other properties such as color and alignment.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="http://media.infragistics.com/community/Release/11.2/WinForms/netadvantage_reporting_in_winforms_05.png" height="440" width="624" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:small;"&gt;Make sure your report works by clicking the Preview button located on your report in Design Mode:&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="http://media.infragistics.com/community/Release/11.2/WinForms/netadvantage_reporting_in_winforms_06.png" height="375" width="513" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:small;"&gt;&lt;b&gt;Show the Report&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:small;"&gt;Now it is time to show your report to your end users. Before moving onto the next step, you can feel free to create more reports using the same technique that you just learned in the previous steps. Create a few more reports that pull data from other data sources you may have available and add them to the Reports folder in this project. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:small;"&gt;Note: I have two reports in this project, one named Northwind_Customer_Listing.igr and the other named Product_Listing.igr.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:small;"&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:small;"&gt;Write the following code in the Form_Load event:&lt;/span&gt;&lt;/p&gt;
&lt;div style="padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;float:none;padding-top:0px;" id="scid:f32c3428-b7e9-4f15-a8ea-c502c7ff2e88:7549ea2b-b679-4350-810f-08f39fa7516e" class="wlWriterEditableSmartContent"&gt;
&lt;pre name="code" class="C#"&gt; private void Form1_Load(object sender, EventArgs e)
        {
            this.cboReportList.Items.Add(&amp;quot;Northwind_Customer_Listing&amp;quot;);
            this.cboReportList.Items.Add(&amp;quot;Product_Listing&amp;quot;);
        }
&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:small;"&gt;Next, handle the UltraComboEditor control&amp;rsquo;s ValueChanged event and add the following code to that event:&lt;/span&gt;&lt;/p&gt;
&lt;div style="padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;float:none;padding-top:0px;" id="scid:f32c3428-b7e9-4f15-a8ea-c502c7ff2e88:810dd147-c058-4c03-b3fd-a2fdae1888de" class="wlWriterEditableSmartContent"&gt;
&lt;pre name="code" class="C#"&gt;private void cboReportList_ValueChanged(object sender, EventArgs e)
{
            string reportMain = 
             &amp;quot;/NetAdvantage_Reporting_in_WinForms;component/Reports/{0}.igr&amp;quot;;
            
           this.ultraReportViewer1.RenderSettings.DefinitionUri = 
                new System.Uri(
                    string.Format(reportMain, 
                    this.cboReportList.Value.ToString() ), 
                    System.UriKind.Relative);
}
&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;&lt;span style="font-size:small;"&gt;&lt;b&gt;Run the App&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:small;"&gt;That&amp;rsquo;s it! Now run the application and select a report from the UltraComboEditor control. The report that you selected should automatically load in the UltraReportViewer control. You can also zoom in and out, export, and navigate the entirety of this report. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:small;"&gt;This is all that is needed to add reporting to your Windows Forms applications using the Infragistics NetAdvantage Reporting product! &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:small;"&gt;&lt;b&gt;Taking it to the next level&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:small;"&gt;I showed you how to create and display simple reports in a simple application. As you learn how to take advantage of more advanced reporting capabilities, you can create more compelling reports with charts, filter parameters, and many more features such as grouping, summaries, and aggregate functions. You can also come up with a more elegant report title navigation user interface that allows your end users to navigate, select, and display reports. Think of other Infragisics NetAdvantage Windows Forms controls that you could use such as the UltraExplorerBar, UltraDockManager, and UltraTree. The rest is up to you to make it happen!&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="http://media.infragistics.com/community/Release/11.2/WinForms/netadvantage_reporting_in_winforms_07.png" height="348" width="538" alt="" /&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.infragistics.com/community/aggbug.aspx?PostID=318479" width="1" height="1"&gt;</description><enclosure url="http://www.infragistics.com" length="261550" type="application/zip" /></item><item><title>WinGrid Dropdown Column to Excel Dropdown List</title><link>http://www.infragistics.com/community/blogs/tom_puglisi/archive/2011/11/22/wingrid-dropdown-column-to-excel-dropdown-list.aspx</link><pubDate>Tue, 22 Nov 2011 18:41:00 GMT</pubDate><guid isPermaLink="false">7a8b7c76-b7ad-48e0-9694-5b04ca132ed0:317319</guid><dc:creator>[Infragistics] Tom Puglisi</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.infragistics.com/community/blogs/tom_puglisi/rsscomments.aspx?PostID=317319</wfw:commentRss><comments>http://www.infragistics.com/community/blogs/tom_puglisi/archive/2011/11/22/wingrid-dropdown-column-to-excel-dropdown-list.aspx#comments</comments><description>&lt;p&gt;&lt;span style="font-size:x-small;"&gt;&lt;span style="font-size:small;"&gt;Ever wanted to export your WinGrid to a Microsoft&amp;trade; Excel&amp;trade; file complete with your dropdown columns intact so that your end users could select items from the same list in Excel? Well with the new Infragistics Excel Library ListDataValidationRule feature, part of the Excel Data Validation feature set, YOU CAN!&lt;/span&gt; &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="http://media.infragistics.com/community/Release/11.2/WinForms/excel_list_validation_01.png" height="378" width="643" alt="" /&gt;&lt;/p&gt;
&lt;h2&gt;How this is done:&lt;/h2&gt;
&lt;p&gt;&lt;span style="font-size:small;"&gt;The sample application contains a WinGrid control bound to the Products table in the Northwind database. The WinGrid&amp;rsquo;s CategoryID column is wired up to the WinDropdown control, which essentially provides a dropdown list of values for the CategoryID column. The WinDropdown control is bound to the Category table in the Northwind database. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:small;"&gt;End users can change the value of the CategoryID column by picking from the list of values available from the WinDropdown control. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:small;"&gt;We use the WinGridExcelExporter component to easily export WinGrid into an Excel file. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:small;"&gt;The goal of this blog post is to provide our end users with the same experience within the Excel file that we export with WinGridExcelExporter &amp;ndash; a dropdown list of values on the CategoryID column so that end users can pick from the same list of values available in WinGrid.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:small;"&gt;The following class wraps up the logic used to create a ListValidationRule object and apply it to each WorkBookCell object.&lt;/span&gt;&lt;/p&gt;
&lt;div style="padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;float:none;padding-top:0px;" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:9876e59f-2f9c-40de-9f3e-8eddd831c188" class="wlWriterEditableSmartContent"&gt;
&lt;div class="dp-highlighter"&gt;
&lt;div class="bar"&gt;
&lt;div class="tools"&gt;&lt;a&gt;view plain&lt;/a&gt;&lt;a&gt;copy to clipboard&lt;/a&gt;&lt;a&gt;print&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;ol class="dp-c"&gt;
&lt;li class="alt"&gt;&lt;span&gt;&lt;span class="keyword"&gt;using&lt;/span&gt;&lt;span&gt;&amp;nbsp;System; &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="keyword"&gt;using&lt;/span&gt;&lt;span&gt;&amp;nbsp;System.Collections.Generic; &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li class="alt"&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="keyword"&gt;using&lt;/span&gt;&lt;span&gt;&amp;nbsp;System.Linq; &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="keyword"&gt;using&lt;/span&gt;&lt;span&gt;&amp;nbsp;System.Text; &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li class="alt"&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="keyword"&gt;using&lt;/span&gt;&lt;span&gt;&amp;nbsp;Infragistics.Documents.Excel; &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="keyword"&gt;using&lt;/span&gt;&lt;span&gt;&amp;nbsp;Infragistics.Win.UltraWinGrid.ExcelExport; &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="keyword"&gt;namespace&lt;/span&gt;&lt;span&gt;&amp;nbsp;NewExcelFeatures &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li class="alt"&gt;&lt;span&gt;{ &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="keyword"&gt;public&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="keyword"&gt;class&lt;/span&gt;&lt;span&gt;&amp;nbsp;ExcelListConverter &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{ &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="keyword"&gt;private&lt;/span&gt;&lt;span&gt;&amp;nbsp;UltraGridExcelExporter&amp;nbsp;_theExcelExporter; &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="keyword"&gt;private&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="keyword"&gt;string&lt;/span&gt;&lt;span&gt;&amp;nbsp;_theItemsListString; &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="keyword"&gt;private&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="keyword"&gt;string&lt;/span&gt;&lt;span&gt;&amp;nbsp;_theColumnName; &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="keyword"&gt;private&lt;/span&gt;&lt;span&gt;&amp;nbsp;Dictionary&amp;lt;&lt;/span&gt;&lt;span class="keyword"&gt;int&lt;/span&gt;&lt;span&gt;,&amp;nbsp;&lt;/span&gt;&lt;span class="keyword"&gt;string&lt;/span&gt;&lt;span&gt;&amp;gt;&amp;nbsp;CellReferenceDictionary&amp;nbsp;=&amp;nbsp;&lt;/span&gt;&lt;span class="keyword"&gt;new&lt;/span&gt;&lt;span&gt;&amp;nbsp;Dictionary&amp;lt;&lt;/span&gt;&lt;span class="keyword"&gt;int&lt;/span&gt;&lt;span&gt;,&amp;nbsp;&lt;/span&gt;&lt;span class="keyword"&gt;string&lt;/span&gt;&lt;span&gt;&amp;gt;(); &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="keyword"&gt;public&lt;/span&gt;&lt;span&gt;&amp;nbsp;ExcelListConverter(UltraGridExcelExporter&amp;nbsp;theExcelExporter,&amp;nbsp;&lt;/span&gt;&lt;span class="keyword"&gt;string&lt;/span&gt;&lt;span&gt;&amp;nbsp;theItemsListString,&amp;nbsp;&lt;/span&gt;&lt;span class="keyword"&gt;string&lt;/span&gt;&lt;span&gt;&amp;nbsp;theColumnName) &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&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&gt;&lt;/li&gt;
&lt;li class="alt"&gt;&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;_theExcelExporter&amp;nbsp;=&amp;nbsp;theExcelExporter; &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&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;_theItemsListString&amp;nbsp;=&amp;nbsp;theItemsListString; &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li class="alt"&gt;&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;_theColumnName&amp;nbsp;=&amp;nbsp;theColumnName; &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li class="alt"&gt;&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;_theExcelExporter.CellExported&amp;nbsp;+=&amp;nbsp;&lt;/span&gt;&lt;span class="keyword"&gt;new&lt;/span&gt;&lt;span&gt;&amp;nbsp;CellExportedEventHandler(_theExcelExporter_CellExported); &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li class="alt"&gt;&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;&lt;/span&gt;&lt;span class="comment"&gt;//Used&amp;nbsp;to&amp;nbsp;convert&amp;nbsp;a&amp;nbsp;column&amp;nbsp;index&amp;nbsp;into&amp;nbsp;an&amp;nbsp;Excel&amp;nbsp;Cell&amp;nbsp;Column&amp;nbsp;Address&amp;nbsp;Reference&amp;nbsp;Character &lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&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;CellReferenceDictionary.Add(0,&amp;nbsp;&lt;/span&gt;&lt;span class="string"&gt;&amp;quot;A&amp;quot;&lt;/span&gt;&lt;span&gt;); &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li class="alt"&gt;&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;CellReferenceDictionary.Add(1,&amp;nbsp;&lt;/span&gt;&lt;span class="string"&gt;&amp;quot;B&amp;quot;&lt;/span&gt;&lt;span&gt;); &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&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;CellReferenceDictionary.Add(2,&amp;nbsp;&lt;/span&gt;&lt;span class="string"&gt;&amp;quot;C&amp;quot;&lt;/span&gt;&lt;span&gt;); &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li class="alt"&gt;&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;CellReferenceDictionary.Add(3,&amp;nbsp;&lt;/span&gt;&lt;span class="string"&gt;&amp;quot;D&amp;quot;&lt;/span&gt;&lt;span&gt;); &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&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;CellReferenceDictionary.Add(4,&amp;nbsp;&lt;/span&gt;&lt;span class="string"&gt;&amp;quot;E&amp;quot;&lt;/span&gt;&lt;span&gt;); &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li class="alt"&gt;&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;CellReferenceDictionary.Add(5,&amp;nbsp;&lt;/span&gt;&lt;span class="string"&gt;&amp;quot;F&amp;quot;&lt;/span&gt;&lt;span&gt;); &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&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;CellReferenceDictionary.Add(6,&amp;nbsp;&lt;/span&gt;&lt;span class="string"&gt;&amp;quot;G&amp;quot;&lt;/span&gt;&lt;span&gt;); &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li class="alt"&gt;&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;CellReferenceDictionary.Add(7,&amp;nbsp;&lt;/span&gt;&lt;span class="string"&gt;&amp;quot;H&amp;quot;&lt;/span&gt;&lt;span&gt;); &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&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;CellReferenceDictionary.Add(8,&amp;nbsp;&lt;/span&gt;&lt;span class="string"&gt;&amp;quot;I&amp;quot;&lt;/span&gt;&lt;span&gt;); &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li class="alt"&gt;&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&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="comment"&gt;///&amp;nbsp;&amp;lt;summary&amp;gt; &lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="comment"&gt;///&amp;nbsp;While&amp;nbsp;each&amp;nbsp;cell&amp;nbsp;is&amp;nbsp;exported,&amp;nbsp;we&amp;nbsp;add&amp;nbsp;a&amp;nbsp;list&amp;nbsp;validation&amp;nbsp;rule&amp;nbsp;to&amp;nbsp;the&amp;nbsp;appropriate&amp;nbsp;Excel&amp;nbsp;Column &lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="comment"&gt;///&amp;nbsp;&amp;lt;/summary&amp;gt; &lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="comment"&gt;///&amp;nbsp;&amp;lt;param&amp;nbsp;name=&amp;quot;sender&amp;quot;&amp;gt;&amp;lt;/param&amp;gt; &lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="comment"&gt;///&amp;nbsp;&amp;lt;param&amp;nbsp;name=&amp;quot;e&amp;quot;&amp;gt;&amp;lt;/param&amp;gt; &lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="keyword"&gt;private&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="keyword"&gt;void&lt;/span&gt;&lt;span&gt;&amp;nbsp;_theExcelExporter_CellExported(&lt;/span&gt;&lt;span class="keyword"&gt;object&lt;/span&gt;&lt;span&gt;&amp;nbsp;sender,&amp;nbsp;Infragistics.Win.UltraWinGrid.ExcelExport.CellExportedEventArgs&amp;nbsp;e) &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li class="alt"&gt;&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&gt;&lt;/li&gt;
&lt;li&gt;&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;&lt;/span&gt;&lt;span class="keyword"&gt;if&lt;/span&gt;&lt;span&gt;&amp;nbsp;(e.GridColumn.Key&amp;nbsp;==&amp;nbsp;_theColumnName) &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li class="alt"&gt;&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;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&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;WorksheetCell&amp;nbsp;c&amp;nbsp;=&amp;nbsp;e.CurrentWorksheet.Rows[e.CurrentRowIndex].Cells[e.CurrentColumnIndex]&amp;nbsp;&lt;/span&gt;&lt;span class="keyword"&gt;as&lt;/span&gt;&lt;span&gt;&amp;nbsp;WorksheetCell; &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&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&gt;&lt;span class="keyword"&gt;string&lt;/span&gt;&lt;span&gt;&amp;nbsp;currentRowIndex&amp;nbsp;=&amp;nbsp;(e.CurrentRowIndex&amp;nbsp;+&amp;nbsp;1).ToString(); &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&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&gt;&lt;span class="keyword"&gt;this&lt;/span&gt;&lt;span&gt;.SetListValidationRule(e.CurrentWorksheet,&amp;nbsp;_theItemsListString,&amp;nbsp;CellReferenceDictionary[e.CurrentColumnIndex]&amp;nbsp;+&amp;nbsp;currentRowIndex); &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li class="alt"&gt;&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;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&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&gt;&lt;/li&gt;
&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="keyword"&gt;private&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="keyword"&gt;void&lt;/span&gt;&lt;span&gt;&amp;nbsp;SetListValidationRule(Worksheet&amp;nbsp;theWorksheet,&amp;nbsp;&lt;/span&gt;&lt;span class="keyword"&gt;string&lt;/span&gt;&lt;span&gt;&amp;nbsp;theListItems,&amp;nbsp;&lt;/span&gt;&lt;span class="keyword"&gt;string&lt;/span&gt;&lt;span&gt;&amp;nbsp;theCellAddress) &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li class="alt"&gt;&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&gt;&lt;/li&gt;
&lt;li&gt;&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;&lt;/span&gt;&lt;span class="comment"&gt;//&amp;nbsp;Create&amp;nbsp;a&amp;nbsp;variable&amp;nbsp;for&amp;nbsp;the&amp;nbsp;base&amp;nbsp;data&amp;nbsp;validation&amp;nbsp;rule &lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li class="alt"&gt;&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;DataValidationRule&amp;nbsp;dataRule&amp;nbsp;=&amp;nbsp;&lt;/span&gt;&lt;span class="keyword"&gt;null&lt;/span&gt;&lt;span&gt;; &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&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;&lt;/span&gt;&lt;span class="comment"&gt;//&amp;nbsp;Create&amp;nbsp;a&amp;nbsp;variable&amp;nbsp;for&amp;nbsp;the&amp;nbsp;worksheet&amp;nbsp;reference&amp;nbsp;collection &lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li class="alt"&gt;&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;WorksheetReferenceCollection&amp;nbsp;cellCollection&amp;nbsp;=&amp;nbsp;&lt;/span&gt;&lt;span class="keyword"&gt;null&lt;/span&gt;&lt;span&gt;; &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li class="alt"&gt;&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;&lt;/span&gt;&lt;span class="comment"&gt;//&amp;nbsp;Create&amp;nbsp;a&amp;nbsp;new&amp;nbsp;list&amp;nbsp;data&amp;nbsp;validation&amp;nbsp;rule &lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&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;ListDataValidationRule&amp;nbsp;ld&amp;nbsp;=&amp;nbsp;&lt;/span&gt;&lt;span class="keyword"&gt;new&lt;/span&gt;&lt;span&gt;&amp;nbsp;ListDataValidationRule(); &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li class="alt"&gt;&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;&lt;/span&gt;&lt;span class="comment"&gt;//&amp;nbsp;Copy&amp;nbsp;the&amp;nbsp;validation&amp;nbsp;rule&amp;nbsp;reference&amp;nbsp;to&amp;nbsp;the&amp;nbsp;base&amp;nbsp;data&amp;nbsp;rule&amp;nbsp;variable &lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&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;dataRule&amp;nbsp;=&amp;nbsp;ld; &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li class="alt"&gt;&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;&lt;/span&gt;&lt;span class="comment"&gt;//&amp;nbsp;Allow&amp;nbsp;the&amp;nbsp;worksheet&amp;nbsp;cell&amp;nbsp;to&amp;nbsp;contain&amp;nbsp;null&amp;nbsp;values &lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&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;ld.AllowNull&amp;nbsp;=&amp;nbsp;&lt;/span&gt;&lt;span class="keyword"&gt;true&lt;/span&gt;&lt;span&gt;; &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li class="alt"&gt;&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;&lt;/span&gt;&lt;span class="comment"&gt;//&amp;nbsp;Allow&amp;nbsp;the&amp;nbsp;showing&amp;nbsp;of&amp;nbsp;the&amp;nbsp;drop&amp;nbsp;down&amp;nbsp;for&amp;nbsp;valid&amp;nbsp;cell&amp;nbsp;values &lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&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;ld.ShowDropdown&amp;nbsp;=&amp;nbsp;&lt;/span&gt;&lt;span class="keyword"&gt;true&lt;/span&gt;&lt;span&gt;; &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li class="alt"&gt;&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;&lt;/span&gt;&lt;span class="comment"&gt;//&amp;nbsp;Set&amp;nbsp;the&amp;nbsp;cell&amp;#39;s&amp;nbsp;valid&amp;nbsp;values &lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&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;&lt;/span&gt;&lt;span class="keyword"&gt;string&lt;/span&gt;&lt;span&gt;&amp;nbsp;theListOfItemsExcelString&amp;nbsp;=&amp;nbsp;&lt;/span&gt;&lt;span class="keyword"&gt;string&lt;/span&gt;&lt;span&gt;.Format(&lt;/span&gt;&lt;span class="string"&gt;&amp;quot;=\&amp;quot;{0}\&amp;quot;&amp;quot;&lt;/span&gt;&lt;span&gt;,&amp;nbsp;theListItems); &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li class="alt"&gt;&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;ld.SetValuesFormula(theListOfItemsExcelString,&amp;nbsp;theCellAddress); &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&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;&lt;/span&gt;&lt;span class="comment"&gt;//&amp;nbsp;Reference&amp;nbsp;the&amp;nbsp;worksheet&amp;nbsp;cell&amp;nbsp;in&amp;nbsp;the&amp;nbsp;collection &lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li class="alt"&gt;&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;cellCollection&amp;nbsp;=&amp;nbsp;&lt;/span&gt;&lt;span class="keyword"&gt;new&lt;/span&gt;&lt;span&gt;&amp;nbsp;WorksheetReferenceCollection(theWorksheet,&amp;nbsp;theCellAddress); &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li class="alt"&gt;&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;&lt;/span&gt;&lt;span class="comment"&gt;//&amp;nbsp;Add&amp;nbsp;the&amp;nbsp;error&amp;nbsp;message&amp;nbsp;information &lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&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;dataRule.ErrorMessageDescription&amp;nbsp;=&amp;nbsp;&lt;/span&gt;&lt;span class="string"&gt;&amp;quot;Invalid&amp;nbsp;value&amp;nbsp;entered.&amp;quot;&lt;/span&gt;&lt;span&gt;; &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li class="alt"&gt;&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;dataRule.ErrorMessageTitle&amp;nbsp;=&amp;nbsp;&lt;/span&gt;&lt;span class="string"&gt;&amp;quot;Validation&amp;nbsp;Error&amp;quot;&lt;/span&gt;&lt;span&gt;; &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&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;dataRule.ErrorStyle&amp;nbsp;=&amp;nbsp;DataValidationErrorStyle.Stop; &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&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;&lt;/span&gt;&lt;span class="comment"&gt;//&amp;nbsp;Add&amp;nbsp;the&amp;nbsp;input&amp;nbsp;message&amp;nbsp;information &lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li class="alt"&gt;&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;dataRule.InputMessageDescription&amp;nbsp;=&amp;nbsp;&lt;/span&gt;&lt;span class="string"&gt;&amp;quot;Type&amp;nbsp;or&amp;nbsp;select&amp;nbsp;a&amp;nbsp;value&amp;nbsp;from&amp;nbsp;the&amp;nbsp;list.&amp;quot;&lt;/span&gt;&lt;span&gt;; &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&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;dataRule.InputMessageTitle&amp;nbsp;=&amp;nbsp;&lt;/span&gt;&lt;span class="string"&gt;&amp;quot;Value&amp;nbsp;Selection&amp;quot;&lt;/span&gt;&lt;span&gt;; &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&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;&lt;/span&gt;&lt;span class="comment"&gt;//&amp;nbsp;Set&amp;nbsp;whether&amp;nbsp;or&amp;nbsp;not&amp;nbsp;to&amp;nbsp;display&amp;nbsp;the&amp;nbsp;error&amp;nbsp;message&amp;nbsp;after&amp;nbsp;an&amp;nbsp;invalid&amp;nbsp;value&amp;nbsp;was&amp;nbsp;entered &lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li class="alt"&gt;&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;dataRule.ShowErrorMessageForInvalidValue&amp;nbsp;=&amp;nbsp;&lt;/span&gt;&lt;span class="keyword"&gt;true&lt;/span&gt;&lt;span&gt;; &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&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;&lt;/span&gt;&lt;span class="comment"&gt;//&amp;nbsp;Set&amp;nbsp;whether&amp;nbsp;or&amp;nbsp;not&amp;nbsp;to&amp;nbsp;display&amp;nbsp;the&amp;nbsp;input&amp;nbsp;message &lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li class="alt"&gt;&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;dataRule.ShowInputMessage&amp;nbsp;=&amp;nbsp;&lt;/span&gt;&lt;span class="keyword"&gt;true&lt;/span&gt;&lt;span&gt;; &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li class="alt"&gt;&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;&lt;/span&gt;&lt;span class="comment"&gt;//&amp;nbsp;Add&amp;nbsp;the&amp;nbsp;data&amp;nbsp;validation&amp;nbsp;to&amp;nbsp;the&amp;nbsp;worksheet &lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&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;theWorksheet.DataValidationRules.Add(dataRule,&amp;nbsp;cellCollection); &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li class="alt"&gt;&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&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li class="alt"&gt;&lt;span&gt;}&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:small;"&gt;A simple example of using this class is shown here, in the button_click event handler found on the application&amp;rsquo;s main form:&lt;/span&gt;&lt;/p&gt;
&lt;div style="padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;float:none;padding-top:0px;" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:24885996-9eb4-4291-8d9b-118871aa0727" class="wlWriterEditableSmartContent"&gt;
&lt;div class="dp-highlighter"&gt;
&lt;div class="bar"&gt;
&lt;div class="tools"&gt;&lt;a&gt;view plain&lt;/a&gt;&lt;a&gt;copy to clipboard&lt;/a&gt;&lt;a&gt;print&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;ol class="dp-c"&gt;
&lt;li class="alt"&gt;&lt;span&gt;&lt;span class="keyword"&gt;private&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="keyword"&gt;void&lt;/span&gt;&lt;span&gt;&amp;nbsp;btnExport_Click(&lt;/span&gt;&lt;span class="keyword"&gt;object&lt;/span&gt;&lt;span&gt;&amp;nbsp;sender,&amp;nbsp;EventArgs&amp;nbsp;e) &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;{ &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="keyword"&gt;string&lt;/span&gt;&lt;span&gt;&amp;nbsp;validationList&amp;nbsp;=&amp;nbsp;&lt;/span&gt;&lt;span class="keyword"&gt;string&lt;/span&gt;&lt;span&gt;.Empty; &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="comment"&gt;//create&amp;nbsp;a&amp;nbsp;comma&amp;nbsp;delimited&amp;nbsp;list&amp;nbsp;of&amp;nbsp;values&amp;nbsp;(no&amp;nbsp;crazy&amp;nbsp;chars&amp;nbsp;allowed!) &lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="keyword"&gt;foreach&lt;/span&gt;&lt;span&gt;&amp;nbsp;(DataRow&amp;nbsp;d&amp;nbsp;&lt;/span&gt;&lt;span class="keyword"&gt;in&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="keyword"&gt;this&lt;/span&gt;&lt;span&gt;.nwindDataSet.Categories.Rows) &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{ &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;validationList&amp;nbsp;+=&amp;nbsp;d[&lt;/span&gt;&lt;span class="string"&gt;&amp;quot;CategoryName&amp;quot;&lt;/span&gt;&lt;span&gt;].ToString()&amp;nbsp;+&amp;nbsp;&lt;/span&gt;&lt;span class="string"&gt;&amp;quot;,&amp;quot;&lt;/span&gt;&lt;span&gt;; &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;validationList&amp;nbsp;=&amp;nbsp;validationList.TrimEnd(&lt;/span&gt;&lt;span class="keyword"&gt;new&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="keyword"&gt;char&lt;/span&gt;&lt;span&gt;[]&amp;nbsp;{&amp;nbsp;&lt;/span&gt;&lt;span class="string"&gt;&amp;#39;,&amp;#39;&lt;/span&gt;&lt;span&gt;&amp;nbsp;}); &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ExcelListConverter&amp;nbsp;c&amp;nbsp;=&amp;nbsp;&lt;/span&gt;&lt;span class="keyword"&gt;new&lt;/span&gt;&lt;span&gt;&amp;nbsp;ExcelListConverter(&lt;/span&gt;&lt;span class="keyword"&gt;this&lt;/span&gt;&lt;span&gt;.ultraGridExcelExporter1,&amp;nbsp;validationList,&amp;nbsp;&lt;/span&gt;&lt;span class="string"&gt;&amp;quot;CategoryID&amp;quot;&lt;/span&gt;&lt;span&gt;); &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="keyword"&gt;string&lt;/span&gt;&lt;span&gt;&amp;nbsp;theFile&amp;nbsp;=&amp;nbsp;Application.StartupPath&amp;nbsp;+&amp;nbsp;@&lt;/span&gt;&lt;span class="string"&gt;&amp;quot;\theFile.xls&amp;quot;&lt;/span&gt;&lt;span&gt;; &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="keyword"&gt;this&lt;/span&gt;&lt;span&gt;.ultraGridExcelExporter1.Export(&lt;/span&gt;&lt;span class="keyword"&gt;this&lt;/span&gt;&lt;span&gt;.ultraGrid1,&amp;nbsp;theFile); &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;System.Diagnostics.Process.Start(theFile); &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;c&amp;nbsp;=&amp;nbsp;&lt;/span&gt;&lt;span class="keyword"&gt;null&lt;/span&gt;&lt;span&gt;; &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li class="alt"&gt;&lt;span&gt;}&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;span style="font-size:small;"&gt;Now your end users can select from the same list of items in your newly generated Excel file!&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:small;"&gt;You can download the sample application attached to this blog post.&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.infragistics.com/community/aggbug.aspx?PostID=317319" width="1" height="1"&gt;</description><enclosure url="http://www.infragistics.com" length="15639851" type="application/zip" /></item><item><title>WinGrid Repetitive Paste</title><link>http://www.infragistics.com/community/blogs/tom_puglisi/archive/2011/11/14/wingrid-repetitive-paste.aspx</link><pubDate>Mon, 14 Nov 2011 14:14:00 GMT</pubDate><guid isPermaLink="false">7a8b7c76-b7ad-48e0-9694-5b04ca132ed0:315477</guid><dc:creator>[Infragistics] Tom Puglisi</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.infragistics.com/community/blogs/tom_puglisi/rsscomments.aspx?PostID=315477</wfw:commentRss><comments>http://www.infragistics.com/community/blogs/tom_puglisi/archive/2011/11/14/wingrid-repetitive-paste.aspx#comments</comments><description>&lt;p&gt;Ever try to mimic Microsoft&amp;trade; Excel&amp;trade; features in your WinGrid powered application? Well now as of NetAdvantage 2011.2 volume release, there is one more feature added to WinGrid that you can just implement by the use of a property. This is called WinGrid Repetitive Paste. &lt;/p&gt;
&lt;p&gt;Typically when you copy a selection in WinGrid into your clipboard (&lt;a href="http://help.infragistics.com/NetAdvantage/WinForms/2011.1/CLR2.0/?page=WinGrid_Turn_On_Clipboard_Operations.html"&gt;learn more about WinGrid Clipboard Operations&lt;/a&gt;), you can paste the selection to a destination of the same size. With the new WinGrid Repetitive Paste feature, you can now select a region that is LARGER than the original selection and your paste will duplicate across the larger selection. The target destination must be a multiple of the original selection so that the paste can repeat completely each time. &lt;/p&gt;
&lt;p&gt;So how do you take advantage of this new feature? Easy, follow these steps:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Enable clipboard operations by assigning any one or any combination of enumeration bit mask values to the following WinGrid property: &lt;br /&gt;
&lt;div class="wlWriterEditableSmartContent" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:3a614a94-3320-4ca9-8389-3254a2eddc70" style="padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;float:none;padding-top:0px;"&gt;
&lt;div class="dp-highlighter"&gt;
&lt;div class="bar"&gt;
&lt;div class="tools"&gt;&lt;a&gt;view plain&lt;/a&gt;&lt;a&gt;copy to clipboard&lt;/a&gt;&lt;a&gt;print&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;ol class="dp-c"&gt;&lt;br /&gt;
&lt;li class="alt"&gt;&lt;span&gt;&lt;span class="keyword"&gt;this&lt;/span&gt;&lt;span&gt;.ultraGrid1.DisplayLayout.Override.AllowMultiCellOperations&amp;nbsp;=&amp;nbsp;AllowMultiCellOperation.All;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;br /&gt;&lt;br /&gt;&lt;/ol&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;Run your WinGrid application and select one data cell. &lt;br /&gt;&lt;img src="http://media.infragistics.com/community/Release/11.2/WinForms/wingrid_repeating_paste_01.png" alt="" /&gt;&lt;/li&gt;
&lt;li&gt;Press the keyboard combination Control + C&lt;/li&gt;
&lt;li&gt;Create a destination selection on WinGrid. Since we copied only one cell, we can paste to a target of many cells. If we copied more than one cell (E.g., 2), then we would have to create a target selection that is a multiple of that selection (E.g., 2, 4, 6, etc). &lt;br /&gt;&lt;img src="http://media.infragistics.com/community/Release/11.2/WinForms/wingrid_repeating_paste_02.png" alt="" /&gt;&lt;/li&gt;
&lt;li&gt;Press keyboard combination Control + V &lt;br /&gt;&lt;img src="http://media.infragistics.com/community/Release/11.2/WinForms/wingrid_repeating_paste_03.png" alt="" /&gt;&lt;/li&gt;
&lt;li&gt;That&amp;rsquo;s it! This is how you set up and enable WinGrid Repetitive Paste! &lt;/li&gt;
&lt;/ol&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.infragistics.com/community/aggbug.aspx?PostID=315477" width="1" height="1"&gt;</description></item><item><title>Updated Excel-Style Filtering in WinGrid</title><link>http://www.infragistics.com/community/blogs/tom_puglisi/archive/2011/11/14/updated-excel-style-filtering-in-wingrid.aspx</link><pubDate>Mon, 14 Nov 2011 14:13:00 GMT</pubDate><guid isPermaLink="false">7a8b7c76-b7ad-48e0-9694-5b04ca132ed0:315473</guid><dc:creator>[Infragistics] Tom Puglisi</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.infragistics.com/community/blogs/tom_puglisi/rsscomments.aspx?PostID=315473</wfw:commentRss><comments>http://www.infragistics.com/community/blogs/tom_puglisi/archive/2011/11/14/updated-excel-style-filtering-in-wingrid.aspx#comments</comments><description>&lt;p&gt;Infragistics has enhanced and updated the Microsoft&amp;trade; Excel&amp;trade;-style filtering available in WinGrid in previous releases. Whenever enabling Excel-style filtering in WinGrid, you can filter WinGrid rows through a familiar Excel-style filter user interface as shown here:&lt;/p&gt;
&lt;p&gt;&lt;img src="http://media.infragistics.com/community/Release/11.2/WinForms/wingrid_excel_style_filtering_01.png" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;With this kind of filter user interface, end users can check the items that they wish to display in WinGrid. &lt;/p&gt;
&lt;p&gt;When no filter is applied, each column header contains a distinct list of values that you can filter on. These distinct values are loaded into the Excel-style filter UI. &lt;/p&gt;
&lt;p&gt;&lt;img src="http://media.infragistics.com/community/Release/11.2/WinForms/wingrid_excel_style_filtering_02.png" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;New in the Infragistics NetAdvantage 2011.2 volume release, the Excel-style filtering behavior has been enhanced as follows:&lt;/p&gt;
&lt;p&gt;Whenever you apply a filter to any WinGrid column such as we have done here:&lt;/p&gt;
&lt;p&gt;&lt;img src="http://media.infragistics.com/community/Release/11.2/WinForms/wingrid_excel_style_filtering_03.png" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;&amp;hellip;causes the remaining Excel-style filter UI dropdowns in the remaining columns to also be reduced to only contain the remaining items in their respective columns after the other column filter is applied:&lt;/p&gt;
&lt;p&gt;&lt;img src="http://media.infragistics.com/community/Release/11.2/WinForms/wingrid_excel_style_filtering_04.png" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;This enhancement definitely improves upon the Excel-style filtering capabilities that exist on WinGrid. &lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.infragistics.com/community/aggbug.aspx?PostID=315473" width="1" height="1"&gt;</description></item><item><title>“Asyncify” Your WinGrid Exports!</title><link>http://www.infragistics.com/community/blogs/tom_puglisi/archive/2011/11/14/asyncify-your-wingrid-exports.aspx</link><pubDate>Mon, 14 Nov 2011 14:10:00 GMT</pubDate><guid isPermaLink="false">7a8b7c76-b7ad-48e0-9694-5b04ca132ed0:315472</guid><dc:creator>[Infragistics] Tom Puglisi</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.infragistics.com/community/blogs/tom_puglisi/rsscomments.aspx?PostID=315472</wfw:commentRss><comments>http://www.infragistics.com/community/blogs/tom_puglisi/archive/2011/11/14/asyncify-your-wingrid-exports.aspx#comments</comments><description>&lt;p&gt;So you have a WinGrid powered application that contains exporting capabilities. This app was very easy to set up so that with the click of a button you can export to Microsoft&amp;trade; Excel&amp;trade;, Microsoft&amp;trade; Word&amp;trade;, PDF, or XPS formats. How do you make such awesome functionality even &amp;ldquo;Awesomer&amp;quot;? By adding the ability to export to these existing formats in an asynchronous fashion!&lt;/p&gt;
&lt;p&gt;WinGrid Excel Exporting Async! &lt;/p&gt;
&lt;p&gt;&lt;img height="492" width="641" src="http://media.infragistics.com/community/Release/11.2/WinForms/wingrid_async_export_01.png" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;Why is this better? Whenever performing any code operation that is part of the user interface thread, your UI will &amp;ldquo;freeze&amp;rdquo; or not respond until the operation completes. If you can convert any of these operations to execute outside of the UI thread, your end-user experience can be improved. This does not mean it will be faster, however it means that the perceived performance and application responsiveness will be greatly improved. Bonus points if you even provide your end user with the ability to cancel a currently running operation. &lt;/p&gt;
&lt;p&gt;Well, Infragistics has done it again! They have added an incredible feature to their exporting components so that you can choose to export in an asynchronous fashion just by calling the &amp;ldquo;async&amp;rdquo; version of the export method! The following exporting components have been given Asynchronous exporting capabilities:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;WinGridExcelExporter&lt;/li&gt;
&lt;li&gt;WinGridDocumentExporter&lt;/li&gt;
&lt;li&gt;WinGridWordWriter&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Consider the following simple pattern used to generate a file and then open it. This could be executed at the least from a Button_Click event handler:&lt;/p&gt;
&lt;div class="wlWriterEditableSmartContent" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:7356bcb7-2d49-4efc-abd7-da3d77f3b196" style="padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;float:none;padding-top:0px;"&gt;
&lt;div class="dp-highlighter"&gt;
&lt;div class="bar"&gt;
&lt;div class="tools"&gt;&lt;a&gt;view plain&lt;/a&gt;&lt;a&gt;copy to clipboard&lt;/a&gt;&lt;a&gt;print&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;ol class="dp-c"&gt;
&lt;li class="alt"&gt;&lt;span&gt;&lt;span&gt;_theFile&amp;nbsp;=&amp;nbsp;Application.StartupPath&amp;nbsp;+&amp;nbsp;@&lt;/span&gt;&lt;span class="string"&gt;&amp;quot;\theFile.xlsx&amp;quot;&lt;/span&gt;&lt;span&gt;; &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="keyword"&gt;this&lt;/span&gt;&lt;span&gt;.ultraGridExcelExporter1.Export(&lt;/span&gt;&lt;span class="keyword"&gt;this&lt;/span&gt;&lt;span&gt;.customersUltraGrid,&amp;nbsp;_theFile); &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li class="alt"&gt;&lt;span&gt;System.Diagnostics.Process.Start(_theFile);&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Converting this into an asynchronous operation requires a small change. First we must remove the Process.Start( ) out of this code block. Although this code has worked in my applications for many years and still exists in many production apps, there is a better place to relocate the Process.Start( ) line of code:&lt;/p&gt;
&lt;div class="wlWriterEditableSmartContent" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:68252790-3b2e-4405-8a62-9735bcae884c" style="padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;float:none;padding-top:0px;"&gt;
&lt;div class="dp-highlighter"&gt;
&lt;div class="bar"&gt;
&lt;div class="tools"&gt;&lt;a&gt;view plain&lt;/a&gt;&lt;a&gt;copy to clipboard&lt;/a&gt;&lt;a&gt;print&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;ol class="dp-c"&gt;
&lt;li class="alt"&gt;&lt;span&gt;&lt;span class="keyword"&gt;private&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="keyword"&gt;void&lt;/span&gt;&lt;span&gt;&amp;nbsp;ultraGridExcelExporter1_ExportEnded( &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="keyword"&gt;object&lt;/span&gt;&lt;span&gt;&amp;nbsp;sender,&amp;nbsp;Infragistics.Win.UltraWinGrid.ExcelExport.ExportEndedEventArgs&amp;nbsp;e) &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li class="alt"&gt;&lt;span&gt;{ &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;System.Diagnostics.Process.Start(_theFile); &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li class="alt"&gt;&lt;span&gt;}&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;The exporting component, in this case WinGridExcelExporter has an &amp;ldquo;Export Ended&amp;rdquo; event. This is going to fire for sure whenever the export has completed. &lt;/p&gt;
&lt;p&gt;Also note that I use a class scoped string variable that represents the file name. I used to also declare, set a value, and then use a local string variable to create the file name. If you too are employing that pattern, you should also move it up into a class-scoped variable as I am doing here. My sample code here also uses a silly, hard-coded value; a production application will generate a more elegant file name OR leave it up to your end user with a file save dialog. &lt;/p&gt;
&lt;p&gt;The next change to make this operation asynchronous is to call the ExportAsync( ) method from the exporting component:&lt;/p&gt;
&lt;div class="wlWriterEditableSmartContent" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:d70dad44-098f-461a-a8b7-0d6d54c0138f" style="padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;float:none;padding-top:0px;"&gt;
&lt;div class="dp-highlighter"&gt;
&lt;div class="bar"&gt;
&lt;div class="tools"&gt;&lt;a&gt;view plain&lt;/a&gt;&lt;a&gt;copy to clipboard&lt;/a&gt;&lt;a&gt;print&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;ol class="dp-c"&gt;
&lt;li class="alt"&gt;&lt;span&gt;&lt;span class="keyword"&gt;this&lt;/span&gt;&lt;span&gt;.ultraGridExcelExporter1.ExportAsync(&lt;/span&gt;&lt;span class="keyword"&gt;this&lt;/span&gt;&lt;span&gt;.customersUltraGrid,&amp;nbsp;_theFile);&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Now there is just one more thing that depends on how your application is designed. To sum up the next step:&lt;/p&gt;
&lt;p&gt;DO NOT TOUCH THE GRID WHILE EXPORTING :)&lt;/p&gt;
&lt;p&gt;WinGrid and WinGridExcelExporter provide a progress indicator as well as an overlay so that you cannot physically click or interact with the grid. You can even cancel the export process through this intrinsic UI that was built into WinGrid. However, my warning is targeted to those situations where you have OTHER user interface controls that when clicked could be invoking methods on WinGrid. If you do, then you should disable those controls BEFORE the export and enable them AFTER the export. &lt;/p&gt;
&lt;p&gt;There you go, this is the info you basically need to convert your synchronous export to an asynchronous export!&lt;/p&gt;
&lt;p&gt;Summary&lt;/p&gt;
&lt;p&gt;Code to export async:&lt;/p&gt;
&lt;div class="wlWriterEditableSmartContent" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:c54191b8-039c-4fa8-9cf8-f97ab72fbf97" style="padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;float:none;padding-top:0px;"&gt;
&lt;div class="dp-highlighter"&gt;
&lt;div class="bar"&gt;
&lt;div class="tools"&gt;&lt;a&gt;view plain&lt;/a&gt;&lt;a&gt;copy to clipboard&lt;/a&gt;&lt;a&gt;print&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;ol class="dp-c"&gt;
&lt;li class="alt"&gt;&lt;span&gt;&lt;span class="keyword"&gt;private&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="keyword"&gt;void&lt;/span&gt;&lt;span&gt;&amp;nbsp;toolStripButton1_Click(&lt;/span&gt;&lt;span class="keyword"&gt;object&lt;/span&gt;&lt;span&gt;&amp;nbsp;sender,&amp;nbsp;EventArgs&amp;nbsp;e) &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;{ &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="comment"&gt;//You&amp;nbsp;can&amp;nbsp;also&amp;nbsp;put&amp;nbsp;in&amp;nbsp;code&amp;nbsp;to&amp;nbsp;disable&amp;nbsp;those&amp;nbsp;controls&amp;nbsp;that&amp;nbsp;interact&amp;nbsp;with&amp;nbsp;WinGrid &lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;_theFile&amp;nbsp;=&amp;nbsp;Application.StartupPath&amp;nbsp;+&amp;nbsp;@&lt;/span&gt;&lt;span class="string"&gt;&amp;quot;\theFile.xlsx&amp;quot;&lt;/span&gt;&lt;span&gt;; &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="keyword"&gt;this&lt;/span&gt;&lt;span&gt;.ultraGridExcelExporter1.ExportAsync(&lt;/span&gt;&lt;span class="keyword"&gt;this&lt;/span&gt;&lt;span&gt;.customersUltraGrid,&amp;nbsp;_theFile); &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li class="alt"&gt;&lt;span&gt;} &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li class="alt"&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="keyword"&gt;private&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="keyword"&gt;void&lt;/span&gt;&lt;span&gt;&amp;nbsp;ultraGridExcelExporter1_ExportEnded( &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="keyword"&gt;object&lt;/span&gt;&lt;span&gt;&amp;nbsp;sender,&amp;nbsp;Infragistics.Win.UltraWinGrid.ExcelExport.ExportEndedEventArgs&amp;nbsp;e) &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li class="alt"&gt;&lt;span&gt;{ &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;System.Diagnostics.Process.Start(_theFile); &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="comment"&gt;//If&amp;nbsp;you&amp;nbsp;disabled&amp;nbsp;any&amp;nbsp;UI&amp;nbsp;controls&amp;nbsp;that&amp;nbsp;interact&amp;nbsp;with&amp;nbsp;WinGrid,&amp;nbsp;enable&amp;nbsp;them&amp;nbsp;HERE. &lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li class="alt"&gt;&lt;span&gt;}&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;/div&gt;
&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.infragistics.com/community/aggbug.aspx?PostID=315472" width="1" height="1"&gt;</description></item><item><title>Docs on Upgrading to the new XAML controls</title><link>http://www.infragistics.com/community/blogs/tom_puglisi/archive/2010/06/16/docs-on-upgrading-to-the-new-xaml-controls.aspx</link><pubDate>Wed, 16 Jun 2010 13:55:00 GMT</pubDate><guid isPermaLink="false">7a8b7c76-b7ad-48e0-9694-5b04ca132ed0:235900</guid><dc:creator>[Infragistics] Tom Puglisi</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.infragistics.com/community/blogs/tom_puglisi/rsscomments.aspx?PostID=235900</wfw:commentRss><comments>http://www.infragistics.com/community/blogs/tom_puglisi/archive/2010/06/16/docs-on-upgrading-to-the-new-xaml-controls.aspx#comments</comments><description>&lt;p&gt;&lt;b&gt;Intro&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;As you may have heard, Infragistics made some great changes to evolve and merge our XAML-based product&amp;#39;s code base so that you can easily port code from your NetAdvantage-powered Silverlight application to a NetAdvantage-powered WPF application and vise-versa. To understand the technical details behind this change, make sure you read&lt;a title="Devin Rader&amp;#39;s Blog Post" href="http://blogs.infragistics.com/blogs/devin_rader/archive/2010/06/15/xaml-control-unification-changes-in-2010-2.aspx"&gt; Devin Rader&amp;#39;s blog post&lt;/a&gt;. &lt;/p&gt;
&lt;p&gt;The purpose of my blog post is to ensure that you know about some topics in our documentation that will help you through the process of upgrading to the latest 10.2 version of NetAdvantage XAML based products. &lt;/p&gt;
&lt;p&gt;&lt;b&gt;Project Version Utility&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;If you want a tool that will automatically upgrade your project(s), update your namespaces, class names, references, and any other work that needs to be done in order for the upgrade to succeed, you can use the Project Version Utility - a utility that ships with the 10.2 version of ALL NetAdvantage products. For documentation on how to use the Project Version Utility, please check out the following documentation:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://help.infragistics.com/NetAdvantage/Silverlight/2010.2/CLR4.0/?page=Upgrading_Your_Projects_from_NA_SL_10.1_to_10.2_Using_Version_Utility.html"&gt;Using the Project Version Utility&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;You can also perform the upgrade manually by &lt;a href="http://help.infragistics.com/NetAdvantage/Silverlight/2010.2/CLR4.0/?page=Upgrading_Your_Projects_from_NA_SL_10.1_to_10.2_Manually.html"&gt;following this topic.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;If you ever wanted to back out of the upgrade, &lt;a href="http://help.infragistics.com/NetAdvantage/Silverlight/2010.2/CLR4.0/?page=Restoring_Version_Upgrade_Utility_Backup_Undoing_Upgrade.html"&gt;this topic&lt;/a&gt; explains how to do this as well.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Assembly Namespace Changes&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;If you want to know the details of all assembly, namespace, class, and member changes, check out the following documentation:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://help.infragistics.com/NetAdvantage/Silverlight/2010.2/CLR4.0/?page=Breaking_Changes_2010_Volume_2_Assemly_Rename_and_Refactoring.html"&gt;NetAdvantage Silverlight 10.2 Assembly Rename and Refactoring&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.infragistics.com/community/aggbug.aspx?PostID=235900" width="1" height="1"&gt;</description></item><item><title>ASP.NET Aikido Controls Client-Side Object Model Code Snippets</title><link>http://www.infragistics.com/community/blogs/tom_puglisi/archive/2010/05/21/asp-net-aikido-controls-client-side-object-model-code-snippets.aspx</link><pubDate>Fri, 21 May 2010 18:54:00 GMT</pubDate><guid isPermaLink="false">7a8b7c76-b7ad-48e0-9694-5b04ca132ed0:231765</guid><dc:creator>[Infragistics] Tom Puglisi</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.infragistics.com/community/blogs/tom_puglisi/rsscomments.aspx?PostID=231765</wfw:commentRss><comments>http://www.infragistics.com/community/blogs/tom_puglisi/archive/2010/05/21/asp-net-aikido-controls-client-side-object-model-code-snippets.aspx#comments</comments><description>&lt;p&gt;Today is the official anniversary of the PacMan video game from the 80s. Google has done a great job of adding a browser embedded version of the game. After you have spent some time advancing several levels you may feel guilty that you have not been so productive. In order to compensate for the time you have spent playing PacMan, I have something that will allow you to redeem yourself and increase your knowledge of the Infragistics NetAdvantage ASP.NET Aikido controls&amp;rsquo; client-side object model (CSOM). With this knowledge, you will be more productive, you will be able to design and architect your application more elegantly by handling client-side events, and interacting with the control&amp;rsquo;s client-side instance directly. &lt;br /&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Client-Side Events&lt;/b&gt;&lt;br /&gt;The NetAdvantage ASP.NET Aikido controls have many server-side string properties that actually represent client-side events. These string properties are assigned the name of the JavaScript function that gets invoked whenever a certain control event takes place on the client. These server-side properties that represent client-side events are well documented in the API guide by containing examples of the event and how to use the event arguments. The following information explains how to get to this information:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Start by going to the NetAdvantage ASP.NET online help:&lt;br /&gt;&lt;a href="http://help.infragistics.com/NetAdvantage/ASPNET/2010.1/CLR3.5/"&gt;http://help.infragistics.com/NetAdvantage/ASPNET/2010.1/CLR3.5/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;In the Table of Contents (TOC) locate and expand the API Reference Guide&lt;br /&gt;&lt;a href="http://blogs.infragistics.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/tom_5F00_puglisi/1.png"&gt;&lt;img src="http://blogs.infragistics.com/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/tom_5F00_puglisi/1.png" border="0" alt="" /&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Locate and expand the Infragistics.Web assembly TOC node:&lt;br /&gt;&lt;a href="http://blogs.infragistics.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/tom_5F00_puglisi/2.png"&gt;&lt;img src="http://blogs.infragistics.com/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/tom_5F00_puglisi/2.png" border="0" alt="" /&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Locate and expand the Infragistics.Web.UI.ListControls Namespace TOC node&lt;br /&gt;&lt;a href="http://blogs.infragistics.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/tom_5F00_puglisi/3.png"&gt;&lt;img src="http://blogs.infragistics.com/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/tom_5F00_puglisi/3.png" border="0" alt="" /&gt;&lt;br /&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Locate and expand the WebDropDown TOC node. We will use WebDropDown as the example. Locate and expand the Properties TOC node:&lt;br /&gt;&lt;a href="http://blogs.infragistics.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/tom_5F00_puglisi/4.png"&gt;&lt;img src="http://blogs.infragistics.com/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/tom_5F00_puglisi/4.png" border="0" alt="" /&gt;&lt;br /&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Now locate and click the ClientEvents property TOC node:&lt;br /&gt;&lt;a href="http://blogs.infragistics.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/tom_5F00_puglisi/5.png"&gt;&lt;img src="http://blogs.infragistics.com/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/tom_5F00_puglisi/5.png" border="0" alt="" /&gt;&lt;br /&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;The ClientEvents API topic shows the type that represents the WebDropDown control&amp;rsquo;s ClientEvents property. You can see that this property is of type DropDownClientEvents. Click the link to the DropDownClientEvents API documentation:&lt;br /&gt;&lt;a href="http://blogs.infragistics.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/tom_5F00_puglisi/6.png"&gt;&lt;img src="http://blogs.infragistics.com/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/tom_5F00_puglisi/6.png" border="0" alt="" /&gt;&lt;br /&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;This takes you to the DropDownClientEvents Class API Documentation. In this topic, click the link to the DropDownClientEvents Members topic:&lt;br /&gt;&lt;a href="http://blogs.infragistics.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/tom_5F00_puglisi/7.png"&gt;&lt;img src="http://blogs.infragistics.com/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/tom_5F00_puglisi/7.png" border="0" alt="" /&gt;&lt;br /&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;This takes you to the class member documentation. In this topic you will find server-side string properties that actually represent various client-side events associated with WebDropDown. Click on the ActivationChanged link:&lt;br /&gt;&lt;a href="http://blogs.infragistics.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/tom_5F00_puglisi/8.png"&gt;&lt;img src="http://blogs.infragistics.com/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/tom_5F00_puglisi/8.png" border="0" alt="" /&gt;&lt;br /&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;This takes you to your end-point; the example JavaScript code for how to wire up the event (using C# or VB.NET code in your code-behind) as well as the JavaScript function signature and example code for interacting with the event arguments and the control all using client-side JavaScript.&lt;br /&gt;&lt;a href="http://blogs.infragistics.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/tom_5F00_puglisi/9.png"&gt;&lt;img src="http://blogs.infragistics.com/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/tom_5F00_puglisi/9.png" border="0" alt="" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Using this logic, you can get to lots of CSOM documentation that shows how to leverage more of the Aikido framework based NetAdvantage ASP.NET controls.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.infragistics.com/community/aggbug.aspx?PostID=231765" width="1" height="1"&gt;</description><category domain="http://www.infragistics.com/community/blogs/tom_puglisi/archive/tags/ASP.NET+Aikido+CSOM+Example+API+Documentation/default.aspx">ASP.NET Aikido CSOM Example API Documentation</category></item><item><title>Introducing NetAdvantage Help for Microsoft Visual Studio 2010</title><link>http://www.infragistics.com/community/blogs/tom_puglisi/archive/2010/05/05/introducing-netadvantage-help-for-microsoft-visual-studio-2010.aspx</link><pubDate>Wed, 05 May 2010 13:37:00 GMT</pubDate><guid isPermaLink="false">7a8b7c76-b7ad-48e0-9694-5b04ca132ed0:229186</guid><dc:creator>[Infragistics] Tom Puglisi</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.infragistics.com/community/blogs/tom_puglisi/rsscomments.aspx?PostID=229186</wfw:commentRss><comments>http://www.infragistics.com/community/blogs/tom_puglisi/archive/2010/05/05/introducing-netadvantage-help-for-microsoft-visual-studio-2010.aspx#comments</comments><description>&lt;p&gt;










&lt;/p&gt;
&lt;p class="MsoNormal"&gt;Infragistics is proud to announce the &lt;b&gt;new NetAdvantage help for the
Microsoft&amp;trade; Visual Studio&amp;trade; 2010 platform&lt;/b&gt;. The NetAdvantage docs that you have
been using to help you through your development are now available for the new Visual
Studio 2010 IDE. You can download the NetAdvantage Visual Studio help through the
&lt;b&gt;My IG &amp;gt; Keys &amp;amp; Downloads&lt;/b&gt; section of our site:&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;a href="http://community.infragistics.com/cfs-filesystemfile.ashx/__key/CommunityServer.Discussions.Components.Files/257/3225.2.png"&gt;&lt;img src="http://community.infragistics.com/cfs-filesystemfile.ashx/__key/CommunityServer.Discussions.Components.Files/257/3225.2.png" style="max-width:550px;" border="0" alt="" /&gt;&lt;br /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;Since this is a new version of the Microsoft help platform,
there are a few known issues that are expected to be resolved. You can check out
these known issues in this blog post:&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;a href="http://blogs.infragistics.com/blogs/tom_puglisi/archive/2010/05/04/infragistics-netadvantage-visual-studio-2010-help-issues.aspx"&gt;http://blogs.infragistics.com/blogs/tom_puglisi/archive/2010/05/04/infragistics-netadvantage-visual-studio-2010-help-issues.aspx&lt;br /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;b&gt;Attention Windows
Forms and ASP.NET Developers:&lt;/b&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;Additional steps are required to successfully install and
register the NetAdvantage help for Visual Studio 2010. Please read this blog
post to learn how to install the Visual Studio 2010 help for NetAdvantage Windows
Forms and ASP.NET:&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;a href="http://blogs.infragistics.com/blogs/tom_puglisi/archive/2010/05/04/installing-visual-studio-2010-help-for-netadvantage-windows-forms-and-asp-net-products.aspx"&gt;http://blogs.infragistics.com/blogs/tom_puglisi/archive/2010/05/04/installing-visual-studio-2010-help-for-netadvantage-windows-forms-and-asp-net-products.aspx&lt;br /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;If you wish to uninstall the Visual Studio 2010 help for NetAdvantage
Windows Forms and ASP.NET, read this blog post to learn how to do so:&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;a href="http://blogs.infragistics.com/blogs/tom_puglisi/archive/2010/05/04/uninstalling-netadvantage-windows-forms-and-asp-net-visual-studio-2010-help.aspx"&gt;http://blogs.infragistics.com/blogs/tom_puglisi/archive/2010/05/04/uninstalling-netadvantage-windows-forms-and-asp-net-visual-studio-2010-help.aspx&lt;br /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;We are here to ensure your successful use of our new
NetAdvantage help for Visual Studio 2010. If you experience any issues or need
any assistance, we are more than happy to help! Please send us an email:&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;a href="mailto:helpfeedback@infragistics.com"&gt;helpfeedback@infragistics.com&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;
&lt;span style="font-size:11pt;line-height:115%;font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;Thank you!&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.infragistics.com/community/aggbug.aspx?PostID=229186" width="1" height="1"&gt;</description><category domain="http://www.infragistics.com/community/blogs/tom_puglisi/archive/tags/Visual+Studio+2010+Help/default.aspx">Visual Studio 2010 Help</category></item><item><title>Infragistics NetAdvantage Visual Studio 2010 Help Issues</title><link>http://www.infragistics.com/community/blogs/tom_puglisi/archive/2010/05/04/infragistics-netadvantage-visual-studio-2010-help-issues.aspx</link><pubDate>Tue, 04 May 2010 20:24:00 GMT</pubDate><guid isPermaLink="false">7a8b7c76-b7ad-48e0-9694-5b04ca132ed0:229077</guid><dc:creator>[Infragistics] Tom Puglisi</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.infragistics.com/community/blogs/tom_puglisi/rsscomments.aspx?PostID=229077</wfw:commentRss><comments>http://www.infragistics.com/community/blogs/tom_puglisi/archive/2010/05/04/infragistics-netadvantage-visual-studio-2010-help-issues.aspx#comments</comments><description>&lt;p&gt;&lt;b&gt;VS2010 Help Issues&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;The new Microsoft Visual Studio 2010 Help system is built upon a completely new system. The Visual Studio 2010 IDE ships with the first version of the new help system. There are several known issues in the help system that results in a less than optimal experience when viewing Infragistics NetAdvantage help content. We are attempting to resolve these issues by a combination of workarounds as well as waiting for fixes to be made to this first iteration of the Microsoft help system. &lt;br /&gt;This topic outlines some of these known issues. &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;No Horizontal Scrolling&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;The new Microsoft help system renders content into a user interface assembled with HTML. Within this user interface, you do not have the ability to scroll content horizontally. Because of this change in user interface design, any content that exists within &amp;lt;pre&amp;gt; tags combined with line breaks no longer wraps into the viewable area of the user interface. In certain cases, code does not wrap into view, nor can you scroll horizontally to view it. The workaround is to double-click the line of code to select it, then copy and paste the content into a text editor. As another workaround, if you have two monitors, you can move the help viewer to your left monitor, then resize the window so that it extends to the right monitor.&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;a href="http://blogs.infragistics.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/tom_5F00_puglisi/issues_5F00_5F00_5F00_1.png"&gt;&lt;img src="http://blogs.infragistics.com/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/tom_5F00_puglisi/issues_5F00_5F00_5F00_1.png" border="0" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Code Shredding&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Line Breaks and Non-breaking spaces within code blocks that worked in the previous help system no longer work the same in the new help system. Any code content within &amp;lt;pre&amp;gt; tags that contains multiple non-breaking spaces or line breaks is subject to this issue. This problem is more apparent with markup based code. &lt;br /&gt;&lt;br /&gt;Microsoft plans on shipping an updated version of the help software that addresses this issue. &lt;br /&gt;&lt;br /&gt;The workaround is to use the code coloring scheme to differentiate between code and comments.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.infragistics.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/tom_5F00_puglisi/issues_5F00_5F00_5F00_2.png"&gt;&lt;img src="http://blogs.infragistics.com/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/tom_5F00_puglisi/issues_5F00_5F00_5F00_2.png" border="0" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Installing on non en-US versions of Visual Studio 2010&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;You may experience issues when installing the NetAdvantage Visual Studio 2010 help on non en-US versions of Visual Studio. In some cases, the installation may be successful,&amp;nbsp;&amp;nbsp;&amp;nbsp; however you may not be able to load any of the NetAdvantage content. If this happens, you can try to manually register the help files as described in this blog post:&lt;br /&gt;Follow steps #4 and up&lt;br /&gt;&lt;a target="_blank" title="http://blogs.infragistics.com/blogs/tom_puglisi/archive/2010/05/04/installing-visual-studio-2010-help-for-netadvantage-windows-forms-and-asp-net-products.aspx" href="http://blogs.infragistics.com/blogs/tom_puglisi/archive/2010/05/04/installing-visual-studio-2010-help-for-netadvantage-windows-forms-and-asp-net-products.aspx"&gt;http://blogs.infragistics.com/blogs/tom_puglisi/archive/2010/05/04/installing-visual-studio-2010-help-for-netadvantage-windows-forms-and-asp-net-products.aspx&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Additional end-user experience changes&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Microsoft has also designed a new end-user experience for navigating and searching through the help. The following items describe some of these changes:&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Table of Contents (TOC)&lt;/b&gt; &lt;br /&gt;In previous versions of the installed help, the TOC was an interactive, infinitely expandable tree-like node structure that represents all topics and sub-topics. The new experience is slightly different. The new TOC represents the current topic&amp;rsquo;s sibling nodes as well as the current topic&amp;rsquo;s child nodes. The new TOC browsing experience will be to click on TOC nodes and then view the child topics. You then click on the child topics that interest you and then further drill down by continuously clicking. You cannot expand other sibling nodes simultaneously. You must navigate back to the higher level TOC nodes and then drill down through the sibling child nodes.&amp;nbsp; This new design is to promote a positive low-bandwidth usage experience. This new design is also intended to promote an increased usage of the help system&amp;rsquo;s search functionality, where the end-user types in search criteria and performs a search rather than navigating and discovering content through the TOC.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.infragistics.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/tom_5F00_puglisi/Design_5F00_01.png"&gt;&lt;img src="http://blogs.infragistics.com/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/tom_5F00_puglisi/Design_5F00_01.png" border="0" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Search Results&lt;/b&gt;&lt;br /&gt;Search results cannot be filtered as was possible in the previous help system. When reviewing search results, you will essentially page through as many results as needed until you locate the topic that you are interested in. It is also possible that your search results will contain content from multiple libraries (E.g., Microsoft content, Infragistics content, etc).&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.infragistics.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/tom_5F00_puglisi/Design_5F00_02.png"&gt;&lt;img src="http://blogs.infragistics.com/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/tom_5F00_puglisi/Design_5F00_02.png" border="0" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Search Index&lt;/b&gt;&lt;br /&gt;The new help system currently does not have a keyword index. In the previous help version, you can type in a few letters of what you believe to be the search criteria and immediately, you can see a list of keywords that are similar to your text. This functionality currently does not exist in the new help system. In the new help system, you type in the search criteria and then press the Search button.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Help Library Agent&lt;/b&gt;&lt;br /&gt;The new help system is hosted by a local service that serves up help content via a mini web server. This service must be running when using the new help system. In most cases, the service will be launched when you view help content through Visual Studio or through the start menu shortcut to the Infragistics NetAdvantage help.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.infragistics.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/tom_5F00_puglisi/Design_5F00_03.png"&gt;&lt;img src="http://blogs.infragistics.com/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/tom_5F00_puglisi/Design_5F00_03.png" border="0" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.infragistics.com/community/aggbug.aspx?PostID=229077" width="1" height="1"&gt;</description><category domain="http://www.infragistics.com/community/blogs/tom_puglisi/archive/tags/Visual+Studio+2010+Help+Known+Issues/default.aspx">Visual Studio 2010 Help Known Issues</category></item><item><title>Uninstalling NetAdvantage Windows Forms and ASP.NET Visual Studio 2010 Help</title><link>http://www.infragistics.com/community/blogs/tom_puglisi/archive/2010/05/04/uninstalling-netadvantage-windows-forms-and-asp-net-visual-studio-2010-help.aspx</link><pubDate>Tue, 04 May 2010 20:15:00 GMT</pubDate><guid isPermaLink="false">7a8b7c76-b7ad-48e0-9694-5b04ca132ed0:229076</guid><dc:creator>[Infragistics] Tom Puglisi</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.infragistics.com/community/blogs/tom_puglisi/rsscomments.aspx?PostID=229076</wfw:commentRss><comments>http://www.infragistics.com/community/blogs/tom_puglisi/archive/2010/05/04/uninstalling-netadvantage-windows-forms-and-asp-net-visual-studio-2010-help.aspx#comments</comments><description>&lt;p&gt;










&lt;/p&gt;
&lt;p class="MsoNormal"&gt;This topic will show you how to uninstall Infragistics
NetAdvantage Windows Forms and ASP.NET Help content from your Microsoft Visual
Studio Help system.&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpFirst" style="text-indent:-0.25in;"&gt;&lt;span&gt;&lt;span&gt;1.&lt;span style="font:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;Launch the Visual Studio Help Library Manager&lt;br /&gt;
&lt;span&gt;
 
 
  
  
  
  
  
  
  
  
  
  
  
  
 
 
 

 
&lt;a href="http://blogs.infragistics.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/tom_5F00_puglisi/uninstall_5F00_1.png"&gt;&lt;img src="http://blogs.infragistics.com/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/tom_5F00_puglisi/uninstall_5F00_1.png" border="0" alt="" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpMiddle"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpMiddle" style="text-indent:-0.25in;"&gt;&lt;span&gt;&lt;span&gt;2.&lt;span style="font:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;In the Help Library Manager dialog, click the
Remove Content link&lt;br /&gt;
&lt;span&gt;
 
&lt;a href="http://blogs.infragistics.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/tom_5F00_puglisi/uninstall_5F00_2.png"&gt;&lt;img src="http://blogs.infragistics.com/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/tom_5F00_puglisi/uninstall_5F00_2.png" border="0" alt="" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpMiddle"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpMiddle" style="text-indent:-0.25in;"&gt;&lt;span&gt;&lt;span&gt;3.&lt;span style="font:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;Locate the Help library that you wish to remove
and click its Remove link&lt;br /&gt;
&lt;span&gt;
 
&lt;a href="http://blogs.infragistics.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/tom_5F00_puglisi/uninstall_5F00_3.png"&gt;&lt;img src="http://blogs.infragistics.com/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/tom_5F00_puglisi/uninstall_5F00_3.png" border="0" alt="" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpMiddle"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpMiddle" style="text-indent:-0.25in;"&gt;&lt;span&gt;&lt;span&gt;4.&lt;span style="font:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;Click the Remove button towards the bottom of
the dialog window&lt;br /&gt;
&lt;span&gt;
 
&lt;a href="http://blogs.infragistics.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/tom_5F00_puglisi/uninstall_5F00_4.png"&gt;&lt;img src="http://blogs.infragistics.com/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/tom_5F00_puglisi/uninstall_5F00_4.png" border="0" alt="" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpMiddle"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpMiddle" style="text-indent:-0.25in;"&gt;&lt;span&gt;&lt;span&gt;5.&lt;span style="font:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;The Help removal process may take a few moments
to complete&lt;br /&gt;
&lt;span&gt;
 
&lt;a href="http://blogs.infragistics.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/tom_5F00_puglisi/uninstall_5F00_5.png"&gt;&lt;img src="http://blogs.infragistics.com/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/tom_5F00_puglisi/uninstall_5F00_5.png" border="0" alt="" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpMiddle"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpMiddle" style="text-indent:-0.25in;"&gt;&lt;span&gt;&lt;span&gt;6.&lt;span style="font:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;When the process is complete, click the Finish
button&lt;br /&gt;
&lt;span&gt;
 
&lt;a href="http://blogs.infragistics.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/tom_5F00_puglisi/uninstall_5F00_6.png"&gt;&lt;img src="http://blogs.infragistics.com/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/tom_5F00_puglisi/uninstall_5F00_6.png" border="0" alt="" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpMiddle"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpMiddle" style="text-indent:-0.25in;"&gt;&lt;span&gt;&lt;span&gt;7.&lt;span style="font:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;Go to your operating system&amp;rsquo;s Control Panel and
launch the Add/Remove Programs dialog&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpMiddle"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpMiddle" style="text-indent:-0.25in;"&gt;&lt;span&gt;&lt;span&gt;8.&lt;span style="font:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;Locate and uninstall the NetAdvantage Help that
you wish to remove&lt;br /&gt;
&lt;span&gt;
 
&lt;a href="http://blogs.infragistics.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/tom_5F00_puglisi/uninstall_5F00_8.png"&gt;&lt;img src="http://blogs.infragistics.com/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/tom_5F00_puglisi/uninstall_5F00_8.png" border="0" alt="" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpMiddle"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpLast" style="text-indent:-0.25in;"&gt;&lt;span&gt;&lt;span&gt;9.&lt;span style="font:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;This completes the removal of the NetAdvantage
Help files from your computer&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.infragistics.com/community/aggbug.aspx?PostID=229076" width="1" height="1"&gt;</description><category domain="http://www.infragistics.com/community/blogs/tom_puglisi/archive/tags/Visual+Studio+2010+Help/default.aspx">Visual Studio 2010 Help</category></item></channel></rss>