<?xml version="1.0" encoding="iso-8859-1"?>
<rss version="2.0">
  <channel>
    <title>Iordan Pavlov's blog</title>
    <description>Iordan Pavlov's blog</description>
    <link>http://blogs.telerik.com/IordanPavlov/Posts.aspx</link>
    <docs>http://backend.userland.com/rss</docs>
    <item>
      <title>Microsoft Unveils Next Version of Visual Studio and .NET Framework</title>
      <description>&lt;p&gt;If you are passionate about technology like I am, especially from Microsoft you will most probably find it interesting that MS revealed the new versions of Visual Studio and the .NET Framework will be 2010 and 4.0 respectively.&lt;/p&gt;  &lt;p&gt;A screenshot of Visual Studio 2010 is also available:&lt;/p&gt;  &lt;p&gt;&lt;img src="http://i.msdn.microsoft.com/cc948977.ArcExpl01(en-us,MSDN.10).jpg" /&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;It seems that Microsoft is looking to help developers produce high quality software in a more agile manner by introducing tools like &lt;a href="http://msdn.microsoft.com/vsts2008/products/bb725993.aspx#Elim" target="_blank"&gt;the Microsoft Test Runner&lt;/a&gt; and &lt;a href="http://msdn.microsoft.com/vsts2008/products/bb725993.aspx#Id" target="_blank"&gt;the new Test Impact View window&lt;/a&gt; in this release of Visual Studio.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;You can find the &lt;a href="http://www.microsoft.com/presspass/press/2008/sep08/09-29VS10PR.mspx" target="_blank"&gt;official announcement here&lt;/a&gt; and &lt;a href="http://msdn.microsoft.com/en-us/vstudio/products/cc948977.aspx" target="_blank"&gt;more details on MSDN here&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;I am sure that you have many questions about these new releases.    &lt;br /&gt;Here is one from me:     &lt;br /&gt;Will all these new tools have support for WinForms or they will be only available for WPF and Silverlight now in vogue?&lt;/p&gt;</description>
      <link>http://blogs.telerik.com/IordanPavlov/Posts/08-09-30/Microsoft_Unveils_Next_Version_of_Visual_Studio_and_NET_Framework.aspx</link>
      <author>pavlov</author>
      <comments>http://blogs.telerik.com/IordanPavlov/Posts/08-09-30/Microsoft_Unveils_Next_Version_of_Visual_Studio_and_NET_Framework.aspx</comments>
      <guid isPermaLink="false">0b3a52e7-f0d5-451f-856c-a05da1ba05af</guid>
      <pubDate>Tue, 30 Sep 2008 01:31:49 GMT</pubDate>
    </item>
    <item>
      <title>Emulating Paging with RadGridView for WinForms and LINQ with 1 million records</title>
      <description>&lt;p&gt;Our customers who use the Telerik ASP.NET line of controls are used to having paging in their grids. This approach, however, is seldom used for WinForms applications, although there are cases when paging in WinForms grids is needed as well, especially when there are million records in the database (literally).&lt;/p&gt;
&lt;p&gt;You may have seen the blog post by &lt;a href="http://blogs.telerik.com/VladimirEnchev/Posts.aspx"&gt;Vladimir Enchev&lt;/a&gt; about &lt;a href="http://blogs.telerik.com/VladimirEnchev/Posts/08-08-13/How_To_RadGridView_for_WPF_paging_sorting_and_filtering_of_1mil_records_with_LINQ_to_SQL.aspx?ReturnURL=%2fBlogs.aspx%3fPage%3d3"&gt;implementing paging with RadCridView for WPF&lt;/a&gt; (if you have not, this is the right time to do so :)). A couple of days ago Mr. Enchev came by and said "You know guys, you could do the same thing with your WinForms grid control." And I decided to do so.&lt;/p&gt;
&lt;p&gt;Paging emulation with RadGridView for WinForms is possible, especially if we take full advantage of LINQ. This approach also gives us another advantage - client performance. The data processing (filtering, sorting and paging) is obviously done by the SQL server, which is fully optimized for such things, rather than the application. The client only processes and shows one page at a time, rather than all million records. Here I do not use RadGridView's Virtual Mode - this is a topic for a more advanced blog post.
&lt;/p&gt;
&lt;p&gt;I have tried to keep the application as simple as possible in order to highlight the code that implements the actual paging. Here is a screenshot of the application:
&lt;/p&gt;
&lt;div align="center"&gt;&lt;a href="http://blogs.telerik.com/Libraries/MetaBlog/WindowsLiveWriter-EmulatingPagingwithRadGridViewforWinForm_105A0-RadGridView_With_Paging_Vista_2%20%281%29.sflb"&gt;&lt;img height="177" border="0" width="205" style="border-width: 0px;" alt="RadGridView_With_Paging_Vista" src="http://blogs.telerik.com/Libraries/MetaBlog/WindowsLiveWriter-EmulatingPagingwithRadGridViewforWinForm_105A0-RadGridView_With_Paging_Vista_thumb%20%281%29.sflb" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;The important part of the code is the BindGrid method that does the actual loading and filtering of the data:&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre class="code"&gt;&lt;span style="color: blue;"&gt;private void &lt;/span&gt;BindGrid()&lt;br /&gt;{&lt;br /&gt;    &lt;span style="color: blue;"&gt;this&lt;/span&gt;.radGridView1.GridElement.BeginUpdate();&lt;br /&gt;    &lt;br /&gt;    &lt;span style="color: rgb(43, 145, 175);"&gt;IQueryable &lt;/span&gt;queryable = &lt;span style="color: blue;"&gt;new &lt;/span&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;DataClasses1DataContext&lt;/span&gt;().MyTables.AsQueryable();&lt;br /&gt;&lt;br /&gt;    &lt;span style="color: blue;"&gt;if &lt;/span&gt;(!&lt;span style="color: rgb(43, 145, 175);"&gt;String&lt;/span&gt;.IsNullOrEmpty(where))&lt;br /&gt;    {&lt;br /&gt;        queryable = queryable.Where(where);&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    &lt;span style="color: blue;"&gt;if &lt;/span&gt;(!&lt;span style="color: rgb(43, 145, 175);"&gt;String&lt;/span&gt;.IsNullOrEmpty(orderBy))&lt;br /&gt;    {&lt;br /&gt;        queryable = queryable.OrderBy(orderBy);&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    radGridView1.DataSource = queryable.Skip(currentPageIndex * pageSize).Take(pageSize);&lt;br /&gt;&lt;br /&gt;    &lt;span style="color: blue;"&gt;this&lt;/span&gt;.radGridView1.GridElement.EndUpdate(&lt;span style="color: blue;"&gt;true&lt;/span&gt;);&lt;br /&gt;&lt;br /&gt;    EnableDisablePager();&lt;br /&gt;}&lt;/pre&gt;
&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;
&lt;p&gt;We are using the dynamic LINQ extensions for the sorting and filtering functionality. And yes - you guessed correctly - it is called when the form loads. It uses some class fields that are set from the event handlers in the application. For example when the user clicks the filter button the following method is called:&lt;/p&gt;
&lt;pre class="code"&gt;&lt;span style="color: blue;"&gt;private void &lt;/span&gt;Filter(&lt;span style="color: blue;"&gt;object &lt;/span&gt;sender, &lt;span style="color: rgb(43, 145, 175);"&gt;EventArgs &lt;/span&gt;e)&lt;br /&gt;{&lt;br /&gt;    &lt;span style="color: blue;"&gt;string &lt;/span&gt;text = FilterTextBox.Text;&lt;br /&gt;    where = (text == &lt;span style="color: rgb(163, 21, 21);"&gt;""&lt;/span&gt;) ? &lt;span style="color: rgb(163, 21, 21);"&gt;"" &lt;/span&gt;: &lt;span style="color: rgb(43, 145, 175);"&gt;String&lt;/span&gt;.Format(&lt;span style="color: rgb(163, 21, 21);"&gt;@"Name.Contains(""{0}"")"&lt;/span&gt;, text);&lt;br /&gt;&lt;br /&gt;    BindGrid();&lt;br /&gt;}&lt;/pre&gt;
&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;
&lt;p&gt;The sample also supports sorting by handling the SortChanging event of RadGridView. You can find the full source code in the attached project (the required Telerik assemblies are included in the bin/Debug folder).&lt;/p&gt;
&lt;p&gt;Would you like to see more blog posts on using RadGridView with LINQ? Just leave a comment with your requirements and I will try to create it for you :)&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.telerik.com/photos/storage/pavlov/WindowsFormsApplication1.zip"&gt;WindowsFormsApplication1.zip&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
</description>
      <link>http://blogs.telerik.com/IordanPavlov/Posts/08-09-02/Emulating_Paging_with_RadGridView_for_WinForms_and_LINQ_with_1_million_records.aspx</link>
      <author>pavlov</author>
      <comments>http://blogs.telerik.com/IordanPavlov/Posts/08-09-02/Emulating_Paging_with_RadGridView_for_WinForms_and_LINQ_with_1_million_records.aspx</comments>
      <guid isPermaLink="false">944f4396-f058-4014-92f5-116d1874e830</guid>
      <pubDate>Tue, 02 Sep 2008 09:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Using Commands with RadTreeView for WinForms</title>
      <description>Cool top secret features fascinate me. Remember the hidden "Easter eggs" game in Excel 2002 (&lt;a href="http://www.j-walk.com/ss/excel/eastereg.htm"&gt;http://www.j-walk.com/ss/excel/eastereg.htm&lt;/a&gt;)? Don't you love it when developers pull something up from their sleeve, which is so cool, people just brag about it for years?&lt;br /&gt;
&lt;br /&gt;
Truth to be told, we have a secret feature in RadTreeView for WinForms as well. It may be not as cool as the "Easter eggs" Excel game, but is something I wanted to share with you for some time now. I like this one, because it is our small secret weapon in the war for dominating the world of software features.&lt;br /&gt;
&lt;br /&gt;
RadTreeView has always had the ability to execute commands on a given sub-tree(including the entire tree node structure). This is done using the static Execute* methods of the RadTreeView class. These methods hide the complexity of the traversal algorithm and let you easily execute arbitrary actions over sub-trees of RadTreeNode objects. This way you do not have to worry about complex tree traversal algorithms and can concentrate on the action (or command) that you want to execute. For example these&amp;nbsp; methods can help you in finding a node by the value of its Text property - something our customers request quite a bit. All you need to do is write a simple command that compares the value of the Text property of a given node to a string. Here is the code for such a command:&lt;br /&gt;
&lt;br /&gt;
&lt;div style="border: 1px solid rgb(127, 157, 185); overflow: auto; background-color: white; line-height: 100% ! important; font-family: courier new; font-size: 11px;"&gt;
&lt;table cellspacing="0" cellpadding="0" style="border-width: 0px; border-bottom: 0px solid rgb(238, 238, 238); margin: 2px 0px; width: 99%; border-collapse: collapse; background-color: rgb(255, 255, 255);"&gt;
    &lt;col style="border-bottom: 1px solid rgb(247, 247, 247); font-family: courier new; font-size: 11px; padding-left: 10px; white-space: nowrap;" /&gt;
    &lt;tbody&gt;
        &lt;tr&gt;
            &lt;td&gt;&lt;span style="font-size: 11px;"&gt;&lt;/span&gt;&lt;span style="color: blue;"&gt;public&lt;/span&gt;&lt;span style="font-size: 11px;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: blue;"&gt;class&lt;/span&gt;&lt;span style="font-size: 11px;"&gt;&amp;nbsp;FindNodeByTextCommand&amp;nbsp;:&amp;nbsp;CommandBase&amp;nbsp;&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: rgb(247, 247, 247);"&gt;{&amp;nbsp;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: blue;"&gt;public&lt;/span&gt;&lt;span style="font-size: 11px;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: blue;"&gt;override&lt;/span&gt;&lt;span style="font-size: 11px;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: blue;"&gt;object&lt;/span&gt;&lt;span style="font-size: 11px;"&gt;&amp;nbsp;Execute(&lt;/span&gt;&lt;span style="color: blue;"&gt;params&lt;/span&gt;&lt;span style="font-size: 11px;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: blue;"&gt;object&lt;/span&gt;&lt;span style="font-size: 11px;"&gt;[]&amp;nbsp;settings)&amp;nbsp;&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: rgb(247, 247, 247);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&amp;nbsp;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: blue;"&gt;if&lt;/span&gt;&lt;span style="font-size: 11px;"&gt;&amp;nbsp;(settings.Length&amp;nbsp;&amp;gt;&amp;nbsp;1&amp;nbsp;&amp;amp;&amp;amp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: blue;"&gt;this&lt;/span&gt;&lt;span style="font-size: 11px;"&gt;.CanExecute(settings[0]))&amp;nbsp;&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: rgb(247, 247, 247);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&amp;nbsp;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&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;RadTreeNode&amp;nbsp;node&amp;nbsp;=&amp;nbsp;settings[0]&amp;nbsp;&lt;span style="color: blue;"&gt;as&lt;/span&gt;&lt;span style="font-size: 11px;"&gt;&amp;nbsp;RadTreeNode;&amp;nbsp;&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: rgb(247, 247, 247);"&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 style="color: blue;"&gt;string&lt;/span&gt;&lt;span style="font-size: 11px;"&gt;&amp;nbsp;text&amp;nbsp;=&amp;nbsp;(settings[1]&amp;nbsp;&lt;/span&gt;&lt;span style="color: blue;"&gt;as&lt;/span&gt;&lt;span style="font-size: 11px;"&gt;&amp;nbsp;IList)[0]&amp;nbsp;&lt;/span&gt;&lt;span style="color: blue;"&gt;as&lt;/span&gt;&lt;span style="font-size: 11px;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: blue;"&gt;string&lt;/span&gt;&lt;span style="font-size: 11px;"&gt;;&amp;nbsp;&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;&amp;nbsp;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: rgb(247, 247, 247);"&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 style="color: blue;"&gt;if&lt;/span&gt;&lt;span style="font-size: 11px;"&gt;&amp;nbsp;(node&amp;nbsp;!=&amp;nbsp;&lt;/span&gt;&lt;span style="color: blue;"&gt;null&lt;/span&gt;&lt;span style="font-size: 11px;"&gt;&amp;nbsp;&amp;amp;&amp;amp;&amp;nbsp;!&lt;/span&gt;&lt;span style="color: blue;"&gt;string&lt;/span&gt;&lt;span style="font-size: 11px;"&gt;.IsNullOrEmpty(text))&amp;nbsp;&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&amp;nbsp;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: rgb(247, 247, 247);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: blue;"&gt;if&lt;/span&gt;&lt;span style="font-size: 11px;"&gt;&amp;nbsp;(node.Text&amp;nbsp;==&amp;nbsp;text)&amp;nbsp;&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&amp;nbsp;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: rgb(247, 247, 247);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: blue;"&gt;return&lt;/span&gt;&lt;span style="font-size: 11px;"&gt;&amp;nbsp;node;&amp;nbsp;&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: rgb(247, 247, 247);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: rgb(247, 247, 247);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: blue;"&gt;return&lt;/span&gt;&lt;span style="font-size: 11px;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: blue;"&gt;null&lt;/span&gt;&lt;span style="font-size: 11px;"&gt;;&amp;nbsp;&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: rgb(247, 247, 247);"&gt;&amp;nbsp;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: blue;"&gt;public&lt;/span&gt;&lt;span style="font-size: 11px;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: blue;"&gt;override&lt;/span&gt;&lt;span style="font-size: 11px;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: blue;"&gt;bool&lt;/span&gt;&lt;span style="font-size: 11px;"&gt;&amp;nbsp;CanExecute(&lt;/span&gt;&lt;span style="color: blue;"&gt;object&lt;/span&gt;&lt;span style="font-size: 11px;"&gt;&amp;nbsp;parameter)&amp;nbsp;&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: rgb(247, 247, 247);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&amp;nbsp;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: blue;"&gt;if&lt;/span&gt;&lt;span style="font-size: 11px;"&gt;&amp;nbsp;(parameter&amp;nbsp;&lt;/span&gt;&lt;span style="color: blue;"&gt;is&lt;/span&gt;&lt;span style="font-size: 11px;"&gt;&amp;nbsp;RadTreeNode)&amp;nbsp;&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: rgb(247, 247, 247);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&amp;nbsp;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&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 style="color: blue;"&gt;return&lt;/span&gt;&lt;span style="font-size: 11px;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: blue;"&gt;true&lt;/span&gt;&lt;span style="font-size: 11px;"&gt;;&amp;nbsp;&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: rgb(247, 247, 247);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: blue;"&gt;return&lt;/span&gt;&lt;span style="font-size: 11px;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: blue;"&gt;base&lt;/span&gt;&lt;span style="font-size: 11px;"&gt;.CanExecute(parameter);&amp;nbsp;&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: rgb(247, 247, 247);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;}&amp;nbsp;&lt;/td&gt;
        &lt;/tr&gt;
    &lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;br /&gt;
And you execute that command with code like:&lt;br /&gt;
&lt;div style="border: 1px solid rgb(127, 157, 185); overflow: auto; background-color: white; line-height: 100% ! important; font-family: courier new; font-size: 11px;"&gt;
&lt;table height="54" cellspacing="0" cellpadding="0" width="742" style="border-width: 0px; border-bottom: 0px solid rgb(238, 238, 238); margin: 2px 0px; border-collapse: collapse; background-color: rgb(255, 255, 255);"&gt;
    &lt;col style="border-bottom: 1px solid rgb(247, 247, 247); font-family: courier new; font-size: 11px; padding-left: 10px; white-space: nowrap;" /&gt;
    &lt;tbody&gt;
        &lt;tr&gt;
            &lt;td&gt;&lt;span style="font-size: 11px;"&gt;RadTreeNode&amp;nbsp;node&amp;nbsp;=&amp;nbsp;Telerik.WinControls.UI.RadTreeView.ExecuteScalarCommand(&lt;/span&gt;&lt;span style="color: blue;"&gt;this&lt;/span&gt;&lt;span style="font-size: 11px;"&gt;.radTreeView1.Nodes,&amp;nbsp;-1,&amp;nbsp;&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="background-color: rgb(247, 247, 247);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: blue;"&gt;new&lt;/span&gt;&lt;span style="font-size: 11px;"&gt;&amp;nbsp;FindNodeByTextCommand(),&amp;nbsp;&lt;/span&gt;&lt;span style="color: blue;"&gt;"Node"&lt;/span&gt;&lt;span style="font-size: 11px;"&gt;)&amp;nbsp;&lt;/span&gt;&lt;span style="color: blue;"&gt;as&lt;/span&gt;&lt;span style="font-size: 11px;"&gt;&amp;nbsp;RadTreeNode;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
    &lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
The Execute* methods can also assist you in other interesting tasks. For example, you can easily set a property of all nodes to a given value in a sub-tree using the &lt;strong&gt;SetPropertyValueCommand &lt;/strong&gt;that is already available.&lt;br /&gt;
&lt;br /&gt;
One thing that must be noted is that these Execute* methods currently traverse the given sub-tree in Breadth First order (see &lt;a href="http://en.wikipedia.org/wiki/Breadth-first_search"&gt;http://en.wikipedia.org/wiki/Breadth-first_search&lt;/a&gt;) to allow executing a command only on a given level in a sub-tree.&lt;br /&gt;
&lt;br /&gt;
So, do you think our top-secret weapon will help us dominate the world? Or maybe it can be improved? Or it is too complex? In case you like it, please let us know what additional traversal algorithms you want implemented. Depth First for example?&amp;nbsp; (see &lt;a href="http://en.wikipedia.org/wiki/Depth-first_search"&gt;http://en.wikipedia.org/wiki/Depth-first_search&lt;/a&gt;)&lt;br /&gt;
&lt;br /&gt;
</description>
      <link>http://blogs.telerik.com/IordanPavlov/Posts/08-05-28/Using_Commands_with_RadTreeView_for_WinForms.aspx</link>
      <author>Yordan Pavlov</author>
      <comments>http://blogs.telerik.com/IordanPavlov/Posts/08-05-28/Using_Commands_with_RadTreeView_for_WinForms.aspx</comments>
      <guid isPermaLink="false">2f4f39e7-f8a5-45e1-8b2f-f7723969d6fb</guid>
      <pubDate>Wed, 28 May 2008 08:34:11 GMT</pubDate>
    </item>
    <item>
      <title>Telerik CAB Enabling Kit Got Rid of Its Beta Tag</title>
      <description>Now that the 2008 Q1 release is out the door, I finally managed to spare a couple of hours for blogging. &lt;br /&gt;
&lt;br /&gt;
Telerik is one of the few vendors that &lt;a href="http://www.telerik.com/products/winforms/cab_support.aspx"&gt;offer support for the Composite UI Application Block (CAB)&lt;/a&gt;. Till recently, however, the Telerik CAB Enabling Kit (TCEK) was in beta as we wanted to hear your feedback on our implementation. The feedback was not grand, but it was enough to tell us that it is time to release TCEK to the public.&lt;br /&gt;
&lt;br /&gt;
The beta came with an example application which mimicked the famous WPF Woodgrove Finance Application. For our official release we decided to spice up our implementation by upgrading the familiar UI with the new Desert theme which is one of the new themes that came with RadControls for WinForms Q1 2008. I personally like this theme very much and am very happy with the result:&lt;br /&gt;
&lt;br /&gt;
&lt;img src="http://www.telerik.com/images/editor/winforms/CAB/Telerik_CAB_Overview.png" /&gt;&lt;br /&gt;
&lt;br /&gt;
Also new are the &lt;strong&gt;UIElementAdapter&lt;/strong&gt;s for &lt;strong&gt;RadPanelBar &lt;/strong&gt;that allow it to be used as an extension site.&lt;br /&gt;
Another very important addition to the example application is RadGridView. It joins the rest of the Telerik controls showcased above, which are RadDock, RadChart, RadMenu, RadPanelBar and RadTreeView. For the official release we also updated all RadControls assemblies to the latest and greatest 6.0.0.0 (2008 Q1) version.&lt;br /&gt;
&lt;br /&gt;
For the next TCEK version we are planning some nice improvements including&lt;br /&gt;
&lt;ol&gt;
    &lt;li&gt;Support for &lt;a href="http://www.telerik.com/products/winforms/controls/form/overview.aspx"&gt;our new RadForm&lt;/a&gt; . &lt;/li&gt;
    &lt;li&gt;Excellent developer experience by providing project templates, installation options, etc.&lt;/li&gt;
    &lt;li&gt;Support for changing themes directly in the Finance Application sample to demonstrate our common themes.&lt;/li&gt;
&lt;/ol&gt;
Download TCEK from your &lt;a href="http://www.telerik.com/client.net/"&gt;Client.Net accounts&lt;/a&gt; and don't forget to give us your feedback!
</description>
      <link>http://blogs.telerik.com/IordanPavlov/Posts/08-05-12/Telerik_CAB_Enabling_Kit_Got_Rid_of_Its_Beta_Tag.aspx</link>
      <author>Yordan Pavlov</author>
      <comments>http://blogs.telerik.com/IordanPavlov/Posts/08-05-12/Telerik_CAB_Enabling_Kit_Got_Rid_of_Its_Beta_Tag.aspx</comments>
      <guid isPermaLink="false">f349cd3a-9946-4c36-a12f-ec18a8c77660</guid>
      <pubDate>Mon, 12 May 2008 07:22:47 GMT</pubDate>
    </item>
    <item>
      <title>ClickOnce and the Telerik CAB Enabling Kit</title>
      <description>Some time ago a client of ours asked us whether he can use the Telerik CAB Enabling Kit with ClickOnce. Although we have a 
&lt;a href="http://www.telerik.com/support/kb/article/b454K-mag-b454T-ckd-b454c-ckd.aspx"&gt;
KB article
&lt;/a&gt;
 on how to deploy the WinForms suite with ClickOnce, we do not have explicit instructions on doing this with the Telerik CAB Enabling Kit. So, here they are.
&lt;br&gt;
&lt;br&gt;
Applications built with CAB have always caused problems when it is time to deploy them with ClickOnce. Applications built with the Telerik CAB Enabling Kit or (TCEK for short) are no different.  Why this is considered such a painful task? 
&lt;br&gt;
Well, to most extent because CAB uses special techniques to allow extended separation of concerns (or in other words dependency injection to allow the referencing of business and foundational modules via ObjectBuilder). It allows application modules to be developed in isolation from each other and allows applications to be extended via a plug-in style architecture. 
&lt;br&gt;
This is great on paper, however it makes deployment with ClickOnce in Visual Studio 2005 a difficult process. ClickOnce publishing uses reflection within Visual Studio to determine module dependencies and assembly references so that applications can be packaged and deployed easily. While this approach works most of the time, CAB modules are not referenced directly in applications and cannot use the ClickOnce publishing feature directly. 
&lt;br&gt;
That is why some extra steps must be performed to prepare an application built with TCEK for ClickOnce deployment. These steps involve using a utility named Mage and are described in the following list:
&lt;br&gt;
&lt;ol&gt;
&lt;li&gt;
In Visual Studio, publish the shell application. 
&lt;/li&gt;
&lt;li&gt;
Copy the modules that will be dynamically loaded into the shell to the publish folder, and then add .deploy file name extensions to them. 
&lt;/li&gt;
&lt;li&gt;
Run Mageui.exe and update the application manifest to include the modules and any associated file resources. 
&lt;/li&gt;
&lt;li&gt;
Save and sign the application manifest. 
&lt;/li&gt;
&lt;li&gt;
In Mage, open the deployment manifest, and then refresh the application manifest reference. 
&lt;/li&gt;
&lt;li&gt;
Save and sign the deployment manifest. 
&lt;/li&gt;
&lt;li&gt;
Provide a URL to the deployment manifest to your users.
&lt;/li&gt;
&lt;/ol&gt;
In the latest SCSF form May 2007 the guys from the Patterns &amp;amp; Practices team at Microsoft have taken some steps to make the process easier with Manifest Manager Utility.
&lt;br&gt;
&lt;br&gt;
The following list describes the steps to be performed if you have this utility available:
&lt;br&gt;
&lt;ol&gt;
&lt;li&gt;
In Visual Studio, publish the shell application. 
&lt;/li&gt;
&lt;li&gt;
Open the Manifest Manager Utility, and then open the deployment manifest. 
&lt;/li&gt;
&lt;li&gt;
Select the additional files you need to add to the application. 
&lt;/li&gt;
&lt;li&gt;
Save the manifests. 
&lt;/li&gt;
&lt;li&gt;
Provide your users with a URL to the deployment manifest.
&lt;/li&gt;
&lt;/ol&gt;
I will demonstrate the suggested approach using the Finance Application form the TCEK Beta1 release.
&lt;br&gt;
&lt;span&gt;
&lt;br&gt;
To publish the application from Visual Studio
&lt;/span&gt;
&lt;br&gt;
&lt;br&gt;
&lt;ol&gt;
&lt;li&gt;
Expand the Infrastructure solution folder. 
&lt;/li&gt;
&lt;li&gt;
Right-click 
&lt;span&gt;
Shell
&lt;/span&gt;
, and then click 
&lt;span&gt;
Publish
&lt;/span&gt;
. 
&lt;/li&gt;
&lt;li&gt;
Click 
&lt;span&gt;
Finish 
&lt;/span&gt;
to accept the default settings.&lt;br&gt;&lt;br&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;img src="/photos/storage/pavlov/publish.JPG"&gt;
&lt;br&gt;
&lt;br&gt;&lt;br&gt;
The project will be built and published to the location set on the 
&lt;span&gt;
Publish 
&lt;/span&gt;
tab of the project properties page (C:\TEMP\Shell).
&lt;br&gt;
&lt;br&gt;
&lt;span&gt;
To add the additional modules using the Manifest Manager Utility
&lt;/span&gt;
&lt;br&gt;
&lt;br&gt;
&lt;ol&gt;
&lt;li&gt;
Run the ManifestManagerUtility.exe utility. 
&lt;/li&gt;
&lt;li&gt;
On the 
&lt;span&gt;
File 
&lt;/span&gt;
menu, click 
&lt;span&gt;
Open
&lt;/span&gt;
. 
&lt;/li&gt;
&lt;li&gt;
Browse to and select the published deployment manifest. The commonly modified values from the deployment manifest and the list of files from the referenced application manifest will be loaded into the utility (see Figure 1).
&lt;/li&gt;
&lt;/ol&gt;
&lt;img src="/photos/storage/pavlov/manifestmanager.JPG"&gt;
&lt;br&gt;
&lt;br&gt;
&lt;ol&gt;
&lt;li&gt;
On the 
&lt;span&gt;
Edit 
&lt;/span&gt;
menu, click 
&lt;span&gt;
Add Files
&lt;/span&gt;
. 
&lt;/li&gt;
&lt;li&gt;
Navigate to the build output folder for the FinanceApplicationCAB solution. 
&lt;/li&gt;
&lt;li&gt;
In the 
&lt;span&gt;
Add Application Files
&lt;/span&gt;
 dialog box, select the following files to add them to the application manifest, and then click 
&lt;span&gt;
Open
&lt;/span&gt;
: 
&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;
    Infrastructure.Module.dll
&lt;/li&gt;
&lt;li&gt;
&lt;span&gt;
Infrastructure.Layout.dll
&lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;span&gt;
Telerik.Charting.dll
&lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;span&gt;
Telerik.WinControls.RadChart.dll
&lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;span&gt;
Telerik.WinControls.GridView.dll
&lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;span&gt;
Equity.xml
&lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;span&gt;
Views\StockNewsView\ RssTransform.xslt
&lt;/span&gt;
&lt;br&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;
On the 
&lt;span&gt;
File 
&lt;/span&gt;
menu, click 
&lt;span&gt;
Save
&lt;/span&gt;
. 
&lt;/li&gt;
&lt;li&gt;
In the 
&lt;span&gt;
Select Publisher Certificate to Sign Manifest
&lt;/span&gt;
 dialog box, click 
&lt;span&gt;
Browse
&lt;/span&gt;
, and then navigate to the publisher certificate that was generated by Visual Studio when you first published the application. Figure 2 illustrates this dialog box.
&lt;br&gt;&amp;nbsp; &lt;br&gt;
&lt;img src="/photos/storage/pavlov/savemanifest.JPG"&gt;&lt;br&gt;&amp;nbsp;&lt;br&gt;
&lt;/li&gt;
&lt;li&gt;
Click &lt;span&gt;Save and Sign&lt;/span&gt;. &lt;br&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Now the published application is ready for users to launch. The downloaded
application will include the Composite UI Application Block modules also.&lt;/p&gt;</description>
      <link>http://blogs.telerik.com/IordanPavlov/Posts/07-11-08/ClickOnce_and_the_Telerik_CAB_Enabling_Kit.aspx</link>
      <author>Yordan Pavlov</author>
      <comments>http://blogs.telerik.com/IordanPavlov/Posts/07-11-08/ClickOnce_and_the_Telerik_CAB_Enabling_Kit.aspx</comments>
      <guid isPermaLink="false">b8dec375-d21d-4074-95bc-163096b6ad45</guid>
      <pubDate>Thu, 08 Nov 2007 11:55:00 GMT</pubDate>
    </item>
    <item>
      <title>Telerik CAB Enabling Kit Beta1 Available</title>
      <description>&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Hi All,&lt;/p&gt;
&lt;p&gt;As this is my first post in the Telerik Blogs I will take the opportunity to introduce myself - my name is Iordan Pavlov, I'm the lead developer of the Telerik CAB Enabling Kit (TCEK for short). As of today I will be posting interesting news and tips on the Telerik CAB Enabling Kit.&lt;/p&gt;
&lt;p&gt;For those of you that can't wait to get their hands on the first TCEK beta bits, I am glad to inform you that Beta1 is available for &lt;a href="http://www.telerik.com/community/forums/allthreads/b312H-cdc.aspx"&gt;immediate download&lt;/a&gt;. We hope you will like TCEK and find it useful. You should also have in mind that this is an early beta release so it will probably have some glitches here and there. If you find any problems, lack of functionality or omissions we will be very glad to &lt;a href="http://www.telerik.com/community/forums/allthreads/b312H-cdc.aspx"&gt;have your feedback &lt;/a&gt;and work with you in order to resolve all issues towards a stable official release&amp;nbsp;in mid September.&lt;/p&gt;
&lt;p&gt;I suppose that the first thing you will want to have a look on is the Finance Application sample modeled after the WoodGrove Finance Application (WPF sample) from the guys at Microsoft. There are many interesting ideas, but there is one that deserves special mention and this is how the RadPanelBar control (used to display the stocks portfolio) is extended using RadProperties and themes to provide functionality that it does not originally have.&lt;/p&gt;
&lt;p&gt;Another thing that the sample application demonstrates is the use of RadMenu as extension site and commands as shown in the following snippets:&lt;br&gt;&lt;/p&gt;&lt;pre&gt;&lt;p&gt;&lt;font&gt;RadMenuItem showStocksInMenuItem = new RadMenuItem("Show Stocks In");&lt;br&gt;this.WorkItem.UIExtensionSites[UIExtensionSiteNames.MainMenu].Add&amp;lt;RadMenuItem&amp;gt;(showStocksInMenuItem);&lt;br&gt;RadMenuItem treeViewMenuItem = new RadMenuItem("TreeView");&lt;br&gt;this.WorkItem.Commands[CommandNames.ShowStocksInTreeView].AddInvoker(treeViewMenuItem, "Click");&lt;/font&gt;&lt;/p&gt;&lt;br&gt;&lt;p&gt;&lt;font&gt;[CommandHandler(CommandNames.ShowStocksInTreeView)]&lt;br&gt;public void treeViewMenuItem_Click(object sender, EventArgs e)&lt;br&gt;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;object panelBarView = this.WorkItem.SmartParts["StockPortfolioView"];&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;this.WorkItem.Workspaces[WorkspaceNames.DockableWorkspace].Hide(panelBarView);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;this.ShowViewInWorkspace&amp;lt;StockPortfolioTreeView&amp;gt;("StockPortfolioTreeView", WorkspaceNames.DockableWorkspace,&amp;nbsp; this.PortfolioViewInfo);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;this.WorkItem.Commands[CommandNames.ShowStocksInPanelBar].Status = CommandStatus.Enabled;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;this.WorkItem.Commands[CommandNames.ShowStocksInTreeView].Status = CommandStatus.Disabled;&lt;br&gt;}&lt;/font&gt;&lt;br&gt;&lt;/p&gt;&lt;/pre&gt;&lt;br&gt;That's all for now. You can expect other posts in the near future as the TCEK evolves.Do play with the TCEK beta bits. And don't forget to &lt;a href="http://www.telerik.com/community/forums/allthreads/b312H-cdc.aspx"&gt;tell us what you think&lt;/a&gt;.</description>
      <link>http://blogs.telerik.com/IordanPavlov/Posts/07-08-22/Telerik_CAB_Enabling_Kit_Beta1_Available.aspx</link>
      <author>Yordan Pavlov</author>
      <comments>http://blogs.telerik.com/IordanPavlov/Posts/07-08-22/Telerik_CAB_Enabling_Kit_Beta1_Available.aspx</comments>
      <guid isPermaLink="false">45486fa4-1c69-4f18-a4a9-aac430b2bf7d</guid>
      <pubDate>Wed, 22 Aug 2007 19:04:00 GMT</pubDate>
    </item>
  </channel>
</rss>