<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" version="2.0">

<channel>
	<title>Perpetuum Software Blog » ASP.Net</title>
	
	<link>http://blogs.perpetuumsoft.com</link>
	<description>This blog is about proved and promising Microsoft technologies: .Net, ASP.Net, Silverlight, WPF, etc.</description>
	<lastBuildDate>Thu, 03 Feb 2011 09:56:46 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/PerpetuumSoftBlog/category/aspnet" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="perpetuumsoftblog/category/aspnet" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>How to build interactive sorting and grouping using Report Sharp-Shooter scripting engine.</title>
		<link>http://blogs.perpetuumsoft.com/dotnet/dynamicsorting/</link>
		<comments>http://blogs.perpetuumsoft.com/dotnet/dynamicsorting/#comments</comments>
		<pubDate>Tue, 21 Dec 2010 10:22:51 +0000</pubDate>
		<dc:creator>Elena</dc:creator>
				<category><![CDATA[.Net]]></category>
		<category><![CDATA[.Net components]]></category>
		<category><![CDATA[ASP.Net]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[CodeProject]]></category>
		<category><![CDATA[Reporting]]></category>
		<category><![CDATA[.net reporting]]></category>
		<category><![CDATA[reporting tool]]></category>

		<guid isPermaLink="false">http://blogs.perpetuumsoft.com/?p=721</guid>
		<description><![CDATA[by Fakhru Rahman, Perpetuum Software customer





// 



Scripting engine in Report Sharp-Shooter allow us to create interactive report.
In this example we will create report in which the user can sort and group via script on the fly.




In order to do this, I have created an extended ReportViewer, you can download the source code here.
This is how [...]]]></description>
			<content:encoded><![CDATA[<p>by Fakhru Rahman, Perpetuum Software customer</p>
<table>
<tbody>
<tr>
<td>
<div style="float: right; padding-top: 16px; margin-right: 24px;">
<p><script type="text/javascript">// <![CDATA[
                    tweetmeme_service = "bit.ly"; tweetmeme_source = "PerpetuumSoft"; tweetmeme_url = "http://blogs.perpetuumsoft.com/dotnet/dynamicsorting/";
// ]]&gt;</script></p>
<p><script src="http://tweetmeme.com/i/scripts/button.js" type="text/javascript"></script></p>
</div>
</td>
<td>Scripting engine in <a href="http://www.perpetuumsoft.com/Report-Sharp-Shooter.aspx"><strong>Report Sharp-Shooter</strong></a> allow us to create interactive report.<br />
In this example we will create report in which the user can sort and group via script on the fly.
</td>
</tr>
</tbody>
</table>
<p>In order to do this, I have created an extended ReportViewer, you can download the source code <a href="http://www.perpetuumsoft.com/sf/en/fls/rss/RSSExample.zip"><strong>here</strong></a>.</p>
<p>This is how our final report looks:<br />
<img src="http://blogs.perpetuumsoft.com/wp-content/uploads/2010/12/Final_small.png" alt="" title="Final_small" width="450" height="275" class="aligncenter size-full wp-image-734" /></p>
<p><span id="more-721"></span>Create winform application using Visual Studio, then add a class, we will fill this class with dummy data, I named this class <strong>Data</strong>:</p>
<div class="codecolorer-container csharp default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;height:300px;"><div class="csharp codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #0600FF; font-weight: bold;">public</span> <span style="color: #6666cc; font-weight: bold;">class</span> Data<br />
<span style="color: #008000;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0600FF; font-weight: bold;">private</span> <span style="color: #6666cc; font-weight: bold;">long</span> _townId<span style="color: #008000;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0600FF; font-weight: bold;">private</span> <span style="color: #6666cc; font-weight: bold;">long</span> _cityId<span style="color: #008000;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0600FF; font-weight: bold;">private</span> <span style="color: #6666cc; font-weight: bold;">string</span> _town<span style="color: #008000;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0600FF; font-weight: bold;">private</span> <span style="color: #6666cc; font-weight: bold;">string</span> _city<span style="color: #008000;">;</span><br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0600FF; font-weight: bold;">public</span> <span style="color: #6666cc; font-weight: bold;">long</span> TownId<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #008000;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; get <span style="color: #008000;">&#123;</span> <span style="color: #0600FF; font-weight: bold;">return</span> _townId<span style="color: #008000;">;</span> <span style="color: #008000;">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; set <span style="color: #008000;">&#123;</span> _townId <span style="color: #008000;">=</span> value<span style="color: #008000;">;</span> <span style="color: #008000;">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #008000;">&#125;</span><br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0600FF; font-weight: bold;">public</span> <span style="color: #6666cc; font-weight: bold;">long</span> CityId<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #008000;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; get <span style="color: #008000;">&#123;</span> <span style="color: #0600FF; font-weight: bold;">return</span> _cityId<span style="color: #008000;">;</span> <span style="color: #008000;">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; set <span style="color: #008000;">&#123;</span> _cityId <span style="color: #008000;">=</span> value<span style="color: #008000;">;</span> <span style="color: #008000;">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #008000;">&#125;</span><br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0600FF; font-weight: bold;">public</span> <span style="color: #6666cc; font-weight: bold;">string</span> Town<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #008000;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; get <span style="color: #008000;">&#123;</span> <span style="color: #0600FF; font-weight: bold;">return</span> _town<span style="color: #008000;">;</span> <span style="color: #008000;">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; set <span style="color: #008000;">&#123;</span> _town <span style="color: #008000;">=</span> value<span style="color: #008000;">;</span> <span style="color: #008000;">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #008000;">&#125;</span><br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0600FF; font-weight: bold;">public</span> <span style="color: #6666cc; font-weight: bold;">string</span> City<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #008000;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; get <span style="color: #008000;">&#123;</span> <span style="color: #0600FF; font-weight: bold;">return</span> _city<span style="color: #008000;">;</span> <span style="color: #008000;">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; set <span style="color: #008000;">&#123;</span> _city <span style="color: #008000;">=</span> value<span style="color: #008000;">;</span> <span style="color: #008000;">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #008000;">&#125;</span><br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0600FF; font-weight: bold;">public</span> Data<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #008000;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #008000;">&#125;</span><br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0600FF; font-weight: bold;">public</span> Data<span style="color: #008000;">&#40;</span><span style="color: #6666cc; font-weight: bold;">long</span> _townId, <span style="color: #6666cc; font-weight: bold;">long</span> _cityId, <span style="color: #6666cc; font-weight: bold;">string</span> _town, <span style="color: #6666cc; font-weight: bold;">string</span> _city<span style="color: #008000;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #008000;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0600FF; font-weight: bold;">this</span><span style="color: #008000;">.</span>_townId <span style="color: #008000;">=</span> _townId<span style="color: #008000;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0600FF; font-weight: bold;">this</span><span style="color: #008000;">.</span>_cityId <span style="color: #008000;">=</span> _cityId<span style="color: #008000;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0600FF; font-weight: bold;">this</span><span style="color: #008000;">.</span>_town <span style="color: #008000;">=</span> _town<span style="color: #008000;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0600FF; font-weight: bold;">this</span><span style="color: #008000;">.</span>_city <span style="color: #008000;">=</span> _city<span style="color: #008000;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #008000;">&#125;</span><br />
<span style="color: #008000;">&#125;</span></div></div>
<p>Next, drag ReportManager into main form, and create a new InlineReport,</p>
<p><img src="http://blogs.perpetuumsoft.com/wp-content/uploads/2010/12/ReportManager_small.png" alt="" title="ReportManager_small" width="450" height="398" class="aligncenter size-full wp-image-736" /></p>
<p>and drag BindingSource component from toolbox. Name it <strong>BSCity</strong> or whatever you like, in the DataSource property of <strong>BSCity</strong></p>
<p><img src="http://blogs.perpetuumsoft.com/wp-content/uploads/2010/12/Add-DataSource1.png" alt="" title="Add-DataSource" width="258" height="545" class="aligncenter size-full wp-image-737" /></p>
<p>Now we need to set report source to this BindingSource, double click reportmanager to open ReportManager Editor Form, and select BindingSource that we created earlier on Data Sources tab:</p>
<p><img src="http://blogs.perpetuumsoft.com/wp-content/uploads/2010/12/Set-Report-DataSource_small.png" alt="" title="Set-Report-DataSource_small" width="450" height="283" class="aligncenter size-full wp-image-738" /></p>
<p>Next switch to design mode of RSS, and design something similar to this (for more detail, please check the source code):</p>
<p><img src="http://blogs.perpetuumsoft.com/wp-content/uploads/2010/12/Report_small.png" alt="" title="Report_small" width="450" height="286" class="aligncenter size-full wp-image-739" /></p>
<p>We need to create parameter, so we can change this report behavior from our winform code, in the dropdown property choose document1 and add 2 parameter in<br />
parameters property with ParameterType is System.String, name it <strong>__GROUP__</strong> and <strong>__SORT__</strong>.</p>
<p><img src="http://blogs.perpetuumsoft.com/wp-content/uploads/2010/12/Parameters_small.png" alt="" title="Parameters_small" width="450" height="280" class="aligncenter size-full wp-image-740" /></p>
<p>Still on document1 properties select Generate Script property and insert this code:</p>
<div class="codecolorer-container csharp default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="csharp codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #008080; font-style: italic;">// get data from report parameter</span><br />
_sort <span style="color: #008000;">=</span> <span style="color: #0600FF; font-weight: bold;">this</span><span style="color: #008000;">.</span><span style="color: #0000FF;">GetParameter</span><span style="color: #008000;">&#40;</span><span style="color: #666666;">&quot;__SORT__&quot;</span><span style="color: #008000;">&#41;</span> <span style="color: #0600FF; font-weight: bold;">as</span> <span style="color: #6666cc; font-weight: bold;">string</span><span style="color: #008000;">;</span><br />
_group <span style="color: #008000;">=</span> <span style="color: #0600FF; font-weight: bold;">this</span><span style="color: #008000;">.</span><span style="color: #0000FF;">GetParameter</span><span style="color: #008000;">&#40;</span><span style="color: #666666;">&quot;__GROUP__&quot;</span><span style="color: #008000;">&#41;</span> <span style="color: #0600FF; font-weight: bold;">as</span> <span style="color: #6666cc; font-weight: bold;">string</span><span style="color: #008000;">;</span><br />
<span style="color: #0600FF; font-weight: bold;">this</span><span style="color: #008000;">.</span><span style="color: #0000FF;">InitSort</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span></div></div>
<p>We havent create <strong>InitSort</strong> method yet, so in the Common Script property of document1 write this code:</p>
<div class="codecolorer-container csharp default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="csharp codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #008080; font-style: italic;">// initialize variable</span><br />
<span style="color: #6666cc; font-weight: bold;">string</span> _group <span style="color: #008000;">=</span> <span style="color: #0600FF; font-weight: bold;">null</span><span style="color: #008000;">;</span><br />
<span style="color: #6666cc; font-weight: bold;">string</span> _sort <span style="color: #008000;">=</span> <span style="color: #0600FF; font-weight: bold;">null</span><span style="color: #008000;">;</span><br />
<span style="color: #6666cc; font-weight: bold;">string</span> _sortDirection <span style="color: #008000;">=</span> <span style="color: #0600FF; font-weight: bold;">null</span><span style="color: #008000;">;</span><br />
<br />
<span style="color: #0600FF; font-weight: bold;">private</span> <span style="color: #6666cc; font-weight: bold;">void</span> InitSort<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><br />
<span style="color: #008000;">&#123;</span><br />
&nbsp; <span style="color: #0600FF; font-weight: bold;">if</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">!</span><span style="color: #6666cc; font-weight: bold;">String</span><span style="color: #008000;">.</span><span style="color: #0000FF;">IsNullOrEmpty</span><span style="color: #008000;">&#40;</span>_sort<span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><br />
&nbsp; <span style="color: #008000;">&#123;</span><br />
&nbsp; &nbsp; <span style="color: #6666cc; font-weight: bold;">string</span><span style="color: #008000;">&#91;</span><span style="color: #008000;">&#93;</span> sortData <span style="color: #008000;">=</span> _sort<span style="color: #008000;">.</span><span style="color: #0000FF;">Split</span><span style="color: #008000;">&#40;</span><span style="color: #666666;">','</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span><br />
&nbsp; &nbsp; _sort <span style="color: #008000;">=</span> sortData<span style="color: #008000;">&#91;</span><span style="color: #FF0000;">0</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">;</span><br />
&nbsp; &nbsp; dataBand1<span style="color: #008000;">.</span><span style="color: #0000FF;">Sort</span><span style="color: #008000;">&#91;</span><span style="color: #FF0000;">0</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Order</span> <span style="color: #008000;">=</span> sortData<span style="color: #008000;">&#91;</span><span style="color: #FF0000;">1</span><span style="color: #008000;">&#93;</span> <span style="color: #008000;">==</span> <span style="color: #666666;">&quot;ASC&quot;</span> <span style="color: #008000;">?</span> PerpetuumSoft<span style="color: #008000;">.</span><span style="color: #0000FF;">Reporting</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Data</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Groupping</span><span style="color: #008000;">.</span><span style="color: #0000FF;">SortOrder</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Ascending</span><span style="color: #008000;">:</span>PerpetuumSoft<span style="color: #008000;">.</span><span style="color: #0000FF;">Reporting</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Data</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Groupping</span><span style="color: #008000;">.</span><span style="color: #0000FF;">SortOrder</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Descending</span><span style="color: #008000;">;</span><br />
&nbsp; <span style="color: #008000;">&#125;</span><br />
<span style="color: #008000;">&#125;</span></div></div>
<p>This method will set <em>SortOrder</em> for dataBand1 based on parameter <strong>__SORT__</strong>.<br />
Now, we need to set Sort Expression in dataBand1, click on the Sort property of dataBand1 and add item to Collection Editor, set Expression value to <strong>SortExpression()</strong>.<br />
SortExpression is a method for sorting, we haven&#8217;t create it, so return to <em>Common Script</em> property of <em>document1</em> and append this code:</p>
<div class="codecolorer-container csharp default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="csharp codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #0600FF; font-weight: bold;">private</span> <span style="color: #6666cc; font-weight: bold;">object</span> SortExpression<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><br />
<span style="color: #008000;">&#123;</span><br />
&nbsp; <span style="color: #0600FF; font-weight: bold;">if</span><span style="color: #008000;">&#40;</span><span style="color: #6666cc; font-weight: bold;">string</span><span style="color: #008000;">.</span><span style="color: #0000FF;">IsNullOrEmpty</span><span style="color: #008000;">&#40;</span>_sort<span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><br />
&nbsp; &nbsp; <span style="color: #0600FF; font-weight: bold;">return</span> <span style="color: #0600FF; font-weight: bold;">null</span><span style="color: #008000;">;</span><br />
&nbsp; <span style="color: #0600FF; font-weight: bold;">else</span><br />
&nbsp; <span style="color: #008000;">&#123;</span><br />
&nbsp; &nbsp; <span style="color: #0600FF; font-weight: bold;">switch</span><span style="color: #008000;">&#40;</span><span style="color: #0600FF; font-weight: bold;">this</span><span style="color: #008000;">.</span>_sort<span style="color: #008000;">.</span><span style="color: #0000FF;">ToLower</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><br />
&nbsp; &nbsp; <span style="color: #008000;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; <span style="color: #0600FF; font-weight: bold;">case</span> <span style="color: #666666;">&quot;city&quot;</span><span style="color: #008000;">:</span><br />
&nbsp; &nbsp; &nbsp; <span style="color: #0600FF; font-weight: bold;">return</span> GetData<span style="color: #008000;">&#40;</span><span style="color: #666666;">&quot;Cities.City&quot;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span><br />
&nbsp; &nbsp; &nbsp; <span style="color: #0600FF; font-weight: bold;">case</span> <span style="color: #666666;">&quot;town&quot;</span><span style="color: #008000;">:</span><br />
&nbsp; &nbsp; &nbsp; <span style="color: #0600FF; font-weight: bold;">return</span> GetData<span style="color: #008000;">&#40;</span><span style="color: #666666;">&quot;Cities.Town&quot;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span><br />
&nbsp; &nbsp; &nbsp; <span style="color: #0600FF; font-weight: bold;">default</span><span style="color: #008000;">:</span><br />
&nbsp; &nbsp; &nbsp; <span style="color: #0600FF; font-weight: bold;">return</span> <span style="color: #0600FF; font-weight: bold;">null</span><span style="color: #008000;">;</span><br />
&nbsp; &nbsp; <span style="color: #008000;">&#125;</span><br />
&nbsp; <span style="color: #008000;">&#125;</span><br />
<span style="color: #008000;">&#125;</span></div></div>
<p>This code will return sort expression based on value of _sort (from parameter <strong>__SORT__</strong>).</p>
<p>Final thing we should do in Report designer is to create code for dynamic grouping, select <em>groupBand1</em> from properties combo and set GroupExpression to<br />
<strong>GroupExpression()</strong>, we need to create this method so once more time append this code on <em>document1</em> Common Script:</p>
<div class="codecolorer-container csharp default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="csharp codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #0600FF; font-weight: bold;">private</span> <span style="color: #6666cc; font-weight: bold;">object</span> GroupExpression<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><br />
<span style="color: #008000;">&#123;</span><br />
&nbsp; <span style="color: #0600FF; font-weight: bold;">if</span><span style="color: #008000;">&#40;</span><span style="color: #6666cc; font-weight: bold;">string</span><span style="color: #008000;">.</span><span style="color: #0000FF;">IsNullOrEmpty</span><span style="color: #008000;">&#40;</span>_group<span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><br />
&nbsp; &nbsp; <span style="color: #0600FF; font-weight: bold;">return</span> <span style="color: #6666cc; font-weight: bold;">string</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Empty</span><span style="color: #008000;">;</span><br />
&nbsp; <span style="color: #0600FF; font-weight: bold;">else</span><br />
&nbsp; <span style="color: #008000;">&#123;</span><br />
&nbsp; &nbsp; <span style="color: #0600FF; font-weight: bold;">switch</span><span style="color: #008000;">&#40;</span>_group<span style="color: #008000;">.</span><span style="color: #0000FF;">ToLower</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><br />
&nbsp; &nbsp; <span style="color: #008000;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; <span style="color: #0600FF; font-weight: bold;">case</span> <span style="color: #666666;">&quot;cityid&quot;</span><span style="color: #008000;">:</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0600FF; font-weight: bold;">return</span> GetData<span style="color: #008000;">&#40;</span><span style="color: #666666;">&quot;Cities.CityId&quot;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span><br />
&nbsp; &nbsp; &nbsp; <span style="color: #0600FF; font-weight: bold;">default</span><span style="color: #008000;">:</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0600FF; font-weight: bold;">return</span> <span style="color: #6666cc; font-weight: bold;">string</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Empty</span><span style="color: #008000;">;</span><br />
&nbsp; &nbsp; <span style="color: #008000;">&#125;</span><br />
&nbsp; <span style="color: #008000;">&#125;</span><br />
<span style="color: #008000;">&#125;</span></div></div>
<p>Validate script and save.<br />
Next, in Visual Studio, select <em>inlineReportSlot1</em>, go to event and create code for RenderComplete event, here is the code:</p>
<div class="codecolorer-container csharp default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;height:300px;"><div class="csharp codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #0600FF; font-weight: bold;">private</span> PreviewFormExt _frm<span style="color: #008000;">;</span><br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0600FF; font-weight: bold;">private</span> <span style="color: #6666cc; font-weight: bold;">void</span> RenderCompleted<span style="color: #008000;">&#40;</span><span style="color: #6666cc; font-weight: bold;">object</span> sender, EventArgs e<span style="color: #008000;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #008000;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0600FF; font-weight: bold;">if</span> <span style="color: #008000;">&#40;</span>_frm <span style="color: #008000;">==</span> <span style="color: #0600FF; font-weight: bold;">null</span><span style="color: #008000;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #008000;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; _frm <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> PreviewFormExt<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span><br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #008080; font-style: italic;">// Add group</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; _frm<span style="color: #008000;">.</span><span style="color: #0000FF;">AddGroup</span><span style="color: #008000;">&#40;</span><span style="color: #666666;">&quot;City&quot;</span>, <span style="color: #666666;">&quot;CityId&quot;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span><br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #008080; font-style: italic;">// Add sort</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; _frm<span style="color: #008000;">.</span><span style="color: #0000FF;">AddSort</span><span style="color: #008000;">&#40;</span><span style="color: #666666;">&quot;Town&quot;</span>, <span style="color: #666666;">&quot;Town&quot;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; _frm<span style="color: #008000;">.</span><span style="color: #0000FF;">AddSort</span><span style="color: #008000;">&#40;</span><span style="color: #666666;">&quot;City&quot;</span>, <span style="color: #666666;">&quot;City&quot;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span><br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; _frm<span style="color: #008000;">.</span><span style="color: #0000FF;">ReportSource</span> <span style="color: #008000;">=</span> inlineReportSlot1<span style="color: #008000;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; _frm<span style="color: #008000;">.</span><span style="color: #0000FF;">ShowDialog</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #008000;">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0600FF; font-weight: bold;">else</span> <span style="color: #0600FF; font-weight: bold;">if</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">!</span>_frm<span style="color: #008000;">.</span><span style="color: #0000FF;">Visible</span><span style="color: #008000;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; _frm<span style="color: #008000;">.</span><span style="color: #0000FF;">ShowDialog</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #008000;">&#125;</span></div></div>
<p>Later add button, then on click event with this code:</p>
<div class="codecolorer-container csharp default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="csharp codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">BSCity<span style="color: #008000;">.</span><span style="color: #0000FF;">Clear</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #008080; font-style: italic;">// fill with dummy source</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; BSCity<span style="color: #008000;">.</span><span style="color: #0000FF;">Add</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">new</span> Data<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span> TownId <span style="color: #008000;">=</span> <span style="color: #FF0000;">1</span>, Town <span style="color: #008000;">=</span> <span style="color: #666666;">&quot;Jeffersontown&quot;</span>, CityId <span style="color: #008000;">=</span> <span style="color: #FF0000;">1</span>, City <span style="color: #008000;">=</span> <span style="color: #666666;">&quot;Kentucky&quot;</span> <span style="color: #008000;">&#125;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; BSCity<span style="color: #008000;">.</span><span style="color: #0000FF;">Add</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">new</span> Data<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span> TownId <span style="color: #008000;">=</span> <span style="color: #FF0000;">2</span>, Town <span style="color: #008000;">=</span> <span style="color: #666666;">&quot;Frankfort&quot;</span>, CityId <span style="color: #008000;">=</span> <span style="color: #FF0000;">1</span>, City <span style="color: #008000;">=</span> <span style="color: #666666;">&quot;Kentucky&quot;</span> <span style="color: #008000;">&#125;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; BSCity<span style="color: #008000;">.</span><span style="color: #0000FF;">Add</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">new</span> Data<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span> TownId <span style="color: #008000;">=</span> <span style="color: #FF0000;">3</span>, Town <span style="color: #008000;">=</span> <span style="color: #666666;">&quot;Clinton&quot;</span>, CityId <span style="color: #008000;">=</span> <span style="color: #FF0000;">2</span>, City <span style="color: #008000;">=</span> <span style="color: #666666;">&quot;New Jersey&quot;</span> <span style="color: #008000;">&#125;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; BSCity<span style="color: #008000;">.</span><span style="color: #0000FF;">Add</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">new</span> Data<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span> TownId <span style="color: #008000;">=</span> <span style="color: #FF0000;">4</span>, Town <span style="color: #008000;">=</span> <span style="color: #666666;">&quot;Westfield&quot;</span>, CityId <span style="color: #008000;">=</span> <span style="color: #FF0000;">3</span>, City <span style="color: #008000;">=</span> <span style="color: #666666;">&quot;New Jersey&quot;</span> <span style="color: #008000;">&#125;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; BSCity<span style="color: #008000;">.</span><span style="color: #0000FF;">Add</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">new</span> Data<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span> TownId <span style="color: #008000;">=</span> <span style="color: #FF0000;">5</span>, Town <span style="color: #008000;">=</span> <span style="color: #666666;">&quot;Woodstock&quot;</span>, CityId <span style="color: #008000;">=</span> <span style="color: #FF0000;">3</span>, City <span style="color: #008000;">=</span> <span style="color: #666666;">&quot;New York&quot;</span> <span style="color: #008000;">&#125;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span><br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; inlineReportSlot1<span style="color: #008000;">.</span><span style="color: #0000FF;">Prepare</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span></div></div>
<p>Run your code to see the result.</p>
<p><a href="http://www.perpetuumsoft.com/Downloads.aspx?lang=en&#038;pid=21">Download Report Sharp-Shooter&#8230;</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.perpetuumsoft.com/dotnet/dynamicsorting/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Follow the @PerpetuumSoft account and get 40% discount on your purchase!</title>
		<link>http://blogs.perpetuumsoft.com/silverlight/christmasdiscount/</link>
		<comments>http://blogs.perpetuumsoft.com/silverlight/christmasdiscount/#comments</comments>
		<pubDate>Wed, 24 Nov 2010 05:20:46 +0000</pubDate>
		<dc:creator>Elena</dc:creator>
				<category><![CDATA[.Net]]></category>
		<category><![CDATA[.Net components]]></category>
		<category><![CDATA[ASP.Net]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[CodeProject]]></category>
		<category><![CDATA[Miscellaneous]]></category>
		<category><![CDATA[Reporting]]></category>
		<category><![CDATA[Silverlight]]></category>
		<category><![CDATA[.net reporting]]></category>
		<category><![CDATA[Reporting Services in Silvelright]]></category>
		<category><![CDATA[Silverlight reporting]]></category>

		<guid isPermaLink="false">http://blogs.perpetuumsoft.com/?p=691</guid>
		<description><![CDATA[




// 



Christmas is almost here!
Warm greetings, pleasant presents and holiday spirit.





Perpetuum Software LLC congratulates everybody on this great holiday and wants to give presents to all our loyal customers.
We want to be in touch with you, to know about your projects and your success. And the most convenient way to stay in touch is Twitter.
Perpetuum [...]]]></description>
			<content:encoded><![CDATA[<table>
<tbody>
<tr>
<td>
<div style="float: right; padding-top: 16px; margin-right: 24px;">
<p><script type="text/javascript">// <![CDATA[
         tweetmeme_service = "bit.ly"; tweetmeme_source = "PerpetuumSoft"; tweetmeme_url = "http://blogs.perpetuumsoft.com/silverlight/christmasdiscount/";
// ]]&gt;</script></p>
<p><script src="http://tweetmeme.com/i/scripts/button.js" type="text/javascript"></script></p>
</div>
</td>
<td>Christmas is almost here!</p>
<p>Warm greetings, pleasant presents and holiday spirit.
</td>
</tr>
</tbody>
</table>
<p><center><a href="http://twitter.com/PerpetuumSoft"><img src="http://www.perpetuumsoft.com/sf/en/ims/company/twitterblog.png" alt=".Net reporting tool" /></a></center></p>
<p>Perpetuum Software LLC congratulates everybody on this great holiday and wants to give presents to all our loyal customers.</p>
<p>We want to be in touch with you, to know about your projects and your success. And the most convenient way to stay in touch is Twitter.</p>
<p>Perpetuum Software LLC presents <strong>20% discount</strong> on the purchase of any of our products to every follower of @PerpetuumSoft account. Just follow us and you will be able to save considerable sum on the purchase of .Net and Silverlight tools for reporting systems, data visualization and OLAP analysis. With our components your business will prosper!</p>
<p><strong>Want to save more money?</strong></p>
<p>We are ready to assist you in this. Tweet the message with #NetReporting hashtag and get <strong>additional 20%</strong> as a discount.</p>
<p>So, to get <strong>40% discount</strong> on purchase of Perpetuum Software products you need:</p>
<ul>
<li>Follow the <a href="http://twitter.com/PerpetuumSoft"><strong>@PerpetuumSoft</strong></a> account on your Twitter account.</li>
<li>From your Twitter account, tweet the message referencing to us with #NetReporting tag.</li>
</ul>
<p>To get more information on this Christmas offer please follow the <a href="http://www.perpetuumsoft.com/Product.aspx?pid=41&#038;tid=christmasoffer"><strong>link</strong></a>.</p>
<p>We wish you a Merry Christmas and a Happy New Year!</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.perpetuumsoft.com/silverlight/christmasdiscount/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Easy Templates Creation with Ribbon Report Designer.</title>
		<link>http://blogs.perpetuumsoft.com/dotnet/ribbonreportdesigner/</link>
		<comments>http://blogs.perpetuumsoft.com/dotnet/ribbonreportdesigner/#comments</comments>
		<pubDate>Fri, 29 Oct 2010 09:01:36 +0000</pubDate>
		<dc:creator>Elena</dc:creator>
				<category><![CDATA[.Net]]></category>
		<category><![CDATA[.Net components]]></category>
		<category><![CDATA[ASP.Net]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[CodeProject]]></category>
		<category><![CDATA[Reporting]]></category>
		<category><![CDATA[.net reporting]]></category>
		<category><![CDATA[asp.net reporting]]></category>
		<category><![CDATA[reporting tool]]></category>

		<guid isPermaLink="false">http://blogs.perpetuumsoft.com/?p=674</guid>
		<description><![CDATA[




// 



Report Sharp-Shooter is a .Net reporting tool for creation of reports of any complexity.
The reports are created with the use of report designer. The latest versions of Report Sharp-Shooter features new Ribbon Report Designer Interface.





Ribbon Interface provides easy creation of templates and high representativeness as MS Word. The Ribbon Report Designer Interface is developed [...]]]></description>
			<content:encoded><![CDATA[<table>
<tbody>
<tr>
<td>
<div style="float: right; padding-top: 16px; margin-right: 24px;">
<p><script type="text/javascript">// <![CDATA[
         tweetmeme_service = "bit.ly"; tweetmeme_source = "PerpetuumSoft"; tweetmeme_url = "http://blogs.perpetuumsoft.com/dotnet/ribbonreportdesigner/";
// ]]&gt;</script></p>
<p><script src="http://tweetmeme.com/i/scripts/button.js" type="text/javascript"></script></p>
</div>
</td>
<td><a href="http://www.perpetuumsoft.com/Report-Sharp-Shooter.aspx"><strong>Report Sharp-Shooter</strong></a> is a .Net reporting tool for creation of reports of any complexity.<br />
The reports are created with the use of report designer. The latest versions of Report Sharp-Shooter features new Ribbon Report Designer Interface.
</td>
</tr>
</tbody>
</table>
<p><center><a href="http://www.perpetuumsoft.com/sf/en/ims/company/rss_preview.gif"><img src="http://www.perpetuumsoft.com/sf/en/ims/company/rss_preview.gif" alt="Reporting engine for .Net" /></a></center></p>
<p>Ribbon Interface provides easy creation of templates and high representativeness as MS Word. The Ribbon Report Designer Interface is developed to eliminate all the shortcomings of the previous version of report designer such as less flexibility, usability and convenience.</p>
<p>In the current version of Report Sharp-Shooter, new report designer can be invoked from start menu (<strong>Perpetuum Software->dotNetModelKitSuite->Report Sharp-Shooter->Run Report sharp-Shooter Samples Center</strong>) by pressing the <strong>“Design Template with New DesignerForm”</strong> button. Or you can invoke the report designer directly from code manually. The designer includes 4 tabs: Home, Insert, Layout, and View. These tab sections includes the controls which are grouped according to their functions. Thus, the development of any template becomes productive and less time consuming.</p>
<p>New version 5.0.0.0 of Report Sharp-Shooter will feature contextual tabs. Contextual tabs will allow you to provide the user with UI controls within a certain context, for example, when some object in a report template is selected. Contextual tabs with a similar context are organized in a contextual tab group so you can have more than one tab in a group. </p>
<p>A convenient preview during the selection of properties values provides the ability to see the result of changes in element immediately. Preview will be available for Font, FontSize, TextFill, Angle, Fill, Gallery of Styles, SizeMode, Line, Shadow, Label, BackColor and BarColor.</p>
<p>And one more useful functionality will be developed in Report Sharp-Shooter 5.0.0.0. Quick access toolbar will include standard controls like save, undo, redo and so on.</p>
<p><strong>Report Sharp-Shooter 5.0.0.0 release will be available in the middle of November, 2010.</strong></p>
<p>We welcome all the opinions and statements at our <a href="http://www.perpetuumsoft.com/Forum.aspx?lang=en&#038;forum=RSS"><strong>Report Sharp-Shooter Forum</strong></a>. You opinion on Ribbon Report Designer Interface will help us to include features that are essential exactly got you!</p>
<p><a href="http://www.perpetuumsoft.com/Downloads.aspx?lang=en&#038;pid=21"><strong>Download Report Sharp-Shooter and evaluate Ribbon Report Designer Interface.</strong></a></p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.perpetuumsoft.com/dotnet/ribbonreportdesigner/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Advanced Usability Features in Report Sharp-Shooter 5.0!</title>
		<link>http://blogs.perpetuumsoft.com/dotnet/rss5release/</link>
		<comments>http://blogs.perpetuumsoft.com/dotnet/rss5release/#comments</comments>
		<pubDate>Mon, 25 Oct 2010 03:40:36 +0000</pubDate>
		<dc:creator>Elena</dc:creator>
				<category><![CDATA[.Net]]></category>
		<category><![CDATA[.Net components]]></category>
		<category><![CDATA[ASP.Net]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[CodeProject]]></category>
		<category><![CDATA[Reporting]]></category>
		<category><![CDATA[.net reporting]]></category>
		<category><![CDATA[asp.net reporting]]></category>
		<category><![CDATA[Web reporting]]></category>

		<guid isPermaLink="false">http://blogs.perpetuumsoft.com/?p=670</guid>
		<description><![CDATA[




// 



Perpetuum Software specialists would like to share the latest news with the users.
We continuing the development of our reporting tool usability and already implemented some important features for release of Report Sharp-Shooter 5.0.0.0.





A new version will feature improved drag&#038;drop functionality in the report designer. This most loved by developers ability provides the fast and [...]]]></description>
			<content:encoded><![CDATA[<table>
<tbody>
<tr>
<td>
<div style="float: right; padding-top: 16px; margin-right: 24px;">
<p><script type="text/javascript">// <![CDATA[
         tweetmeme_service = "bit.ly"; tweetmeme_source = "PerpetuumSoft"; tweetmeme_url = "http://blogs.perpetuumsoft.com/dotnet/rss5release/";
// ]]&gt;</script></p>
<p><script src="http://tweetmeme.com/i/scripts/button.js" type="text/javascript"></script></p>
</div>
</td>
<td>Perpetuum Software specialists would like to share the latest news with the users.<br />
We continuing the development of our reporting tool usability and already implemented some important features for release of <a href="http://www.perpetuumsoft.com/Report-Sharp-Shooter.aspx"><strong>Report Sharp-Shooter</strong></a> 5.0.0.0.
</td>
</tr>
</tbody>
</table>
<p><center><a href="http://www.perpetuumsoft.com/sf/en/ims/company/drag_drop.gif"><img src="http://www.perpetuumsoft.com/sf/en/ims/company/drag_drop.gif" alt="Reporting engine for .Net" /></a></center></p>
<p>A new version will feature improved drag&#038;drop functionality in the report designer. This most loved by developers ability provides the fast and easy-to-learn technique of performing the tasks. We added such features as:</p>
<ul>
<li>Drag&#038;drop in the report designer connected with the Parent change. Previously, if you drag&#038;drop the object, only element coordinate was changed. Now, if you locate the element in the other container (band), the parent will be changed automatically similar to the change of container in the tree.</li>
<li>Ability to copy the element during drag&#038;drop. You are able not just to drag the element from one position to another, but copy this element by pressing CTRL.</li>
<li>Drag&#038;drop from the data source. Now the element is inserted immediately.</li>
</ul>
<p>Report Sharp-Shooter is remarkable for its flexibility which directly depends on such component as scripts editor. We redesigned the scripts editor in the version 5.0 of our report engine. Code autocompletion speeds up scripts writing and, as a result, saves your time on project development. Now, scripts editor has almost all the features that can be found in the Visual Studio.NET code Editor, including customizable syntax highlighting for C#, VB.NET and SQL, code outlining, code completion, unlimited undo/redo, bookmarks, word wrap, drag-n-drop, built-in search/replace dialogs, multiple view of the same text, displaying gutter, margin, line numbers and many more.<br />
Minor shortcomings and bugs were fixed, thus, you will be able to focus on your project, not on looking for workarounds.</p>
<p>The upcoming release will include additional features which will provide the most comfortable, easy and fast work of reports creation and data processing.  The next blog posts will unveil new functionality of ribbon report designer interface, improvements in preview options and features of Report Sharp-Shooter which, we hope, will help our users to realize their projects with minimum efforts and maximum effect.  </p>
<p>We welcome all your suggestions on our <a href="http://www.perpetuumsoft.com/Forum.aspx?lang=en&#038;forum=RSS"><strong>forum</strong></a> and via <a href="mailto:sales@perpetuumsoft.com">e-mail</a>.</p>
<p><a href="http://www.perpetuumsoft.com/Downloads.aspx?lang=en&#038;pid=21"><strong>Download Report Sharp-Shooter free  trial and evaluate its functionality.</strong><br />
</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.perpetuumsoft.com/dotnet/rss5release/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Components for reporting, data analysis and visualization now with a 25% discount!</title>
		<link>http://blogs.perpetuumsoft.com/dotnet/dotnetcomponentsdiscount/</link>
		<comments>http://blogs.perpetuumsoft.com/dotnet/dotnetcomponentsdiscount/#comments</comments>
		<pubDate>Fri, 17 Sep 2010 05:23:32 +0000</pubDate>
		<dc:creator>Elena</dc:creator>
				<category><![CDATA[.Net]]></category>
		<category><![CDATA[.Net components]]></category>
		<category><![CDATA[ASP.Net]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[CodeProject]]></category>
		<category><![CDATA[Components Suites]]></category>
		<category><![CDATA[Reporting]]></category>
		<category><![CDATA[.net reporting]]></category>
		<category><![CDATA[Dashboards]]></category>
		<category><![CDATA[Silverlight reporting]]></category>
		<category><![CDATA[Web reporting]]></category>

		<guid isPermaLink="false">http://blogs.perpetuumsoft.com/?p=648</guid>
		<description><![CDATA[




// 



Perpetuum Software LLC destroys all obstacles to creation of professional applications for data processing, analysis and visualization and announces the price-cutting on .Net ModelKit Suite package.




Now, you can purchase this up-to-date .Net components package with a 25% discount.
Order .Net ModelKit Suite and you’ll get:

 Powerful Windows Forms, ASP.Net and Silverlight reporting tools for creation [...]]]></description>
			<content:encoded><![CDATA[<table>
<tbody>
<tr>
<td>
<div style="float: right; padding-top: 16px; margin-right: 24px;">
<p><script type="text/javascript">// <![CDATA[
         tweetmeme_service = "bit.ly"; tweetmeme_source = "PerpetuumSoft"; tweetmeme_url = "http://blogs.perpetuumsoft.com/dotnet/dotnetcomponentsdiscount/";
// ]]&gt;</script></p>
<p><script src="http://tweetmeme.com/i/scripts/button.js" type="text/javascript"></script></p>
</div>
</td>
<td>Perpetuum Software LLC destroys all obstacles to creation of professional applications for data processing, analysis and visualization and announces the price-cutting on <a href="http://www.perpetuumsoft.com/Net-ModelKit-Suite.aspx"><strong>.Net ModelKit Suite</strong></a> package.</td>
</tr>
</tbody>
</table>
<p><center><a href="http://www.perpetuumsoft.com/sf/en/ims/company/suite_25.jpg"><img src="http://www.perpetuumsoft.com/sf/en/ims/company/suite_25.jpg" alt=".Net ModelKit Suite Discount" /></a></center></p>
<p>Now, you can purchase this up-to-date .Net components package with a 25% discount.</p>
<p>Order .Net ModelKit Suite and you’ll get:</p>
<ul>
<li> Powerful Windows Forms, ASP.Net and Silverlight reporting tools for creation of reports of any complexity on the basis of any .Net data source;</li>
<li>Flexible instrumentation and chart components for data visualization in the form of gauges, charts and digital dashboards;</li>
<li> Reliable OLAP component for multidimensional data analysis and charting OLAP data.</li>
</ul>
<p>Everyday business makes high demands to software and .Net ModelKit Suite is capable of addressing all these demands!</p>
<p><a href="http://www.perpetuumsoft.com/Downloads.aspx?lang=en&amp;pid=38"><strong>Download .Net ModelKit Suite…</strong></a></p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.perpetuumsoft.com/dotnet/dotnetcomponentsdiscount/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Answers to “Please help me…” Queries are in One Place. Perpetuum Software Help Center is Available!</title>
		<link>http://blogs.perpetuumsoft.com/dotnet/supportcenter/</link>
		<comments>http://blogs.perpetuumsoft.com/dotnet/supportcenter/#comments</comments>
		<pubDate>Wed, 25 Aug 2010 09:15:17 +0000</pubDate>
		<dc:creator>Elena</dc:creator>
				<category><![CDATA[.Net]]></category>
		<category><![CDATA[.Net components]]></category>
		<category><![CDATA[ASP.Net]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[CodeProject]]></category>
		<category><![CDATA[Miscellaneous]]></category>
		<category><![CDATA[.net reporting]]></category>
		<category><![CDATA[Silverlight reporting]]></category>

		<guid isPermaLink="false">http://blogs.perpetuumsoft.com/?p=626</guid>
		<description><![CDATA[




// 



Everyday Perpetuum Technical Support Team maintains high quality levels of support and customer satisfaction through timely answers to requirements. Now we are glad to announce that all the support resources can be found in one place: Perpetuum Software Help Center.  




It is not necessary to wait for the response from our Technical Support [...]]]></description>
			<content:encoded><![CDATA[<table>
<tbody>
<tr>
<td>
<div style="float: right; padding-top: 16px; margin-right: 24px;">
<p><script type="text/javascript">// <![CDATA[
      tweetmeme_service = "bit.ly"; tweetmeme_source = "PerpetuumSoft"; tweetmeme_url = "http://blogs.perpetuumsoft.com/dotnet/supportcenter/";
// ]]&gt;</script></p>
<p><script src="http://tweetmeme.com/i/scripts/button.js" type="text/javascript"></script></p>
</div>
</td>
<td>Everyday Perpetuum Technical Support Team maintains high quality levels of support and customer satisfaction through timely answers to requirements. Now we are glad to announce that all the support resources can be found in one place: <a href="http://helpcenter.perpetuumsoft.com/Main/Default.aspx"><strong>Perpetuum Software Help Center</strong></a>.  </td>
</tr>
</tbody>
</table>
<p><center><a href="http://www.perpetuumsoft.com/sf/en/ims/company/context_menu.jpg"><img src="http://www.perpetuumsoft.com/sf/en/ims/company/help.jpg" alt="Perpetuum Software Help Center" /></a></center></p>
<p>It is not necessary to wait for the response from our Technical Support Team. You can find answers to “Help me…” queries in a structured easy-to-use resources center.</p>
<p>What materials you can find in our support portal:</p>
<ol>
<li><a href="http://helpcenter.perpetuumsoft.com/KB/browse.aspx">“How to…” questions.</a> Our knowledge base includes general questions on products use, licensing and purchase. Here you can find a simple answer to a simple query.</li>
<li><a href="http://www.perpetuumsoft.com/Product.aspx?lang=en&#038;pid=21&#038;tid=documentation">Products User Guides.</a> Our documentation is created for those who are eager to learn the most sophisticated product functionality for creation of full functional reporting systems.</li>
<li><a href="http://www.perpetuumsoft.com/Product.aspx?pid=21&#038;tid=video">Video Tutorials.</a> Seeing once is better than reading twice. Our Video Tutorials section offers video on reports creation and working with reports elements.</li>
<li><a href="http://www.perpetuumsoft.com/Forums.aspx">Forum.</a> A problem shared is a problem halved. Share you issue with the community to get unique non-standard professional suggestions and solutions.</li>
<li><a href="http://helpcenter.perpetuumsoft.com/Main/Default.aspx">Tickets system.</a> Our Technical Support Team is always glad to help you in your projects development. While we pride ourselves on fast and accurate responses to customer questions and problems, Ticket System provides an ability to track the status of your query.</li>
</ol>
<p><a href="http://helpcenter.perpetuumsoft.com/Main/Default.aspx"><strong>Visit our Help Center and view our support resource developed specially for you!</strong></a></p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.perpetuumsoft.com/dotnet/supportcenter/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Usability is not just a word for us! We prove it with Report Sharp-Shooter 4.4 and Report Sharp-Shooter for Silverlight 4.4!</title>
		<link>http://blogs.perpetuumsoft.com/silverlight/rssnewrelease/</link>
		<comments>http://blogs.perpetuumsoft.com/silverlight/rssnewrelease/#comments</comments>
		<pubDate>Thu, 19 Aug 2010 06:15:53 +0000</pubDate>
		<dc:creator>Elena</dc:creator>
				<category><![CDATA[.Net]]></category>
		<category><![CDATA[.Net components]]></category>
		<category><![CDATA[ASP.Net]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[CodeProject]]></category>
		<category><![CDATA[Reporting]]></category>
		<category><![CDATA[Silverlight]]></category>
		<category><![CDATA[.net reporting]]></category>
		<category><![CDATA[Silverlight reporting]]></category>

		<guid isPermaLink="false">http://blogs.perpetuumsoft.com/?p=621</guid>
		<description><![CDATA[




// 



We put a lot of emphasis on optimizing usability, user interactions and user interface. In general, usability refers to how well users can learn and use a product to achieve their goals and how satisfied they are with that process.




What we did to provide better usability in Report Sharp-Shooter 4.4.0.0:

Ease of learning –  [...]]]></description>
			<content:encoded><![CDATA[<table>
<tbody>
<tr>
<td>
<div style="float: right; padding-top: 16px; margin-right: 24px;">
<p><script type="text/javascript">// <![CDATA[
      tweetmeme_service = "bit.ly"; tweetmeme_source = "PerpetuumSoft"; tweetmeme_url = "http://blogs.perpetuumsoft.com/silverlight/rssnewrelease/";
// ]]&gt;</script></p>
<p><script src="http://tweetmeme.com/i/scripts/button.js" type="text/javascript"></script></p>
</div>
</td>
<td>We put a lot of emphasis on optimizing usability, user interactions and user interface. In general, usability refers to how well users can learn and use a product to achieve their goals and how satisfied they are with that process.</td>
</tr>
</tbody>
</table>
<p><center><a href="http://www.perpetuumsoft.com/sf/en/ims/company/context_menu.jpg"><img src="http://www.perpetuumsoft.com/sf/en/ims/company/context_menu.jpg" alt="New release with improved usability" /></a></center></p>
<p>What we did to provide better usability in Report Sharp-Shooter 4.4.0.0:</p>
<ul>
<li>Ease of learning –  we added a set of <strong><a href="http://www.perpetuumsoft.com/Product.aspx?pid=21&#038;tid=video">video tutorials</a></strong> which will help you to work with the product, to understand its functionality and to create reports on the fly.</li>
<li>Efficiency of use – new context menu allows the quick access to the frequently used functionality through the menu items. Now, you can easily change element’s properties with a few mouse clicks.</li>
<li>Memorability – improved ribbon designer is gaining more and more tab sections to which you are accustomed in standard ribbon interfaces. Now you can easily change pages layouts with such controls as margins, orientation and so on, located on a new tab section.</li>
<li>Extended functionality – we designed new dialogs for setting parameters for export to PDF and Excel. Now, you can set all parameters of export in a convenient dialog window which is analogous to Win Forms dialog.</li>
</ul>
<p>It is important to realize that usability is not a single, one-dimensional property of a user interface. Usability is a combination of factors and our company does all its best to provide you with the convenient to use, flexible software!</p>
<p><strong><a href="http://www.perpetuumsoft.com/Downloads.aspx">Download Report Sharp-Shooter and Report Sharp-Shooter for Silverlight…</a></strong></p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.perpetuumsoft.com/silverlight/rssnewrelease/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>30% Discount For Data Visualization Components!</title>
		<link>http://blogs.perpetuumsoft.com/dotnet/datavisualization/</link>
		<comments>http://blogs.perpetuumsoft.com/dotnet/datavisualization/#comments</comments>
		<pubDate>Thu, 12 Aug 2010 06:51:19 +0000</pubDate>
		<dc:creator>Elena</dc:creator>
				<category><![CDATA[.Net]]></category>
		<category><![CDATA[.Net components]]></category>
		<category><![CDATA[ASP.Net]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[CodeProject]]></category>
		<category><![CDATA[Components Suites]]></category>
		<category><![CDATA[Dashboards]]></category>
		<category><![CDATA[Gauges]]></category>

		<guid isPermaLink="false">http://blogs.perpetuumsoft.com/?p=614</guid>
		<description><![CDATA[




// 



Perpetuum Software cuts down prices on data visualization components for Windows Form and ASP.Net applications! Now all the components are available with a 30% discount!




For any business, any reduction in expenses is always welcome and could result in increasing your profits. We offer flexible .Net component for gauges, charts and digital dashboards creation at [...]]]></description>
			<content:encoded><![CDATA[<table>
<tbody>
<tr>
<td>
<div style="float: right; padding-top: 16px; margin-right: 24px;">
<p><script type="text/javascript">// <![CDATA[
     tweetmeme_service = "bit.ly"; tweetmeme_source = "PerpetuumSoft"; tweetmeme_url = "http://blogs.perpetuumsoft.com/dotnet/datavisualization/";
// ]]&gt;</script></p>
<p><script src="http://tweetmeme.com/i/scripts/button.js" type="text/javascript"></script></p>
</div>
</td>
<td>Perpetuum Software cuts down prices on data visualization components for Windows Form and ASP.Net applications! Now all the components are available with a 30% discount!</td>
</tr>
</tbody>
</table>
<p><a href="http://www.perpetuumsoft.com/sf/en/ims/company/Datavisualization_30.jpg"><img src="http://www.perpetuumsoft.com/sf/en/ims/company/Datavisualization_30.jpg" alt="Discount for Data Visualization" /></a></p>
<p>For any business, any reduction in expenses is always welcome and could result in increasing your profits. We offer flexible .Net component for gauges, charts and digital dashboards creation at a favorable price.</p>
<p>Now you can order:</p>
<li><a href="http://www.perpetuumsoft.com/Instrumentation-ModelKit.aspx"><strong>Instrumentation ModelKit</strong></a> – reliable .Net instrumentation component for gauges, SCADA systems and key performance indicators (KPIs) creation for only $ 500.00. This product includes more than 180 predesigned gauges in 10 visually appealing styles.</li>
<li><a href="http://www.perpetuumsoft.com/Chart-ModelKit.aspx"><strong>Chart ModelKit</strong></a> – .Net charting component for graphs and diagrams creation for only $ 315.00. This product includes more than 180+ 2D pre-built charts and a native WYSIWYG chart designer.</li>
<li><a href="http://www.perpetuumsoft.com/Net-Dashboard-Suite.aspx"><strong>.Net Dashboard Suite</strong></a> – a package of .Net controls for digital dashboards creation for only $ 665.00.</li>
<p>Build your business with right instruments! Visualize data and save your money!</p>
<p>Please contact us with all your questions and request at <a href="mailto:sales@perpetuumsoft.com"><strong>sales@perpetuumsoft.com</strong></a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.perpetuumsoft.com/dotnet/datavisualization/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Get Vista-styled icons set together with the powerful components for Silverlight reporting, data analysis and visualization!</title>
		<link>http://blogs.perpetuumsoft.com/silverlight/ribbonicons/</link>
		<comments>http://blogs.perpetuumsoft.com/silverlight/ribbonicons/#comments</comments>
		<pubDate>Mon, 26 Jul 2010 08:16:09 +0000</pubDate>
		<dc:creator>Elena</dc:creator>
				<category><![CDATA[.Net]]></category>
		<category><![CDATA[.Net components]]></category>
		<category><![CDATA[ASP.Net]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[CodeProject]]></category>
		<category><![CDATA[Components Suites]]></category>
		<category><![CDATA[Reporting]]></category>
		<category><![CDATA[Silverlight]]></category>
		<category><![CDATA[.net reporting]]></category>
		<category><![CDATA[Dashboards]]></category>
		<category><![CDATA[Silverlight reporting]]></category>
		<category><![CDATA[Web reporting]]></category>

		<guid isPermaLink="false">http://blogs.perpetuumsoft.com/?p=593</guid>
		<description><![CDATA[





Perpetuum Software LLC, a world-wide developer of .Net software solutions for business, continues to surprise its customers and presents Ribbon Bar Icons package to every customer of .Net ModelKit Suite.



.Net ModelKit Suite is a pack of 4 components for Silverlight reporting, OLAP analysis, charting and dashboards creation. 
Ribbon Bar Icons package is a set of [...]]]></description>
			<content:encoded><![CDATA[<table>
<td>
<div style="float: right; padding-top: 16px; margin-right: 24px;">
<p><script type="text/javascript"><!--
tweetmeme_service = "bit.ly";
tweetmeme_source = "PerpetuumSoft";
tweetmeme_url = "http://blogs.perpetuumsoft.com/silverlight/ribbonicons/";
// --></script></p>
<p><script src="http://tweetmeme.com/i/scripts/button.js" type="text/javascript"></script></div>
</td>
<td>Perpetuum Software LLC, a world-wide developer of .Net software solutions for business, continues to surprise its customers and presents Ribbon Bar Icons package to every customer of .Net ModelKit Suite.
</td>
</table>
<p><center><a href="http://www.perpetuumsoft.com/sf/en/ims/company/icongift.jpg"><img src="http://www.perpetuumsoft.com/sf/en/ims/company/icongift.jpg" alt="Ribbon Icons for BI" /></a></center></p>
<p><A href="http://www.perpetuumsoft.com/Net-ModelKit-Suite.aspx"><strong>.Net ModelKit Suite</strong></a> is a pack of 4 components for Silverlight reporting, OLAP analysis, charting and dashboards creation. </p>
<p><A href="http://www.perpetuumsoft.com/Ribbon-Bar-Icons.aspx"><strong>Ribbon Bar Icons</strong></a> package is a set of more than 1170 icons in Vista style created specifically for ribbon toolbar.</p>
<p>These icons can be easily integrated into any application, thus you will be able to design intuitive and attractive user interface and enhance usability of your software.</p>
<p>.Net ModelKit Suite together with Ribbon Bar Icons package is powerful tandem for creating the applications that will satisfy any clients’ taste.</p>
<p><A href="http://www.perpetuumsoft.com/Product.aspx?lang=en&#038;pid=38&#038;tid=suitepricelist"><strong>Purchase .Net ModelKit Suite and get Ribbon Bar Icons free of charge!</strong></a> </p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.perpetuumsoft.com/silverlight/ribbonicons/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>New Ribbon Designer Interface  – All Controls in a One Place!</title>
		<link>http://blogs.perpetuumsoft.com/dotnet/ribboninterfaceindesigner/</link>
		<comments>http://blogs.perpetuumsoft.com/dotnet/ribboninterfaceindesigner/#comments</comments>
		<pubDate>Wed, 07 Jul 2010 06:11:19 +0000</pubDate>
		<dc:creator>Elena</dc:creator>
				<category><![CDATA[.Net]]></category>
		<category><![CDATA[.Net components]]></category>
		<category><![CDATA[ASP.Net]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[CodeProject]]></category>
		<category><![CDATA[Reporting]]></category>
		<category><![CDATA[.net reporting]]></category>
		<category><![CDATA[asp.net reporting]]></category>
		<category><![CDATA[Web reporting]]></category>

		<guid isPermaLink="false">http://blogs.perpetuumsoft.com/?p=557</guid>
		<description><![CDATA[





Convenience of Ribbon Interface Now in Report Sharp-Shooter!




The most important for a developer is the ability to soak himself in his work with keeping his mind on what he is doing and without distraction to the annoying little things, such as looking for essential elements in the designer. Everything must be strictly logical, accessible and [...]]]></description>
			<content:encoded><![CDATA[<table>
<td>
<div style="float: right; padding-top: 16px; margin-right: 24px;">
<p><script type="text/javascript"><!--
tweetmeme_service = "bit.ly";
tweetmeme_source = "PerpetuumSoft";
tweetmeme_url = "http://blogs.perpetuumsoft.com/dotnet/ribboninterfaceindesigner/";
// --></script></p>
<p><script src="http://tweetmeme.com/i/scripts/button.js" type="text/javascript"></script></div>
</td>
<td><strong>Convenience of Ribbon Interface Now in Report Sharp-Shooter!</strong></td>
</tr>
</table>
</tbody>
</table>
<p>The most important for a developer is the ability to soak himself in his work with keeping his mind on what he is doing and without distraction to the annoying little things, such as looking for essential elements in the designer. Everything must be strictly logical, accessible and visible. And ribbon toolbar is the most appropriate form for control elements organization.</p>
<p style="text-align: center;"><img class="aligncenter" src="http://www.perpetuumsoft.com/sf/en/ims/company/ribbons_theme.jpg" alt="" width="364" height="302" /></p>
<p>The ribbon is a pane that contains buttons and icons which are grouped by certain functionality. Thus, a developer can get access to the needed element immediately without looking through multiple levels of hierarchical menus, toolbars or task panes before finding the right command.</p>
<p>Now, our clients will have such convenient functionality as ribbon designer interface when they will work with our reporting tool: Report Sharp-Shooter. Perpetuum Software LLC is about to release a new version of the report generator with a new designer interface in ribbon style.<br />
To provide versions compatibility the previous version of designer interface is preserved in the product. So, it is up to you to decide what version of designer to use. But all our developer team hopes on your feedback on our new ribbon designer interface and its functionality. Your opinion and suggestions will help us to improve the product and add the essential for YOU functionality.</p>
<p>All the comments and suggestions can be posted on our forum or e-mail to <a href="mailto:sales@perpetuumsoft.com">sales@perpetuumsoft.com</a>.</p>
<p>Looking forward to your important notes!</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.perpetuumsoft.com/dotnet/ribboninterfaceindesigner/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

