<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://weblogs.asp.net/utility/FeedStylesheets/atom.xsl" media="screen"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en"><title type="html">Rudy Setyo Purnomo</title><subtitle type="html">foundations and fundamentals</subtitle><id>http://weblogs.asp.net/rudysetyo/atom.aspx</id><link rel="alternate" type="text/html" href="http://weblogs.asp.net/rudysetyo/default.aspx" /><link rel="self" type="application/atom+xml" href="http://weblogs.asp.net/rudysetyo/atom.aspx" /><generator uri="http://communityserver.org" version="3.0.20510.895">Community Server</generator><updated>2008-02-05T12:25:00Z</updated><entry><title>Changeable SyntaxHighlighter Theme on BlogEngine.NET using Extension</title><link rel="alternate" type="text/html" href="http://weblogs.asp.net/rudysetyo/archive/2009/08/12/changeable-syntaxhighlighter-theme-on-blogengine-net-using-extension.aspx" /><id>http://weblogs.asp.net/rudysetyo/archive/2009/08/12/changeable-syntaxhighlighter-theme-on-blogengine-net-using-extension.aspx</id><published>2009-08-12T04:39:57Z</published><updated>2009-08-12T04:39:57Z</updated><content type="html">&lt;p&gt;&lt;a href="http://alexgorbatchev.com/wiki/SyntaxHighlighter:Demo" target="_blank"&gt;Alex Gorbatchev&lt;/a&gt; create a great tool, write on JavaScript, to highlight our code on blog posting. But how to implement SyntaxHighlighter on every post in our BlogEngine.NET? There is a good Windows Live Writer &lt;a href="http://sourcecodeplugin.codeplex.com/" target="_blank"&gt;Plugin&lt;/a&gt; by &lt;a href="http://blog.pokluda.com/" target="_blank"&gt;David Pokluda&lt;/a&gt; that implement SyntaxHighlighter into BlogEngine.NET using the Extension.&lt;/p&gt;  &lt;p&gt;But the extension by Pokluda doesn’t have the ability to change the SyntaxHighlighter Theme, by 30 July 2009, SyntaxHighlighter have 6 built in theme, please check at &lt;a href="http://alexgorbatchev.com/wiki/SyntaxHighlighter:Themes" target="_blank"&gt;the web&lt;/a&gt;. Therefore i want to extend the extension by Pokluda to have an ability to change the theme.&lt;/p&gt;  &lt;p&gt;Basically, to do this we need a setting for the extension, using ExtensionSettings class would be the answer.&lt;/p&gt;  &lt;pre class="brush: csharp; auto-links: true; collapse: false; first-line: 1; gutter: true; html-script: false; light: false; ruler: false; smart-tabs: true; tab-size: 4; toolbar: true;"&gt;// Code by Rudy Setyo Purnomo
// http://rudysetyo.it

ExtensionSettings settings = new ExtensionSettings(“SyntaxHighlighter”);

settings.AddParameter(
    &amp;quot;shTheme&amp;quot;, 
    &amp;quot;shTheme&amp;quot;, 
    50, 
    true, 
    true, 
    ParameterType.RadioGroup);
settings.AddValue(
    &amp;quot;shTheme&amp;quot;, 
    new string[] 
        { 
            &amp;quot;shThemeDefault&amp;quot;,
            &amp;quot;shThemeDjango&amp;quot;, 
            &amp;quot;shThemeEmacs&amp;quot;, 
            &amp;quot;shThemeFadeToGrey&amp;quot;,
            &amp;quot;shThemeMidnight&amp;quot;,
            &amp;quot;shThemeRDark&amp;quot;
        }, 
    &amp;quot;shThemeDefault&amp;quot;);

settings.Help = &amp;quot;SyntaxHighlighter Theme&amp;quot;;

ExtensionManager.ImportSettings(settings);&lt;/pre&gt;

&lt;p&gt;If you see the original code by Pokluda, you’ll see that the AddStylesheetToPage method only have one parameter, i add one more parameter to set the Theme.&lt;/p&gt;

&lt;pre class="brush: csharp; auto-links: true; collapse: false; first-line: 1; gutter: true; html-script: false; light: false; ruler: false; smart-tabs: true; tab-size: 4; toolbar: true;"&gt;// Code by Rudy Setyo Purnomo
// http://rudysetyo.it

private void AddStylesheetToPage(Page page, string theme)
{
    HtmlLink css = new HtmlLink();
    css.Attributes[&amp;quot;type&amp;quot;] = &amp;quot;text/css&amp;quot;;
    css.Attributes[&amp;quot;rel&amp;quot;] = &amp;quot;stylesheet&amp;quot;;
    css.Attributes[&amp;quot;href&amp;quot;] = GetAbsoluteFromRelativeUrl(&amp;quot;SyntaxHighlighter/Styles/shCore.css&amp;quot;);
    page.Header.Controls.Add(css);

    css = new HtmlLink();
    css.Attributes[&amp;quot;type&amp;quot;] = &amp;quot;text/css&amp;quot;;
    css.Attributes[&amp;quot;rel&amp;quot;] = &amp;quot;stylesheet&amp;quot;;
    css.Attributes[&amp;quot;href&amp;quot;] = GetAbsoluteFromRelativeUrl(&amp;quot;SyntaxHighlighter/Styles/&amp;quot; + theme + &amp;quot;.css&amp;quot;);
    page.Header.Controls.Add(css);
}

// and use this code to receive Theme name from setting parameter.

string theme = _settings.GetSingleValue(&amp;quot;shTheme&amp;quot;);&lt;/pre&gt;

&lt;p&gt;These screenshot is the setting screen to change the theme&lt;/p&gt;

&lt;p&gt;&lt;a href="http://rudysetyo.it/image.axd?picture=WindowsLiveWriter/ChangeableSyntaxHighli.NETusingExtension/22C090F6/setting_thumb.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="setting" border="0" alt="setting" src="http://weblogs.asp.net/blogs/rudysetyo/setting_0A47E5CF.jpg" width="487" height="398" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;And the is the 6 theme:&lt;/p&gt;
shThemeDefault 

&lt;br /&gt;&lt;a href="http://rudysetyo.it/image.axd?picture=WindowsLiveWriter/ChangeableSyntaxHighli.NETusingExtension/0481EBCE/shThemeDefault_thumb.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="shThemeDefault" border="0" alt="shThemeDefault" src="http://weblogs.asp.net/blogs/rudysetyo/shThemeDefault_6BADF525.jpg" width="602" height="86" /&gt;&lt;/a&gt; 

&lt;br /&gt;

&lt;br /&gt;shThemeDjango 

&lt;br /&gt;&lt;a href="http://rudysetyo.it/image.axd?picture=WindowsLiveWriter/ChangeableSyntaxHighli.NETusingExtension/7777E5EF/shThemeDjango.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="shThemeDjango" border="0" alt="shThemeDjango" src="http://weblogs.asp.net/blogs/rudysetyo/shThemeDjango_25508F10.jpg" width="603" height="84" /&gt;&lt;/a&gt; 

&lt;br /&gt;

&lt;br /&gt;shThemeEmacs 

&lt;br /&gt;&lt;a href="http://rudysetyo.it/image.axd?picture=WindowsLiveWriter/ChangeableSyntaxHighli.NETusingExtension/31CF47D2/shThemeEmacs_thumb.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="shThemeEmacs" border="0" alt="shThemeEmacs" src="http://weblogs.asp.net/blogs/rudysetyo/shThemeEmacs_1C1453CF.jpg" width="604" height="87" /&gt;&lt;/a&gt; 

&lt;br /&gt;

&lt;br /&gt;shThemeFadeToGrey 

&lt;br /&gt;&lt;a href="http://rudysetyo.it/image.axd?picture=WindowsLiveWriter/ChangeableSyntaxHighli.NETusingExtension/5971AFFD/shThemeFadeToGrey_thumb.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="shThemeFadeToGrey" border="0" alt="shThemeFadeToGrey" src="http://weblogs.asp.net/blogs/rudysetyo/shThemeFadeToGrey_44CFB918.jpg" width="605" height="87" /&gt;&lt;/a&gt; 

&lt;br /&gt;

&lt;br /&gt;shThemeMidnight 

&lt;br /&gt;&lt;a href="http://rudysetyo.it/image.axd?picture=WindowsLiveWriter/ChangeableSyntaxHighli.NETusingExtension/5878FE79/shThemeMidnight_thumb.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="shThemeMidnight" border="0" alt="shThemeMidnight" src="http://weblogs.asp.net/blogs/rudysetyo/shThemeMidnight_6980D08F.jpg" width="604" height="87" /&gt;&lt;/a&gt; 

&lt;br /&gt;

&lt;br /&gt;shThemeRDark 

&lt;br /&gt;&lt;a href="http://weblogs.asp.net/blogs/rudysetyo/shThemeRDark_1C042E02.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="shThemeRDark" border="0" alt="shThemeRDark" src="http://weblogs.asp.net/blogs/rudysetyo/shThemeRDark_thumb_79CC227B.jpg" width="603" height="84" /&gt;&lt;/a&gt; 

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;You could find the full code &lt;a href="http://rudysetyo.it/file/SyntaxHighlighter.zip" target="_blank"&gt;here&lt;/a&gt;, put the SyntaxHighlighter.cs at App_Code/Extensions folder.&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7167125" width="1" height="1"&gt;</content><author><name>rudysetyo</name><uri>http://weblogs.asp.net/members/rudysetyo.aspx</uri></author></entry><entry><title>ASP.NET Membership and Role Provider using Oracle database part 1</title><link rel="alternate" type="text/html" href="http://weblogs.asp.net/rudysetyo/archive/2008/11/20/asp-net-membership-and-role-provider-using-oracle-database-part-1.aspx" /><id>http://weblogs.asp.net/rudysetyo/archive/2008/11/20/asp-net-membership-and-role-provider-using-oracle-database-part-1.aspx</id><published>2008-11-19T23:07:13Z</published><updated>2008-11-19T23:07:13Z</updated><content type="html">&lt;p&gt;We all know that in ASP.NET 2.0 there are Built-In Providers to help developers to build a robust application.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Membership &lt;/li&gt;    &lt;li&gt;Role management &lt;/li&gt;    &lt;li&gt;Site map &lt;/li&gt;    &lt;li&gt;Profile &lt;/li&gt;    &lt;li&gt;Session state &lt;/li&gt;    &lt;li&gt;Web events &lt;/li&gt;    &lt;li&gt;Web Parts personalization &lt;/li&gt;    &lt;li&gt;Protected configuration      &lt;br /&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;What i want to write here is about Membership Provider and Role Provider, &lt;/p&gt;  &lt;p&gt;Membership    &lt;br /&gt;System.Web.Security.ActiveDirectoryMembershipProvider     &lt;br /&gt;System.Web.Security.SqlMembershipProvider &lt;/p&gt;  &lt;p&gt;Role management    &lt;br /&gt;System.Web.Security.AuthorizationStoreRoleProvider     &lt;br /&gt;System.Web.Security.SqlRoleProvider     &lt;br /&gt;System.Web.Security.WindowsTokenRoleProvider&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;OK, how about developer with Oracle database in their hand? Off course ASP.NET have their API for that, for example Membership Provider, according to &lt;a title="http://msdn.microsoft.com/en-us/library/system.web.security.sqlmembershipprovider.aspx" href="http://msdn.microsoft.com/en-us/library/system.web.security.sqlmembershipprovider.aspx"&gt;http://msdn.microsoft.com/en-us/library/system.web.security.sqlmembershipprovider.aspx&lt;/a&gt; the Inheritance Hierarchy from System.Web.Security.SqlMembershipProvider is:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;System.Object      &lt;br /&gt;&amp;#160; System.Configuration.Provider.ProviderBase       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; System.Web.Security.MembershipProvider       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; System.Web.Security.SqlMembershipProvider&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;From that information, we have enough material to build our Membership Provider, let say Erudeye.Web.Security.OracleMembershipProvider, the Inheritance Hierarchy maybe look like this: &lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;System.Object      &lt;br /&gt;&amp;#160; System.Configuration.Provider.ProviderBase       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; System.Web.Security.MembershipProvider       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Erudeye.Web.Security.OracleMembershipProvider&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Done, we have a vision for the Provider, how about persistent data? Again, we &amp;quot;copy&amp;quot; SQL Server Provider schema structure from SqlMembershipProvider. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/rudysetyo/WindowsLiveWriter/ASP.NETMembershipandRoleProviderusingOra_EDDB/aspnetProviderSchema_2.gif"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="786" alt="aspnetProviderSchema" src="http://weblogs.asp.net/blogs/rudysetyo/WindowsLiveWriter/ASP.NETMembershipandRoleProviderusingOra_EDDB/aspnetProviderSchema_thumb.gif" width="872" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;The table above is specific to each Provider, some table are use by Membership and Role Provider. When we want to &amp;quot;copy&amp;quot; the database schema, bringing that picture only is not enough, we need to know exactly what information behind that, like data type, constraint and so on. The complete query from schema above could be found on C:\Windows\Microsoft.NET\Framework\v2.0.50727 with the .sql filetype. From that query, we could make our own Oracle schema, example for aspnet_Users table in Oracle way: &lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/rudysetyo/WindowsLiveWriter/ASP.NETMembershipandRoleProviderusingOra_EDDB/ora_aspnet_users_2.jpg"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="312" alt="ora_aspnet_users" src="http://weblogs.asp.net/blogs/rudysetyo/WindowsLiveWriter/ASP.NETMembershipandRoleProviderusingOra_EDDB/ora_aspnet_users_thumb.jpg" width="719" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;We already have the vision about Provider and the Persistent data is ready, what next on part 2? Build an Oracle Provider and Provider Helper for Oracle.&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=6746944" width="1" height="1"&gt;</content><author><name>rudysetyo</name><uri>http://weblogs.asp.net/members/rudysetyo.aspx</uri></author></entry><entry><title>a "netTiers like" LINQ to SQL application</title><link rel="alternate" type="text/html" href="http://weblogs.asp.net/rudysetyo/archive/2008/02/05/a-quot-nettiers-like-quot-linq-to-sql-application.aspx" /><id>http://weblogs.asp.net/rudysetyo/archive/2008/02/05/a-quot-nettiers-like-quot-linq-to-sql-application.aspx</id><published>2008-02-05T05:25:00Z</published><updated>2008-02-05T05:25:00Z</updated><content type="html">&lt;div style="text-align: center;"&gt;
&lt;img src="http://rudysetyo.it/pics/BannerVS2008.jpg" alt="VS2008"&gt;&lt;/div&gt;
&lt;p&gt;
Some of us maybe familiar with netTiers when building an application, it's really helping us to cut the development time, LINQ does cut the time also... No, i don't want to compare between netTiers and LINQ to SQL, although in some cases they're comparable... What i want to share here is how to make a simple data visualization using gridview, really simple coz we will use LINQ to accomodate the simpleness... What "simple" i'm talking about? commonly when we build a CRUD application, we use ADO.NET or DAAB to access the database, but in this case, ADO.NET was handled by LINQ.
&lt;/p&gt;

&lt;p&gt;
&lt;img src="http://rudysetyo.it/image.axd?picture=search.jpg" mce_src="http://rudysetyo.it/image.axd?picture=search.jpg" alt=""&gt;&lt;br&gt;
&lt;br&gt;
Familiar with the search control above? if you are new to that control, that is GridViewSearchPanel of netTiers. But what i'll show you is we'll create our own search to GridView exactly the same function as netTiers have.
&lt;/p&gt;

&lt;p&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;form id="form1" runat="server"&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;div&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Look for : &lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;asp:DropDownList ID="DropDownList1" runat="server"&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;asp:ListItem&amp;gt;Code&amp;lt;/asp:ListItem&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;asp:ListItem&amp;gt;Description&amp;lt;/asp:ListItem&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/asp:DropDownList&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Which :&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;asp:DropDownList ID="DropDownList2" runat="server"&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;asp:ListItem Value="0"&amp;gt;Contains&amp;lt;/asp:ListItem&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;asp:ListItem Value="1"&amp;gt;Ends With&amp;lt;/asp:ListItem&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;asp:ListItem Value="2"&amp;gt;Starts With&amp;lt;/asp:ListItem&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/asp:DropDownList&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;asp:TextBox ID="TextBox1" runat="server"&amp;gt;&amp;lt;/asp:TextBox&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;asp:Button ID="Button1"&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; runat="server" Text="Search" onclick="Button1_Click" /&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;asp:Button ID="Button2"&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; runat="server" Text="Reset" onclick="Button2_Click" /&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;p&amp;gt;&amp;lt;/p&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="true"&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/asp:GridView&amp;gt;&amp;lt;/div&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/form&amp;gt;
&lt;/p&gt;

&lt;p&gt;
1. Add an aspx page right exactly the same as above.&amp;nbsp;
&lt;/p&gt;

&lt;p&gt;
2. Add LINQ to SQL (.dbml), disobey what behind the dbml right now, we talk about it later, here is my dbml: &amp;nbsp;
&lt;/p&gt;

&lt;p&gt;
&amp;nbsp;&lt;img src="http://rudysetyo.it/image.axd?picture=dbml.jpg" mce_src="http://rudysetyo.it/image.axd?picture=dbml.jpg" alt=""&gt;
&lt;/p&gt;

&lt;p&gt;
3. Go to your code behind, add this code and play it:
&lt;/p&gt;

&lt;p&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; protected void Page_Load(object sender, EventArgs e)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; GridView1.DataSource = GetJobPrefix(0);&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; GridView1.DataBind();&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public IList&amp;lt;JobPrefix&amp;gt; GetJobPrefix(int rowStatus)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; using (JobPrefixDataContext context = new JobPrefixDataContext())&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return (from c in context.JobPrefixes&lt;br&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; where c.RowStatus == rowStatus&lt;br&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; select c).ToList();&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; protected void Button1_Click(object sender, EventArgs e){}&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; protected void Button2_Click(object sender, EventArgs e){}
&lt;/p&gt;

&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;

&lt;p&gt;
In my application, the aspx will render like this, at this point the search facility didn't worked yet.&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;img src="http://rudysetyo.it/image.axd?picture=view1.jpg" mce_src="http://rudysetyo.it/image.axd?picture=view1.jpg" alt=""&gt;&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;

&lt;p&gt;
4. Next we'll create a method for searching and filtering.
&lt;/p&gt;

&lt;p&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public IList&amp;lt;JobPrefix&amp;gt; GetJobPrefix(int rowStatus, string desc, string code, SearchOperator searchOperator)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; using (JobPrefixDataContext context = new JobPrefixDataContext())&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; switch (searchOperator)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;
&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; case SearchOperator.contains:&lt;br&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; return (from c in context.JobPrefixes&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; where c.RowStatus == rowStatus &amp;amp;&amp;amp; c.JobPrefixDesc.Contains(desc) &amp;amp;&amp;amp; c.JobPrefixCode.Contains(code)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; select c).ToList();&lt;br&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; break;&lt;br&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; case SearchOperator.endswith:&lt;br&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; return (from c in context.JobPrefixes&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; where c.RowStatus == rowStatus &amp;amp;&amp;amp; c.JobPrefixDesc.EndsWith(desc) &amp;amp;&amp;amp; c.JobPrefixCode.EndsWith(code)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; select c).ToList();&lt;br&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; break;&lt;br&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; case SearchOperator.startswith:&lt;br&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; return (from c in context.JobPrefixes&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; where c.RowStatus == rowStatus &amp;amp;&amp;amp; c.JobPrefixDesc.StartsWith(desc) &amp;amp;&amp;amp; c.JobPrefixCode.StartsWith(code)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; select c).ToList();&lt;br&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; break;&lt;br&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; default:&lt;br&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; return (from c in context.JobPrefixes&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; where c.RowStatus == rowStatus &amp;amp;&amp;amp; c.JobPrefixDesc.Contains(desc) &amp;amp;&amp;amp; c.JobPrefixCode.Contains(code)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; select c).ToList();&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public enum SearchOperator&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; contains = 0,&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; endswith = 1,&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; startswith = 2,&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; protected void Button1_Click(object sender, EventArgs e)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; switch (DropDownList1.SelectedValue)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; case "Code":&lt;br&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; GridView1.DataSource = GetJobPrefix(0, string.Empty,TextBox1.Text,(SearchOperator)Convert.ToInt32(DropDownList2.SelectedValue));&lt;br&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; GridView1.DataBind();&lt;br&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; break;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; case "Description":&lt;br&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; GridView1.DataSource = GetJobPrefix(0, TextBox1.Text, string.Empty, (SearchOperator)Convert.ToInt32(DropDownList2.SelectedValue));&lt;br&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; GridView1.DataBind();&lt;br&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; break;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; protected void Button2_Click(object sender, EventArgs e)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; GridView1.DataSource = GetJobPrefix(0);&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; GridView1.DataBind();&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&lt;/p&gt;


&lt;p&gt;
Ok, that's it. When i try to filter the data using keyword "in" in the Description(JobPrefixDesc) field with the "Contains" method, the aspx will render like this (you could try the "Ends With" and "Starts With" by yourself)&amp;nbsp;
&lt;/p&gt;

&lt;p&gt;
&amp;nbsp;&lt;img src="http://rudysetyo.it/image.axd?picture=afterSearch.jpg" mce_src="http://rudysetyo.it/image.axd?picture=afterSearch.jpg" alt=""&gt;&amp;nbsp;
&lt;/p&gt;

&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;

&lt;p&gt;
&amp;nbsp;
Really simple isn't it? &lt;img src="http://rudysetyo.it/admin/tiny_mce/plugins/emotions/images/smiley-laughing.gif" mce_src="http://rudysetyo.it/admin/tiny_mce/plugins/emotions/images/smiley-laughing.gif" alt="Laughing" title="Laughing" border="0"&gt; build our own "netTiers like" GridViewSearchPanel using LINQ to SQL. Please enjoy...
&lt;/p&gt;
&lt;a href="http://www.dotnetkicks.com/kick/?url=http%3a%2f%2frudysetyo.it%2fpost%2f2008%2f01%2fa-netTiers-like-LINQ-to-SQL-application.aspx"&gt;&lt;img src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http%3a%2f%2frudysetyo.it%2fpost%2f2008%2f01%2fa-netTiers-like-LINQ-to-SQL-application.aspx&amp;amp;bgcolor=6699FF" alt="kick it on DotNetKicks.com" border="0"&gt;&lt;/a&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=5712560" width="1" height="1"&gt;</content><author><name>rudysetyo</name><uri>http://weblogs.asp.net/members/rudysetyo.aspx</uri></author><category term=".NET" scheme="http://weblogs.asp.net/rudysetyo/archive/tags/.NET/default.aspx" /><category term="SQL Server" scheme="http://weblogs.asp.net/rudysetyo/archive/tags/SQL+Server/default.aspx" /></entry></feed>