<?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:atom="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0"><channel><atom:id>tag:blogger.com,1999:blog-2542912692751492802</atom:id><lastBuildDate>Thu, 16 Feb 2012 22:55:35 +0000</lastBuildDate><category>SmartPhone2003</category><category>DataGrid ASP.NET</category><category>Oracle</category><category>ASP.NET</category><title>SteveBarron.NET</title><description>Strange (but occasionally useful) arrangements of electrons from the mind of Steve Barron</description><link>http://stevebarronnet.blogspot.com/</link><managingEditor>noreply@blogger.com (Steve Barron)</managingEditor><generator>Blogger</generator><openSearch:totalResults>8</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/Stevebarronnet" /><feedburner:info uri="stevebarronnet" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><feedburner:feedFlare href="http://add.my.yahoo.com/rss?url=http%3A%2F%2Ffeeds.feedburner.com%2FStevebarronnet" src="http://us.i1.yimg.com/us.yimg.com/i/us/my/addtomyyahoo4.gif">Subscribe with My Yahoo!</feedburner:feedFlare><feedburner:feedFlare href="http://www.bloglines.com/sub/http://feeds.feedburner.com/Stevebarronnet" src="http://www.bloglines.com/images/sub_modern11.gif">Subscribe with Bloglines</feedburner:feedFlare><feedburner:feedFlare href="http://www.live.com/?add=http%3A%2F%2Ffeeds.feedburner.com%2FStevebarronnet" src="http://tkfiles.storage.msn.com/x1piYkpqHC_35nIp1gLE68-wvzLZO8iXl_JMledmJQXP-XTBOLfmQv4zhj4MhcWEJh_GtoBIiAl1Mjh-ndp9k47If7hTaFno0mxW9_i3p_5qQw">Subscribe with Live.com</feedburner:feedFlare><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2542912692751492802.post-1224515112814852694</guid><pubDate>Thu, 28 Jul 2011 18:21:00 +0000</pubDate><atom:updated>2011-07-28T11:22:00.569-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">ASP.NET</category><title>DataGrid with variable Columns – which survive postback!</title><description>&lt;p&gt;In April, I blogged about adding columns dynamically to a DataGrid.&amp;#160; At the time, I was working on a report, so the dynamic columns didn't have to survive postback.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/-hR6dnW6vIcY/TjGoxXZVMjI/AAAAAAAAAHE/RU7eRV_AeC0/s1600-h/untitled%25255B1%25255D.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="untitled" border="0" alt="untitled" src="http://lh5.ggpht.com/-9vVwFWiS678/TjGoxpv9F9I/AAAAAAAAAHI/ctp85BLoXYc/untitled_thumb%25255B1%25255D.png?imgmax=800" width="597" height="193" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;This week, I needed those columns to survive postback, so here's the updated codez:&lt;/p&gt;  &lt;div class="code"&gt;&lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;&lt;font color="#800000"&gt;asp:DataGrid&lt;/font&gt;&lt;font color="#ff0000"&gt; runat&lt;/font&gt;&lt;font color="#0000ff"&gt;=&amp;quot;server&amp;quot;&lt;/font&gt;&lt;font color="#ff0000"&gt; ID&lt;/font&gt;&lt;font color="#0000ff"&gt;=dgGoodBad&lt;/font&gt;&lt;font color="#ff0000"&gt; Width&lt;/font&gt;&lt;font color="#0000ff"&gt;=97%&lt;/font&gt;&lt;font color="#ff0000"&gt; AutoGenerateColumns&lt;/font&gt;&lt;font color="#0000ff"&gt;=False&lt;/font&gt;&lt;font color="#ff0000"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;font color="#000000"&gt;      &lt;br /&gt;&amp;#160; &lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;&lt;font color="#800000"&gt;HeaderStyle&lt;/font&gt;&lt;font color="#ff0000"&gt; CssClass&lt;/font&gt;&lt;font color="#0000ff"&gt;=Freezing&lt;/font&gt;&lt;font color="#ff0000"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;/&amp;gt;      &lt;br /&gt;&amp;#160; &amp;lt;&lt;/font&gt;&lt;font color="#800000"&gt;AlternatingItemStyle&lt;/font&gt;&lt;font color="#ff0000"&gt; CssClass&lt;/font&gt;&lt;font color="#0000ff"&gt;=gAltRowsDark&lt;/font&gt;&lt;font color="#ff0000"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;/&amp;gt;      &lt;br /&gt;&amp;#160; &amp;lt;&lt;/font&gt;&lt;font color="#800000"&gt;Columns&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;font color="#000000"&gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;&lt;font color="#800000"&gt;asp:BoundColumn&lt;/font&gt;&lt;font color="#ff0000"&gt; DataField&lt;/font&gt;&lt;font color="#0000ff"&gt;=sys_cd_val&lt;/font&gt;&lt;font color="#ff0000"&gt; HeaderText&lt;/font&gt;&lt;font color="#0000ff"&gt;=&amp;quot;ID&amp;quot;/&amp;gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;/font&gt;&lt;font color="#800000"&gt;asp:BoundColumn&lt;/font&gt;&lt;font color="#ff0000"&gt; DataField&lt;/font&gt;&lt;font color="#0000ff"&gt;=sys_cd_desc&lt;/font&gt;&lt;font color="#ff0000"&gt; HeaderText&lt;/font&gt;&lt;font color="#0000ff"&gt;=&amp;quot;Formulary Status&amp;quot;&lt;/font&gt;&lt;font color="#ff0000"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;/&amp;gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;/font&gt;&lt;font color="#800000"&gt;asp:TemplateColumn&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;&lt;font color="#800000"&gt;ItemTemplate&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;&lt;font color="#800000"&gt;asp:Checkbox&lt;/font&gt;&lt;font color="#ff0000"&gt; runat&lt;/font&gt;&lt;font color="#0000ff"&gt;=server&lt;/font&gt;&lt;font color="#ff0000"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;/&amp;gt;&amp;lt;/&lt;/font&gt;&lt;font color="#800000"&gt;ItemTemplate&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;lt;/&lt;/font&gt;&lt;font color="#800000"&gt;asp:TemplateColumn&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;font color="#000000"&gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;&lt;font color="#800000"&gt;asp:TemplateColumn&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;&lt;font color="#800000"&gt;ItemTemplate&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;&lt;font color="#800000"&gt;asp:Checkbox&lt;/font&gt;&lt;font color="#ff0000"&gt; runat&lt;/font&gt;&lt;font color="#0000ff"&gt;=server&lt;/font&gt;&lt;font color="#ff0000"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;/&amp;gt;&amp;lt;/&lt;/font&gt;&lt;font color="#800000"&gt;ItemTemplate&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;lt;/&lt;/font&gt;&lt;font color="#800000"&gt;asp:TemplateColumn&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;font color="#000000"&gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;&lt;font color="#800000"&gt;asp:TemplateColumn&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;&lt;font color="#800000"&gt;ItemTemplate&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;&lt;font color="#800000"&gt;asp:Checkbox&lt;/font&gt;&lt;font color="#ff0000"&gt; runat&lt;/font&gt;&lt;font color="#0000ff"&gt;=server&lt;/font&gt;&lt;font color="#ff0000"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;/&amp;gt;&amp;lt;/&lt;/font&gt;&lt;font color="#800000"&gt;ItemTemplate&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;lt;/&lt;/font&gt;&lt;font color="#800000"&gt;asp:TemplateColumn&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;font color="#000000"&gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;&lt;font color="#800000"&gt;asp:TemplateColumn&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;&lt;font color="#800000"&gt;ItemTemplate&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;&lt;font color="#800000"&gt;asp:Checkbox&lt;/font&gt;&lt;font color="#ff0000"&gt; runat&lt;/font&gt;&lt;font color="#0000ff"&gt;=server&lt;/font&gt;&lt;font color="#ff0000"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;/&amp;gt;&amp;lt;/&lt;/font&gt;&lt;font color="#800000"&gt;ItemTemplate&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;lt;/&lt;/font&gt;&lt;font color="#800000"&gt;asp:TemplateColumn&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;font color="#000000"&gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;&lt;font color="#800000"&gt;asp:TemplateColumn&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;&lt;font color="#800000"&gt;ItemTemplate&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;&lt;font color="#800000"&gt;asp:Checkbox&lt;/font&gt;&lt;font color="#ff0000"&gt; runat&lt;/font&gt;&lt;font color="#0000ff"&gt;=server&lt;/font&gt;&lt;font color="#ff0000"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;/&amp;gt;&amp;lt;/&lt;/font&gt;&lt;font color="#800000"&gt;ItemTemplate&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;lt;/&lt;/font&gt;&lt;font color="#800000"&gt;asp:TemplateColumn&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;font color="#000000"&gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;&lt;font color="#800000"&gt;asp:TemplateColumn&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;&lt;font color="#800000"&gt;ItemTemplate&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;&lt;font color="#800000"&gt;asp:Checkbox&lt;/font&gt;&lt;font color="#ff0000"&gt; runat&lt;/font&gt;&lt;font color="#0000ff"&gt;=server&lt;/font&gt;&lt;font color="#ff0000"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;/&amp;gt;&amp;lt;/&lt;/font&gt;&lt;font color="#800000"&gt;ItemTemplate&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;lt;/&lt;/font&gt;&lt;font color="#800000"&gt;asp:TemplateColumn&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;font color="#000000"&gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;&lt;font color="#800000"&gt;asp:TemplateColumn&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;&lt;font color="#800000"&gt;ItemTemplate&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;&lt;font color="#800000"&gt;asp:Checkbox&lt;/font&gt;&lt;font color="#ff0000"&gt; runat&lt;/font&gt;&lt;font color="#0000ff"&gt;=server&lt;/font&gt;&lt;font color="#ff0000"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;/&amp;gt;&amp;lt;/&lt;/font&gt;&lt;font color="#800000"&gt;ItemTemplate&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;lt;/&lt;/font&gt;&lt;font color="#800000"&gt;asp:TemplateColumn&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;font color="#000000"&gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;&lt;font color="#800000"&gt;asp:TemplateColumn&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;&lt;font color="#800000"&gt;ItemTemplate&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;&lt;font color="#800000"&gt;asp:Checkbox&lt;/font&gt;&lt;font color="#ff0000"&gt; runat&lt;/font&gt;&lt;font color="#0000ff"&gt;=server&lt;/font&gt;&lt;font color="#ff0000"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;/&amp;gt;&amp;lt;/&lt;/font&gt;&lt;font color="#800000"&gt;ItemTemplate&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;lt;/&lt;/font&gt;&lt;font color="#800000"&gt;asp:TemplateColumn&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;font color="#000000"&gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;&lt;font color="#800000"&gt;asp:TemplateColumn&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;&lt;font color="#800000"&gt;ItemTemplate&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;&lt;font color="#800000"&gt;asp:Checkbox&lt;/font&gt;&lt;font color="#ff0000"&gt; runat&lt;/font&gt;&lt;font color="#0000ff"&gt;=server&lt;/font&gt;&lt;font color="#ff0000"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;/&amp;gt;&amp;lt;/&lt;/font&gt;&lt;font color="#800000"&gt;ItemTemplate&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;lt;/&lt;/font&gt;&lt;font color="#800000"&gt;asp:TemplateColumn&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;font color="#000000"&gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;&lt;font color="#800000"&gt;asp:TemplateColumn&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;&lt;font color="#800000"&gt;ItemTemplate&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;&lt;font color="#800000"&gt;asp:Checkbox&lt;/font&gt;&lt;font color="#ff0000"&gt; runat&lt;/font&gt;&lt;font color="#0000ff"&gt;=server&lt;/font&gt;&lt;font color="#ff0000"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;/&amp;gt;&amp;lt;/&lt;/font&gt;&lt;font color="#800000"&gt;ItemTemplate&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;lt;/&lt;/font&gt;&lt;font color="#800000"&gt;asp:TemplateColumn&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;font color="#000000"&gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;&lt;font color="#800000"&gt;asp:TemplateColumn&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;&lt;font color="#800000"&gt;ItemTemplate&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;&lt;font color="#800000"&gt;asp:Checkbox&lt;/font&gt;&lt;font color="#ff0000"&gt; runat&lt;/font&gt;&lt;font color="#0000ff"&gt;=server&lt;/font&gt;&lt;font color="#ff0000"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;/&amp;gt;&amp;lt;/&lt;/font&gt;&lt;font color="#800000"&gt;ItemTemplate&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;lt;/&lt;/font&gt;&lt;font color="#800000"&gt;asp:TemplateColumn&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;font color="#000000"&gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;&lt;font color="#800000"&gt;asp:TemplateColumn&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;&lt;font color="#800000"&gt;ItemTemplate&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;&lt;font color="#800000"&gt;asp:Checkbox&lt;/font&gt;&lt;font color="#ff0000"&gt; runat&lt;/font&gt;&lt;font color="#0000ff"&gt;=server&lt;/font&gt;&lt;font color="#ff0000"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;/&amp;gt;&amp;lt;/&lt;/font&gt;&lt;font color="#800000"&gt;ItemTemplate&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;lt;/&lt;/font&gt;&lt;font color="#800000"&gt;asp:TemplateColumn&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;font color="#000000"&gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;&lt;font color="#800000"&gt;asp:TemplateColumn&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;&lt;font color="#800000"&gt;ItemTemplate&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;&lt;font color="#800000"&gt;asp:Checkbox&lt;/font&gt;&lt;font color="#ff0000"&gt; runat&lt;/font&gt;&lt;font color="#0000ff"&gt;=server&lt;/font&gt;&lt;font color="#ff0000"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;/&amp;gt;&amp;lt;/&lt;/font&gt;&lt;font color="#800000"&gt;ItemTemplate&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;lt;/&lt;/font&gt;&lt;font color="#800000"&gt;asp:TemplateColumn&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;font color="#000000"&gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;&lt;font color="#800000"&gt;asp:TemplateColumn&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;&lt;font color="#800000"&gt;ItemTemplate&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;&lt;font color="#800000"&gt;asp:Checkbox&lt;/font&gt;&lt;font color="#ff0000"&gt; runat&lt;/font&gt;&lt;font color="#0000ff"&gt;=server&lt;/font&gt;&lt;font color="#ff0000"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;/&amp;gt;&amp;lt;/&lt;/font&gt;&lt;font color="#800000"&gt;ItemTemplate&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;lt;/&lt;/font&gt;&lt;font color="#800000"&gt;asp:TemplateColumn&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;font color="#000000"&gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;&lt;font color="#800000"&gt;asp:TemplateColumn&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;&lt;font color="#800000"&gt;ItemTemplate&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;&lt;font color="#800000"&gt;asp:Checkbox&lt;/font&gt;&lt;font color="#ff0000"&gt; runat&lt;/font&gt;&lt;font color="#0000ff"&gt;=server&lt;/font&gt;&lt;font color="#ff0000"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;/&amp;gt;&amp;lt;/&lt;/font&gt;&lt;font color="#800000"&gt;ItemTemplate&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;lt;/&lt;/font&gt;&lt;font color="#800000"&gt;asp:TemplateColumn&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;font color="#000000"&gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;&lt;font color="#800000"&gt;asp:TemplateColumn&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;&lt;font color="#800000"&gt;ItemTemplate&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;&lt;font color="#800000"&gt;asp:Checkbox&lt;/font&gt;&lt;font color="#ff0000"&gt; runat&lt;/font&gt;&lt;font color="#0000ff"&gt;=server&lt;/font&gt;&lt;font color="#ff0000"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;/&amp;gt;&amp;lt;/&lt;/font&gt;&lt;font color="#800000"&gt;ItemTemplate&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;lt;/&lt;/font&gt;&lt;font color="#800000"&gt;asp:TemplateColumn&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;font color="#000000"&gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;&lt;font color="#800000"&gt;asp:TemplateColumn&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;&lt;font color="#800000"&gt;ItemTemplate&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;&lt;font color="#800000"&gt;asp:Checkbox&lt;/font&gt;&lt;font color="#ff0000"&gt; runat&lt;/font&gt;&lt;font color="#0000ff"&gt;=server&lt;/font&gt;&lt;font color="#ff0000"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;/&amp;gt;&amp;lt;/&lt;/font&gt;&lt;font color="#800000"&gt;ItemTemplate&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;lt;/&lt;/font&gt;&lt;font color="#800000"&gt;asp:TemplateColumn&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;font color="#000000"&gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;&lt;font color="#800000"&gt;asp:TemplateColumn&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;&lt;font color="#800000"&gt;ItemTemplate&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;&lt;font color="#800000"&gt;asp:Checkbox&lt;/font&gt;&lt;font color="#ff0000"&gt; runat&lt;/font&gt;&lt;font color="#0000ff"&gt;=server&lt;/font&gt;&lt;font color="#ff0000"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;/&amp;gt;&amp;lt;/&lt;/font&gt;&lt;font color="#800000"&gt;ItemTemplate&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;lt;/&lt;/font&gt;&lt;font color="#800000"&gt;asp:TemplateColumn&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;font color="#000000"&gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;&lt;font color="#800000"&gt;asp:TemplateColumn&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;&lt;font color="#800000"&gt;ItemTemplate&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;&lt;font color="#800000"&gt;asp:Checkbox&lt;/font&gt;&lt;font color="#ff0000"&gt; runat&lt;/font&gt;&lt;font color="#0000ff"&gt;=server&lt;/font&gt;&lt;font color="#ff0000"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;/&amp;gt;&amp;lt;/&lt;/font&gt;&lt;font color="#800000"&gt;ItemTemplate&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;lt;/&lt;/font&gt;&lt;font color="#800000"&gt;asp:TemplateColumn&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;font color="#000000"&gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;&lt;font color="#800000"&gt;asp:TemplateColumn&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;&lt;font color="#800000"&gt;ItemTemplate&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;&lt;font color="#800000"&gt;asp:Checkbox&lt;/font&gt;&lt;font color="#ff0000"&gt; runat&lt;/font&gt;&lt;font color="#0000ff"&gt;=server&lt;/font&gt;&lt;font color="#ff0000"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;/&amp;gt;&amp;lt;/&lt;/font&gt;&lt;font color="#800000"&gt;ItemTemplate&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;lt;/&lt;/font&gt;&lt;font color="#800000"&gt;asp:TemplateColumn&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;font color="#000000"&gt;      &lt;br /&gt;&amp;#160; &lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;lt;/&lt;/font&gt;&lt;font color="#800000"&gt;Columns&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;font color="#000000"&gt;      &lt;br /&gt;&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;lt;/&lt;/font&gt;&lt;font color="#800000"&gt;asp:DataGrid&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;/font&gt; &lt;/div&gt;  &lt;div class="code"&gt;I included more template columns than are ever going to really appear in the data.&amp;#160; If you need different items in each TemplateColumn, you’d probably have to include all of the possible items in each column then show/hide them in ItemDataBound.&lt;/div&gt;  &lt;div class="code"&gt;Here’s the Code Behind:&lt;/div&gt;  &lt;div class="code"&gt;&lt;font color="#000000"&gt;Partial&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;Class&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;GoodBad&lt;/font&gt;&lt;font color="#808080"&gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#0000ff"&gt;Inherits&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;System.Web.UI.&lt;/font&gt;&lt;font color="#2b91af"&gt;Page&lt;/font&gt;&lt;font color="#808080"&gt;      &lt;br /&gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#0000ff"&gt;Protected&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;Sub&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;Page_Load(&lt;/font&gt;&lt;font color="#0000ff"&gt;ByVal&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;sender&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;As&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;Object&lt;/font&gt;&lt;font color="#000000"&gt;,&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;ByVal&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;e&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;As&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;System.&lt;/font&gt;&lt;font color="#2b91af"&gt;EventArgs&lt;/font&gt;&lt;font color="#000000"&gt;)&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;Handles&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;Me&lt;/font&gt;&lt;font color="#000000"&gt;.Load&lt;/font&gt;&lt;font color="#808080"&gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#0000ff"&gt;If&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;Not&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#2b91af"&gt;Page&lt;/font&gt;&lt;font color="#000000"&gt;.IsPostBack&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;Then&lt;/font&gt;&lt;font color="#808080"&gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#000000"&gt;BindGrid()&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#808080"&gt;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#0000ff"&gt;End&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;If&lt;/font&gt;&lt;font color="#808080"&gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#0000ff"&gt;Dim&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;csType&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;As&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;Type&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;Me&lt;/font&gt;&lt;font color="#000000"&gt;.[&lt;/font&gt;&lt;font color="#0000ff"&gt;GetType&lt;/font&gt;&lt;font color="#000000"&gt;]()&lt;/font&gt;&lt;font color="#808080"&gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#000000"&gt;ClientScript.RegisterClientScriptBlock(csType,&lt;/font&gt;&lt;font color="#808080"&gt; &amp;quot;checkboxes&amp;quot;&lt;/font&gt;&lt;font color="#000000"&gt;,&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;_&lt;/font&gt;&lt;font color="#808080"&gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;quot;&amp;lt;script language=javascript&amp;gt;&amp;quot; &lt;/font&gt;&lt;font color="#000000"&gt;&amp;amp;&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;_&lt;/font&gt;&lt;font color="#808080"&gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;quot; function check(ctl) {if(ctl.checked){ctl.style.background = '';updateCount(-1);} else {ctl.style.background = '#FF0000';updateCount(1);};}; &amp;quot; &lt;/font&gt;&lt;font color="#000000"&gt;&amp;amp;&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;_&lt;/font&gt;&lt;font color="#808080"&gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;quot; function uncheck(ctl) { if (ctl.checked) { ctl.style.background = '#00FF00'; updateCount(1); } else { ctl.style.background = ''; updateCount(-1);};}; &amp;quot; &lt;/font&gt;&lt;font color="#000000"&gt;&amp;amp;&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;_&lt;/font&gt;&lt;font color="#808080"&gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;quot; function updateCount(iVal) { btn = document.getElementById('&amp;quot; &lt;/font&gt;&lt;font color="#000000"&gt;&amp;amp;&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;btnSave.ClientID&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;amp;&lt;/font&gt;&lt;font color="#808080"&gt; &amp;quot;'); iCurr = parseInt(btn.value.replace(' Changes','').replace('Save ','').replace(' Change','')); iCurr = iCurr + parseInt(iVal); if (iCurr &amp;gt; 0) {btn.style.display='';if (iCurr == 1) {btn.value='Save 1 Change';} else {btn.value='Save ' + iCurr + ' Changes';}} else {btn.style.display='none';btn.value='0';};};&amp;quot; &lt;/font&gt;&lt;font color="#000000"&gt;&amp;amp;&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;_&lt;/font&gt;&lt;font color="#808080"&gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;quot;&amp;lt;/script&amp;gt;&amp;quot;&lt;/font&gt;&lt;font color="#000000"&gt;)&lt;/font&gt;&lt;font color="#808080"&gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#0000ff"&gt;End&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;Sub&lt;/font&gt;&lt;font color="#808080"&gt;      &lt;br /&gt;      &lt;br /&gt;&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#0000ff"&gt;Private&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;Sub&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;BindGrid(&lt;/font&gt;&lt;font color="#0000ff"&gt;Optional&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;ByVal&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;cn&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;As&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#2b91af"&gt;OleDbConnection&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;Nothing)&lt;/font&gt;&lt;font color="#808080"&gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#0000ff"&gt;Dim&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;sSQL&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;As&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;String&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;font color="#808080"&gt; &amp;quot;&amp;quot;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#0000ff"&gt;Dim&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;iCol&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;As&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;Integer&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#800000"&gt;2&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#0000ff"&gt;For&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;Each&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;prod&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;In&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;Common.GetDataTable(&lt;/font&gt;&lt;font color="#808080"&gt;&amp;quot;select * from mkt_prod_xrf where mkt_id=&amp;quot; &lt;/font&gt;&lt;font color="#000000"&gt;&amp;amp;&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;ddlMarket.SelectedValue&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;amp;&lt;/font&gt;&lt;font color="#808080"&gt; &amp;quot; order by prod_desc asc&amp;quot;&lt;/font&gt;&lt;font color="#000000"&gt;,&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;cn).Rows&lt;/font&gt;&lt;font color="#808080"&gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#000000"&gt;dgGoodBad.Columns(iCol).Visible&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;True&lt;/font&gt;&lt;font color="#808080"&gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#000000"&gt;dgGoodBad.Columns(iCol).HeaderText&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;prod(&lt;/font&gt;&lt;font color="#808080"&gt;&amp;quot;prod_desc&amp;quot;&lt;/font&gt;&lt;font color="#000000"&gt;).ToString&lt;/font&gt;&lt;font color="#808080"&gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#000000"&gt;dgGoodBad.Columns(iCol).HeaderStyle.BackColor&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;Drawing.ColorTranslator.FromHtml(prod(&lt;/font&gt;&lt;font color="#808080"&gt;&amp;quot;dsly_clr&amp;quot;&lt;/font&gt;&lt;font color="#000000"&gt;).ToString)&lt;/font&gt;&lt;font color="#808080"&gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#000000"&gt;dgGoodBad.Columns(iCol).ItemStyle.BackColor&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;Drawing.ColorTranslator.FromHtml(prod(&lt;/font&gt;&lt;font color="#808080"&gt;&amp;quot;dsly_clr&amp;quot;&lt;/font&gt;&lt;font color="#000000"&gt;).ToString)&lt;/font&gt;&lt;font color="#808080"&gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#000000"&gt;sSQL&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;amp;&lt;/font&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;font color="#808080"&gt; &amp;quot;, (SELECT yes_no_val FROM fact_table WHERE &lt;/font&gt;&lt;font color="#808080"&gt;sys_cd_val=c.sys_cd_val AND prodgrp_id=&amp;quot; &lt;/font&gt;&lt;font color="#000000"&gt;&amp;amp;&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;prod(&lt;/font&gt;&lt;font color="#808080"&gt;&amp;quot;prod_id&amp;quot;&lt;/font&gt;&lt;font color="#000000"&gt;).ToString&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;amp;&lt;/font&gt;&lt;font color="#808080"&gt; &amp;quot;) v_&amp;quot; &lt;/font&gt;&lt;font color="#000000"&gt;&amp;amp;&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;prod(&lt;/font&gt;&lt;font color="#808080"&gt;&amp;quot;prod_id&amp;quot;&lt;/font&gt;&lt;font color="#000000"&gt;).ToString&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;amp;&lt;/font&gt;&lt;font color="#808080"&gt; &amp;quot; &amp;quot;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#000000"&gt;iCol&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;+&lt;/font&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#800000"&gt;1&lt;/font&gt;&lt;font color="#808080"&gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#0000ff"&gt;Next&lt;/font&gt;&lt;font color="#808080"&gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#0000ff"&gt;For&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;iCol&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;iCol&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;To&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;dgGoodBad.Columns.Count&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;-&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#800000"&gt;1&lt;/font&gt;&lt;font color="#808080"&gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#000000"&gt;dgGoodBad.Columns(iCol).Visible&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;False&lt;/font&gt;&lt;font color="#808080"&gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#0000ff"&gt;Next&lt;/font&gt;&lt;font color="#808080"&gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#000000"&gt;Common.BindToReader(&lt;/font&gt;&lt;font color="#808080"&gt;&amp;quot;SELECT dim_id, dim_desc &amp;quot; &lt;/font&gt;&lt;font color="#000000"&gt;&amp;amp;&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;sSQL&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;amp;&lt;/font&gt;&lt;font color="#808080"&gt; &amp;quot; FROM dimension_lkp c ORDER BY dim_desc&amp;quot;&lt;/font&gt;&lt;font color="#000000"&gt;,&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;dgGoodBad&lt;/font&gt;&lt;font color="#000000"&gt;)&lt;/font&gt;&lt;font color="#808080"&gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#0000ff"&gt;If&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;bDispose&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;Then&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;cn.Dispose()&lt;/font&gt;&lt;font color="#808080"&gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#000000"&gt;btnSave.Style(&lt;/font&gt;&lt;font color="#808080"&gt;&amp;quot;display&amp;quot;&lt;/font&gt;&lt;font color="#000000"&gt;)&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;font color="#808080"&gt; &amp;quot;none&amp;quot;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#000000"&gt;btnSave.Text&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;font color="#808080"&gt; &amp;quot;0&amp;quot;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#0000ff"&gt;End&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;Sub&lt;/font&gt;&lt;font color="#808080"&gt;      &lt;br /&gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#0000ff"&gt;Protected&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;Sub&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;dgGoodBad_ItemDataBound(&lt;/font&gt;&lt;font color="#0000ff"&gt;ByVal&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;sender&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;As&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;Object&lt;/font&gt;&lt;font color="#000000"&gt;,&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;ByVal&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;e&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;As&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;System.Web.UI.WebControls.DataGridItemEventArgs)&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;Handles&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;dgGoodBad.ItemDataBound&lt;/font&gt;&lt;font color="#808080"&gt;      &lt;br /&gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#0000ff"&gt;Select&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;e.Item.ItemType&lt;/font&gt;&lt;font color="#808080"&gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#0000ff"&gt;Case&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;ListItemType.Header&lt;/font&gt;&lt;font color="#808080"&gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#0000ff"&gt;Dim&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;sMarkets&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;As&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;String&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;font color="#808080"&gt; &amp;quot;&amp;quot;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#0000ff"&gt;Dim&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;dtOtherMarkets&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;As&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;New&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#2b91af"&gt;DataView&lt;/font&gt;&lt;font color="#000000"&gt;(Common.GetDataTable(&lt;/font&gt;&lt;font color="#808080"&gt;&amp;quot;SELECT m.mkt_desc, mp.prodgrp_desc FROM mkt_lkp m, mkt_prod_xrf mp WHERE m.mkt_id=mp.mkt_id AND m.mkt_id != &amp;quot; &lt;/font&gt;&lt;font color="#000000"&gt;&amp;amp;&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;ddlMarket.SelectedValue),&lt;/font&gt;&lt;font color="#808080"&gt; &amp;quot;&amp;quot;&lt;/font&gt;&lt;font color="#000000"&gt;,&lt;/font&gt;&lt;font color="#808080"&gt; &amp;quot;mkt_desc&amp;quot;&lt;/font&gt;&lt;font color="#000000"&gt;,&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;DataViewRowState.CurrentRows)&lt;/font&gt;&lt;font color="#808080"&gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#0000ff"&gt;For&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;i&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;As&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;Integer&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#800000"&gt;2&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;To&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;dgGoodBad.Columns.Count&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;-&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#800000"&gt;1&lt;/font&gt;&lt;font color="#808080"&gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#0000ff"&gt;If&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;dgGoodBad.Columns(i).Visible&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;Then&lt;/font&gt;&lt;font color="#808080"&gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#000000"&gt;sMarkets&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;font color="#808080"&gt; &amp;quot;&amp;quot;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#000000"&gt;dtOtherMarkets.RowFilter&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;font color="#808080"&gt; &amp;quot;prod_desc=&amp;quot; &lt;/font&gt;&lt;font color="#000000"&gt;&amp;amp;&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;Common.DBString(dgGoodBad.Columns(i).HeaderText)&lt;/font&gt;&lt;font color="#808080"&gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#0000ff"&gt;If&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;dtOtherMarkets.Count&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;gt;&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#800000"&gt;0&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;Then&lt;/font&gt;&lt;font color="#808080"&gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#0000ff"&gt;For&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;iMkt&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;As&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;Integer&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#800000"&gt;0&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;To&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;dtOtherMarkets.Count&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;-&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#800000"&gt;1&lt;/font&gt;&lt;font color="#808080"&gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#000000"&gt;sMarkets&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;amp;&lt;/font&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;dtOtherMarkets(iMkt)(&lt;/font&gt;&lt;font color="#808080"&gt;&amp;quot;mkt_desc&amp;quot;&lt;/font&gt;&lt;font color="#000000"&gt;).ToString&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;amp;&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;vbCrLf&lt;/font&gt;&lt;font color="#808080"&gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#0000ff"&gt;Next&lt;/font&gt;&lt;font color="#808080"&gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#0000ff"&gt;End&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;If&lt;/font&gt;&lt;font color="#808080"&gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#0000ff"&gt;If&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;sMarkets&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;gt;&lt;/font&gt;&lt;font color="#808080"&gt; &amp;quot;&amp;quot; &lt;/font&gt;&lt;font color="#0000ff"&gt;Then&lt;/font&gt;&lt;font color="#808080"&gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#000000"&gt;e.Item.Cells(i).ForeColor&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;Drawing.Color.Red&lt;/font&gt;&lt;font color="#808080"&gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#000000"&gt;e.Item.Cells(i).ToolTip&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;sMarkets&lt;/font&gt;&lt;font color="#808080"&gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#0000ff"&gt;End&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;If&lt;/font&gt;&lt;font color="#808080"&gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#0000ff"&gt;Else&lt;/font&gt;&lt;font color="#808080"&gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#0000ff"&gt;Exit&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;For&lt;/font&gt;&lt;font color="#808080"&gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#0000ff"&gt;End&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;If&lt;/font&gt;&lt;font color="#808080"&gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#0000ff"&gt;Next&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#0000ff"&gt;Case&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;ListItemType.Item,&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;ListItemType.AlternatingItem&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#0000ff"&gt;For&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;i&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;As&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;Integer&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#800000"&gt;2&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;To&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;dgGoodBad.Columns.Count&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;-&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#800000"&gt;1&lt;/font&gt;&lt;font color="#808080"&gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#0000ff"&gt;If&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;dgGoodBad.Columns(i).Visible&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;Then&lt;/font&gt;&lt;font color="#808080"&gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#0000ff"&gt;If&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;e.Item.DataItem(i).ToString&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;font color="#808080"&gt; &amp;quot;G&amp;quot; &lt;/font&gt;&lt;font color="#0000ff"&gt;Then&lt;/font&gt;&lt;font color="#808080"&gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#000000"&gt;DirectCast(e.Item.Cells(i).Controls(&lt;/font&gt;&lt;font color="#800000"&gt;0&lt;/font&gt;&lt;font color="#000000"&gt;),&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#2b91af"&gt;CheckBox&lt;/font&gt;&lt;font color="#000000"&gt;).Checked&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;True&lt;/font&gt;&lt;font color="#808080"&gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#000000"&gt;DirectCast(e.Item.Cells(i).Controls(&lt;/font&gt;&lt;font color="#800000"&gt;0&lt;/font&gt;&lt;font color="#000000"&gt;),&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#2b91af"&gt;CheckBox&lt;/font&gt;&lt;font color="#000000"&gt;).Attributes.Add(&lt;/font&gt;&lt;font color="#808080"&gt;&amp;quot;onclick&amp;quot;&lt;/font&gt;&lt;font color="#000000"&gt;,&lt;/font&gt;&lt;font color="#808080"&gt; &amp;quot;document.getElementById('&amp;quot; &lt;/font&gt;&lt;font color="#000000"&gt;&amp;amp;&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;hidDirty.ClientID&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;amp;&lt;/font&gt;&lt;font color="#808080"&gt; &amp;quot;').value += '/&amp;quot; &lt;/font&gt;&lt;font color="#000000"&gt;&amp;amp;&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;e.Item.DataItem(&lt;/font&gt;&lt;font color="#808080"&gt;&amp;quot;sys_cd_val&amp;quot;&lt;/font&gt;&lt;font color="#000000"&gt;)&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;amp;&lt;/font&gt;&lt;font color="#808080"&gt; &amp;quot;/';check(this);&amp;quot;&lt;/font&gt;&lt;font color="#000000"&gt;)&lt;/font&gt;&lt;font color="#808080"&gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#0000ff"&gt;Else&lt;/font&gt;&lt;font color="#808080"&gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#000000"&gt;DirectCast(e.Item.Cells(i).Controls(&lt;/font&gt;&lt;font color="#800000"&gt;0&lt;/font&gt;&lt;font color="#000000"&gt;),&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#2b91af"&gt;CheckBox&lt;/font&gt;&lt;font color="#000000"&gt;).Attributes.Add(&lt;/font&gt;&lt;font color="#808080"&gt;&amp;quot;onclick&amp;quot;&lt;/font&gt;&lt;font color="#000000"&gt;,&lt;/font&gt;&lt;font color="#808080"&gt; &amp;quot;document.getElementById('&amp;quot; &lt;/font&gt;&lt;font color="#000000"&gt;&amp;amp;&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;hidDirty.ClientID&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;amp;&lt;/font&gt;&lt;font color="#808080"&gt; &amp;quot;').value += '/&amp;quot; &lt;/font&gt;&lt;font color="#000000"&gt;&amp;amp;&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;e.Item.DataItem(&lt;/font&gt;&lt;font color="#808080"&gt;&amp;quot;sys_cd_val&amp;quot;&lt;/font&gt;&lt;font color="#000000"&gt;)&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;amp;&lt;/font&gt;&lt;font color="#808080"&gt; &amp;quot;/';uncheck(this);&amp;quot;&lt;/font&gt;&lt;font color="#000000"&gt;)&lt;/font&gt;&lt;font color="#808080"&gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#0000ff"&gt;End&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;If&lt;/font&gt;&lt;font color="#808080"&gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#0000ff"&gt;Else&lt;/font&gt;&lt;font color="#808080"&gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#0000ff"&gt;Exit&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;For&lt;/font&gt;&lt;font color="#808080"&gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#0000ff"&gt;End&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;If&lt;/font&gt;&lt;font color="#808080"&gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#0000ff"&gt;Next&lt;/font&gt;&lt;font color="#808080"&gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#0000ff"&gt;End&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;Select&lt;/font&gt;&lt;font color="#808080"&gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#0000ff"&gt;End&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;Sub&lt;/font&gt;&lt;font color="#808080"&gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#0000ff"&gt;Protected&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;Sub&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;btnSave_Click(&lt;/font&gt;&lt;font color="#0000ff"&gt;ByVal&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;sender&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;As&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;Object&lt;/font&gt;&lt;font color="#000000"&gt;,&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;ByVal&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;e&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;As&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;System.&lt;/font&gt;&lt;font color="#2b91af"&gt;EventArgs&lt;/font&gt;&lt;font color="#000000"&gt;)&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;Handles&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;btnSave.Click&lt;/font&gt;&lt;font color="#808080"&gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#0000ff"&gt;Dim&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;sSQL&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;As&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;String&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;font color="#808080"&gt; &amp;quot;UPDATE fact_table SET yes_no_val='[value]' &amp;quot; &lt;/font&gt;&lt;font color="#000000"&gt;&amp;amp;&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;_&lt;/font&gt;&lt;font color="#808080"&gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;quot; WHERE &lt;/font&gt;&lt;font color="#808080"&gt;prod_id=[prod_id] &amp;quot; &lt;/font&gt;&lt;font color="#000000"&gt;&amp;amp;&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;_&lt;/font&gt;&lt;font color="#808080"&gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;quot;&amp;#160;&amp;#160; AND dim_id=[dim_id] &amp;quot;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#0000ff"&gt;Dim&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;cn&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;As&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#2b91af"&gt;OleDbConnection&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;Nothing&lt;/font&gt;&lt;font color="#808080"&gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#0000ff"&gt;Dim&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;dvOld&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;As&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;New&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#2b91af"&gt;DataView&lt;/font&gt;&lt;font color="#000000"&gt;(Common.GetDataTable(&lt;/font&gt;&lt;font color="#808080"&gt;&amp;quot;SELECT f.*, p.prod_desc FROM fact_tbl f, mkt_prod_xrf p WHERE &lt;/font&gt;&lt;font color="#808080"&gt;f.prod_id=p.prod_id&amp;quot;&lt;/font&gt;&lt;font color="#000000"&gt;,&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;cn),&lt;/font&gt;&lt;font color="#808080"&gt; &amp;quot;&amp;quot;&lt;/font&gt;&lt;font color="#000000"&gt;,&lt;/font&gt;&lt;font color="#808080"&gt; &amp;quot;&amp;quot;&lt;/font&gt;&lt;font color="#000000"&gt;,&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;DataViewRowState.CurrentRows)&lt;/font&gt;&lt;font color="#808080"&gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#0000ff"&gt;Dim&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;sHolder&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;As&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;String&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;font color="#808080"&gt; &amp;quot;begin&amp;quot; &lt;/font&gt;&lt;font color="#000000"&gt;&amp;amp;&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;vbCrLf&lt;/font&gt;&lt;font color="#808080"&gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#0000ff"&gt;Dim&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;val&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;As&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;String&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;font color="#808080"&gt; &amp;quot;&amp;quot;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#000000"&gt;Common.MaybeOpenConnection(cn)&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#0000ff"&gt;For&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;Each&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;itm&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;As&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;DataGridItem&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;In&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;dgGoodBad.Items&lt;/font&gt;&lt;font color="#808080"&gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#0000ff"&gt;If&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;itm.ItemType&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;ListItemType.Item&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;Or&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;ListItemType.AlternatingItem&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;Then&lt;/font&gt;&lt;font color="#808080"&gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#0000ff"&gt;If&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;InStr&lt;/font&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;font color="#808080"&gt;&amp;quot; &amp;quot; &lt;/font&gt;&lt;font color="#000000"&gt;&amp;amp;&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;hidDirty.Value,&lt;/font&gt;&lt;font color="#808080"&gt; &amp;quot;/&amp;quot; &lt;/font&gt;&lt;font color="#000000"&gt;&amp;amp;&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;itm.Cells(&lt;/font&gt;&lt;font color="#800000"&gt;0&lt;/font&gt;&lt;font color="#000000"&gt;).Text&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;amp;&lt;/font&gt;&lt;font color="#808080"&gt; &amp;quot;/&amp;quot;&lt;/font&gt;&lt;font color="#000000"&gt;)&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;gt;&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#800000"&gt;0&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;Then&lt;/font&gt;&lt;font color="#808080"&gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#0000ff"&gt;For&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;iCol&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;As&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;Integer&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#800000"&gt;2&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;To&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;dgGoodBad.Columns.Count&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;-&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#800000"&gt;1&lt;/font&gt;&lt;font color="#808080"&gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#0000ff"&gt;If&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;dgGoodBad.Columns(iCol).Visible&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;Then&lt;/font&gt;&lt;font color="#808080"&gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#000000"&gt;dvOld.RowFilter&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;font color="#808080"&gt; &amp;quot;prod_desc=&amp;quot; &lt;/font&gt;&lt;font color="#000000"&gt;&amp;amp;&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;Common.DBString(dgGoodBad.Columns(iCol).HeaderText)&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;amp;&lt;/font&gt;&lt;font color="#808080"&gt; &amp;quot; AND dim_id=&amp;quot; &lt;/font&gt;&lt;font color="#000000"&gt;&amp;amp;&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;itm.Cells(&lt;/font&gt;&lt;font color="#800000"&gt;0&lt;/font&gt;&lt;font color="#000000"&gt;).Text&lt;/font&gt;&lt;font color="#808080"&gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#0000ff"&gt;If&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;dvOld.Count&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;gt;&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#800000"&gt;0&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;Then&lt;/font&gt;&lt;font color="#808080"&gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#0000ff"&gt;val&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;IIf&lt;/font&gt;&lt;font color="#000000"&gt;(DirectCast(itm.Cells(iCol).Controls(&lt;/font&gt;&lt;font color="#800000"&gt;0&lt;/font&gt;&lt;font color="#000000"&gt;),&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#2b91af"&gt;CheckBox&lt;/font&gt;&lt;font color="#000000"&gt;).Checked,&lt;/font&gt;&lt;font color="#808080"&gt; &amp;quot;G&amp;quot;&lt;/font&gt;&lt;font color="#000000"&gt;,&lt;/font&gt;&lt;font color="#808080"&gt; &amp;quot;B&amp;quot;&lt;/font&gt;&lt;font color="#000000"&gt;)&lt;/font&gt;&lt;font color="#808080"&gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#0000ff"&gt;If&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;val&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;&amp;gt;&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;dvOld(&lt;/font&gt;&lt;font color="#800000"&gt;0&lt;/font&gt;&lt;font color="#000000"&gt;)(&lt;/font&gt;&lt;font color="#808080"&gt;&amp;quot;yes_no_val&amp;quot;&lt;/font&gt;&lt;font color="#000000"&gt;).ToString&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;Then&lt;/font&gt;&lt;font color="#808080"&gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#000000"&gt;sHolder&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;amp;&lt;/font&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;sSQL.Replace(&lt;/font&gt;&lt;font color="#808080"&gt;&amp;quot;[dim_id]&amp;quot;&lt;/font&gt;&lt;font color="#000000"&gt;,&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;dvOld(&lt;/font&gt;&lt;font color="#800000"&gt;0&lt;/font&gt;&lt;font color="#000000"&gt;)(&lt;/font&gt;&lt;font color="#808080"&gt;&amp;quot;dim_id&amp;quot;&lt;/font&gt;&lt;font color="#000000"&gt;)).Replace(&lt;/font&gt;&lt;font color="#808080"&gt;&amp;quot;[prod_id]&amp;quot;&lt;/font&gt;&lt;font color="#000000"&gt;,&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;dvOld(&lt;/font&gt;&lt;font color="#800000"&gt;0&lt;/font&gt;&lt;font color="#000000"&gt;)(&lt;/font&gt;&lt;font color="#808080"&gt;&amp;quot;prod_id&amp;quot;&lt;/font&gt;&lt;font color="#000000"&gt;)).Replace(&lt;/font&gt;&lt;font color="#808080"&gt;&amp;quot;[value]&amp;quot;&lt;/font&gt;&lt;font color="#000000"&gt;,&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;val&lt;/font&gt;&lt;font color="#000000"&gt;)&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;amp;&lt;/font&gt;&lt;font color="#808080"&gt; &amp;quot;;&amp;quot;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#0000ff"&gt;End&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;If&lt;/font&gt;&lt;font color="#808080"&gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#0000ff"&gt;Else&lt;/font&gt;&lt;font color="#808080"&gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#006400"&gt;'Uh oh!      &lt;br /&gt;&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#0000ff"&gt;End&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;If&lt;/font&gt;&lt;font color="#808080"&gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#0000ff"&gt;Else&lt;/font&gt;&lt;font color="#808080"&gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#0000ff"&gt;Exit&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;For&lt;/font&gt;&lt;font color="#808080"&gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#0000ff"&gt;End&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;If&lt;/font&gt;&lt;font color="#808080"&gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#0000ff"&gt;Next&lt;/font&gt;&lt;font color="#808080"&gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#0000ff"&gt;End&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;If&lt;/font&gt;&lt;font color="#808080"&gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#0000ff"&gt;End&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;If&lt;/font&gt;&lt;font color="#808080"&gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#0000ff"&gt;Next&lt;/font&gt;&lt;font color="#808080"&gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#000000"&gt;dvOld.Dispose()&lt;/font&gt;&lt;font color="#808080"&gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#000000"&gt;hidDirty.Value&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;font color="#808080"&gt; &amp;quot;&amp;quot;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#000000"&gt;Common.ExecuteNonQuery(sHolder&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;amp;&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;vbCrLf&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;amp;&lt;/font&gt;&lt;font color="#808080"&gt; &amp;quot;commit;&amp;quot; &lt;/font&gt;&lt;font color="#000000"&gt;&amp;amp;&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;vbCrLf&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;amp;&lt;/font&gt;&lt;font color="#808080"&gt; &amp;quot;end;&amp;quot;&lt;/font&gt;&lt;font color="#000000"&gt;,&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#000000"&gt;cn)&lt;/font&gt;&lt;font color="#808080"&gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#000000"&gt;BindGrid(cn)&lt;/font&gt;&lt;font color="#808080"&gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#000000"&gt;cn.Dispose()&lt;/font&gt;&lt;font color="#808080"&gt;      &lt;br /&gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#0000ff"&gt;End&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;Sub&lt;/font&gt;&lt;font color="#808080"&gt;      &lt;br /&gt;      &lt;br /&gt;&lt;/font&gt;&lt;font color="#0000ff"&gt;End&lt;/font&gt;&lt;font color="#808080"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#0000ff"&gt;Class&lt;/font&gt; &lt;/div&gt;  &lt;p&gt;OK, that was a lot.&amp;#160; Let’s go through what’s going on…&lt;/p&gt;  &lt;p&gt;In BindGrid, for each product that exists in the database, I set a column to be visible, set up it’s HeaderText, etc.&amp;#160; All of the later columns get hidden.&lt;/p&gt;  &lt;p&gt;In ItemDataBound, I set the checked values (only for those that should be checked – the default is &lt;em&gt;un&lt;/em&gt;checked) and I decide which javascript is to be called: check() or uncheck().&amp;#160; They are very similar in that they both set the background color and increment/decrement the count of changes as displayed on the Save button.&amp;#160; They are reversed to differentiate between checking and unchecking a box that was checked when the page was loaded vs one that was unchecked when the page was loaded.&lt;/p&gt;  &lt;p&gt;In Javascript, I’m coloring the background of any changed checkboxes so the user knows what’s been updated.&amp;#160; I also put the count of the number of changes into the text of btnSave to help them keep track.&amp;#160; I also keep the user from clicking Save twice by re-hiding the button and replacing it with a Saving… message.&lt;/p&gt;  &lt;p&gt;Some things I did to improve speed:&lt;/p&gt;  &lt;p&gt;- You will see a number of places where I Exit For the column loop once I hit an unused/hidden column.&lt;/p&gt;  &lt;p&gt;- hidDirty is a HiddenField that I added which is populated by javascript to contain the dimension IDs of any row that it updated.&amp;#160; Then, when the Save button is processing, it can skip any dimension rows that were not updated, rather than checking every checkbox (I have 30 in my code)&lt;/p&gt;  &lt;p&gt;- I added dvOld to compare the database’s value to what is currently in the grid.&amp;#160; There’s no point in updating values that were not changed.&amp;#160; This might not be all that important anymore because I also…&lt;/p&gt;  &lt;p&gt;- Moved the updates to a single update at the end, with a single Commit.&amp;#160; At one point, I was running each UPDATE statement by itself but there’s really no point.&amp;#160; I &lt;em&gt;might&lt;/em&gt; move the ExecuteNonQuery to inside the For each itm loop if I ever get a concern that the user might do too many updates at once and OleDB might not like it.&amp;#160; :)&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2542912692751492802-1224515112814852694?l=stevebarronnet.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Stevebarronnet?a=JizGJsIPGa4:6VDg6dFYFCE:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Stevebarronnet?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Stevebarronnet?a=JizGJsIPGa4:6VDg6dFYFCE:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Stevebarronnet?i=JizGJsIPGa4:6VDg6dFYFCE:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Stevebarronnet?a=JizGJsIPGa4:6VDg6dFYFCE:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Stevebarronnet?i=JizGJsIPGa4:6VDg6dFYFCE:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Stevebarronnet/~4/JizGJsIPGa4" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/Stevebarronnet/~3/JizGJsIPGa4/datagrid-with-variable-columns-which.html</link><author>noreply@blogger.com (Steve Barron)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh5.ggpht.com/-9vVwFWiS678/TjGoxpv9F9I/AAAAAAAAAHI/ctp85BLoXYc/s72-c/untitled_thumb%25255B1%25255D.png?imgmax=800" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://stevebarronnet.blogspot.com/2011/07/datagrid-with-variable-columns-which.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2542912692751492802.post-8217960676559497891</guid><pubDate>Thu, 16 Jun 2011 19:54:00 +0000</pubDate><atom:updated>2011-06-16T12:56:23.371-07:00</atom:updated><title>jQueryUI AutoComplete AutoPostback</title><description>I was recently &lt;strike&gt;playing&lt;/strike&gt; experimenting with jQueryUI autocomplete with some help from &lt;a href="http://www.dotnetcurry.com/ShowArticle.aspx?ID=515"&gt;an article on DotNetCurry&lt;/a&gt;&amp;nbsp;but it didn't do everything I wanted it to do.&amp;nbsp; Once the user chose an entry from the list, I wanted that entry selected and posted back to the server.&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-family: Times, &amp;quot;Times New Roman&amp;quot;, serif;"&gt;Now, I also used my own webservice and a real database instead of their sample data, so there could be a &lt;em&gt;few&lt;/em&gt; things that look different from their code.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
First, in the "success" setting, I had it return 2 answers:&amp;nbsp;&amp;nbsp;the ID and&amp;nbsp;the name.&lt;br /&gt;
&lt;span style="background-color: #f3f3f3; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;success: function (data) {&lt;/span&gt;&lt;br /&gt;
&lt;span style="background-color: #f3f3f3; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="background-color: #f3f3f3; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; response($.map(data.d, function (item) {&lt;/span&gt;&lt;br /&gt;
&lt;span style="background-color: #f3f3f3; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return {&lt;/span&gt;&lt;br /&gt;
&lt;span style="background-color: #f3f3f3; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; value: item.name,&lt;/span&gt;&lt;br /&gt;
&lt;span style="background-color: #f3f3f3; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; id: item.id&lt;/span&gt;&lt;br /&gt;
&lt;span style="background-color: #f3f3f3; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;br /&gt;
&lt;span style="background-color: #f3f3f3; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; }))&lt;/span&gt;&lt;br /&gt;
&lt;span style="background-color: #f3f3f3; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;},&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Then, toward the end of the autopostback call, after &lt;span style="background-color: #f3f3f3; font-family: Courier New;"&gt;minLength: 2,&lt;/span&gt;I added a select setting to override the default action.&lt;br /&gt;
&lt;span style="font-family: Times;"&gt;&lt;span style="background-color: #f3f3f3; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;select: function (event, ui) {&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="background-color: #f3f3f3; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="background-color: #f3f3f3; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; $("#hidID").val(ui.item.id);&lt;/span&gt;&lt;br /&gt;
&lt;span style="background-color: #f3f3f3; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; $("#tbAuto").val(ui.item.value);&lt;/span&gt;&lt;br /&gt;
&lt;span style="background-color: #f3f3f3; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; __doPostBack('btnGo', '');&lt;/span&gt;&lt;br /&gt;
&lt;span style="background-color: #f3f3f3; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; return true;&lt;/span&gt;&lt;br /&gt;
&lt;span style="background-color: #f3f3f3; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;}&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
- hidID wasn't in the original so that was a new asp:HiddenField that I added to pass the ID from the &lt;br /&gt;
&amp;nbsp;&amp;nbsp; webservice&lt;br /&gt;
- btnGo is an asp:Button that does the actual work.&amp;nbsp; It looks up the information from the database.&lt;br /&gt;
- __doPostBack wasn't available at first.&amp;nbsp; I realized that I had to add something with an autopostback option, &lt;br /&gt;
&amp;nbsp; so I also added a bogus asp:DropDownList.&lt;br /&gt;
&lt;br /&gt;
But I didn't want to see btnGo or the bogus DropDownList so I hid them&amp;nbsp;at the top of the&amp;nbsp;JavaScript:&lt;br /&gt;
&lt;span style="background-color: #f3f3f3; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;$("#ddl").replaceWith("&amp;nbsp;")&lt;/span&gt;&lt;br /&gt;
&lt;span style="background-color: #f3f3f3; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="background-color: #f3f3f3; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;$("#btnGo").replaceWith("&amp;nbsp;")&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
I could probably get rid of the button, now, and have the work done in the postback of the ddl but this was just a proof-of-concept so I didn't do that (yet).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2542912692751492802-8217960676559497891?l=stevebarronnet.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Stevebarronnet?a=TLDZGjaph1M:Pq2hAlmx4-k:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Stevebarronnet?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Stevebarronnet?a=TLDZGjaph1M:Pq2hAlmx4-k:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Stevebarronnet?i=TLDZGjaph1M:Pq2hAlmx4-k:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Stevebarronnet?a=TLDZGjaph1M:Pq2hAlmx4-k:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Stevebarronnet?i=TLDZGjaph1M:Pq2hAlmx4-k:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Stevebarronnet/~4/TLDZGjaph1M" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/Stevebarronnet/~3/TLDZGjaph1M/jqueryui-autocomplete-autopostback.html</link><author>noreply@blogger.com (Steve Barron)</author><thr:total>2</thr:total><feedburner:origLink>http://stevebarronnet.blogspot.com/2011/06/jqueryui-autocomplete-autopostback.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2542912692751492802.post-1426621823351186064</guid><pubDate>Wed, 27 Apr 2011 13:07:00 +0000</pubDate><atom:updated>2011-04-27T06:07:27.785-07:00</atom:updated><title>Sending Nice Emails from Oracle</title><description>After a few years of our (ASP.NET, Oracle back end) system sending emails to users, I decided it was time to make the emails nicer.&amp;nbsp; Previously, an email was either just un-formatted text or was a hand-coded table.&amp;nbsp; There was also the option to pass a SQL statement but it turned out never to have been used.&amp;nbsp; Also previously, some emails came from the .NET side (if they were generated by the .NET code) and others from Oracle (if they were generated by the batch cycle).&lt;br /&gt;
&lt;br /&gt;
Without changing the calls in the .NET code (or at least not many of them), I wanted them to have a uniform appearance, nicer than before, that used a color scheme similar to the (intranet) web app, a title and a link to the system.&amp;nbsp; The few calls that we decided to change were merely to enhance the appearance of some of the emails that already included tables.&lt;br /&gt;
&lt;br /&gt;
The .NET code was pretty easily converted to become a wrapper for the Oracle procedure call.&amp;nbsp; It's easy enough to get .NET to call Oracle.&amp;nbsp; It would have been a lot trickier to get Oracle to call the .NET code, though I guess a webservice would have done it.&lt;br /&gt;
&lt;br /&gt;
Everyone in our company has Outlook so sending HTML-only emails is acceptable but it wouldn't be hard to change this up to include both plain text and HTML segments.&lt;br /&gt;
&lt;div style="background-color: #f3f3f3; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: xx-small;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style="background-color: #f3f3f3; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: xx-small;"&gt;PROCEDURE sendmail&lt;br /&gt;
&amp;nbsp;(&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; p_to IN VARCHAR2 DEFAULT NULL,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; p_cc IN VARCHAR2 DEFAULT NULL,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; p_subject IN VARCHAR2 DEFAULT NULL,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; p_html IN VARCHAR2 DEFAULT NULL&lt;br /&gt;
&amp;nbsp; )&lt;br /&gt;
IS&lt;br /&gt;
&amp;nbsp; l_crlf&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; varchar2(2)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; := CHR(13) || CHR(10);&amp;nbsp; --Yes, I'm still a VB programmer at heart!&lt;br /&gt;
&amp;nbsp; l_boundary&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; VARCHAR2(15)&amp;nbsp;&amp;nbsp;&amp;nbsp; :='a1b2c3d4e3f2g1';&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; --This can be any nonsense string that will&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/div&gt;&lt;div style="background-color: #f3f3f3; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: xx-small;"&gt;&amp;nbsp; l_offset&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NUMBER&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; := 1;&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; never accidentally appear in a real message.&lt;br /&gt;
&amp;nbsp; l_chunk&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NUMBER&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; := 1000;&amp;nbsp; &lt;br /&gt;
&amp;nbsp; l_header&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; VARCHAR2(32767) := '';&lt;br /&gt;
&amp;nbsp; l_body&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; VARCHAR2(32767) := p_html;&lt;br /&gt;
&amp;nbsp; l_smtp_hostname VARCHAR2(30)&amp;nbsp;&amp;nbsp;&amp;nbsp; := 'SMTPHOST.XXX.COM';&lt;br /&gt;
&amp;nbsp; l_to&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; VARCHAR2(100)&amp;nbsp;&amp;nbsp; := '';&lt;br /&gt;
&amp;nbsp; l_subj_suffix&amp;nbsp;&amp;nbsp; varchar2(5)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; := '';&lt;br /&gt;
&amp;nbsp; l_connection&amp;nbsp;&amp;nbsp;&amp;nbsp; utl_smtp.CONNECTION;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp; &lt;br /&gt;
BEGIN&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp; IF p_to IS NOT NULL THEN&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; IF p_subject IS NOT NULL OR p_html IS NOT NULL THEN&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; --Don't send email to real recipient if this is not Production&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SELECT decode(global_name, 'PROD.WORLD',p_to, 'sharedmailbox@xxx.com') INTO l_to FROM global_name;&lt;/span&gt;&lt;/div&gt;&lt;div style="background-color: #f3f3f3; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: xx-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; --Append the word Test to the subject if this is not Production &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SELECT decode(global_name, 'PROD.WORLD','', '-Test') INTO l_subj_suffix FROM global_name;&lt;/span&gt;&lt;/div&gt;&lt;div style="background-color: #f3f3f3; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: xx-small;"&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; l_header := 'MIME-Version: 1.0' || l_crlf || 'To: ' || p_to || l_crlf || 'From: Please Do Not Reply '&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style="background-color: #f3f3f3; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: xx-small;"&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; || l_crlf || 'Subject: ' || p_subject || l_subj_suffix || l_crlf&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style="background-color: #f3f3f3; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: xx-small;"&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; || 'Content-Type: multipart/alternative; boundary=' || CHR(34) || l_boundary || CHR(34)&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style="background-color: #f3f3f3; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: xx-small;"&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; || l_crlf || l_crlf || l_crlf || '--' || l_boundary || l_crlf || 'content-type: text/html;'&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style="background-color: #f3f3f3; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: xx-small;"&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; || l_crlf || l_crlf;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; --Open Connection to SMTP server&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; l_connection := utl_smtp.open_connection(l_smtp_hostname);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; utl_smtp.helo(l_connection, l_smtp_hostname);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; --Recipients&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; utl_smtp.mail(l_connection, '&lt;/span&gt;&lt;span style="font-size: xx-small;"&gt;sharedmailbox@xxx.com&lt;/span&gt;&lt;span style="font-size: xx-small;"&gt;');&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; utl_smtp.rcpt(l_connection, l_to);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; IF p_cc IS NOT NULL THEN&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; utl_smtp.rcpt(l_connection, p_cc);&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; l_header := 'MIME-Version: 1.0' || l_crlf || 'To: ' || p_to || l_crlf || 'cc: ' || p_cc || l_crlf&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style="background-color: #f3f3f3; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: xx-small;"&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; || 'From: Please Do Not Reply ' || l_crlf || 'Subject: ' || p_subject || l_subj_suffix&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style="background-color: #f3f3f3; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: xx-small;"&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; || l_crlf || 'Content-Type: multipart/alternative; boundary=' || CHR(34) || l_boundary&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style="background-color: #f3f3f3; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: xx-small;"&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; || CHR(34) || l_crlf || l_crlf || l_crlf || '--' || l_boundary || l_crlf&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style="background-color: #f3f3f3; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: xx-small;"&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; || 'content-type: text/html;' || l_crlf || l_crlf;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; END IF;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; utl_smtp.rcpt(l_connection, '&lt;/span&gt;&lt;span style="font-size: xx-small;"&gt;sharedmailbox@xxx.com&lt;/span&gt;&lt;span style="font-size: xx-small;"&gt;');&lt;/span&gt;&lt;/div&gt;&lt;div style="background-color: #f3f3f3; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: xx-small;"&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; --Headers&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; utl_smtp.open_data(l_connection);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; utl_smtp.write_data(l_connection, l_header);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; utl_smtp.write_data(l_connection, '&lt;/span&gt;&lt;/div&gt;&lt;div style="background-color: #f3f3f3; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: xx-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;html&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="background-color: #f3f3f3; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: xx-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size: xx-small;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-size: xx-small;"&gt;head&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="background-color: #f3f3f3; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: xx-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size: xx-small;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-size: xx-small;"&gt;style&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="background-color: #f3f3f3; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: xx-small;"&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; table, tr, td {font:10pt black;font-family:Calibri} &lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; table {border:1px solid black;border-collapse:collapse;width:90%} &lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; .gHeader {font:bold 10pt black;font-family:Calibri;BACKGROUND-COLOR:#A0CF67} &lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .gAltRowsDark {font:10pt black;font-family:Calibri;BACKGROUND-COLOR:#EEF6E3}&lt;/span&gt;&lt;/div&gt;&lt;div style="background-color: #f3f3f3; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: xx-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size: xx-small;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-size: xx-small;"&gt;/style&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="background-color: #f3f3f3; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: xx-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size: xx-small;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-size: xx-small;"&gt;/head&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="background-color: #f3f3f3; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: xx-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size: xx-small;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-size: xx-small;"&gt;body&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; &lt;/span&gt;&lt;span style="font-size: xx-small;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-size: xx-small;"&gt;table align=center &amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="background-color: #f3f3f3; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: xx-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style="font-size: xx-small;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-size: xx-small;"&gt;tr class=gHeader&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="background-color: #f3f3f3; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: xx-small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size: xx-small;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-size: xx-small;"&gt;td&amp;gt;WebApp Message&lt;/span&gt;&lt;span style="font-size: xx-small;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-size: xx-small;"&gt;/td&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="background-color: #f3f3f3; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: xx-small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size: xx-small;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-size: xx-small;"&gt;td&amp;gt;&lt;/span&gt;&lt;span style="font-size: xx-small;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-size: xx-small;"&gt;/td&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="background-color: #f3f3f3; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: xx-small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size: xx-small;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-size: xx-small;"&gt;td style=text-align:right&amp;gt;&lt;/span&gt;&lt;span style="font-size: xx-small;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-size: xx-small;"&gt;a href=http://webapp.xxx.com&amp;gt;Go to WebApp&lt;/span&gt;&lt;span style="font-size: xx-small;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-size: xx-small;"&gt;/a&amp;gt;&lt;/span&gt;&lt;span style="font-size: xx-small;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-size: xx-small;"&gt;/td&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="background-color: #f3f3f3; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: xx-small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size: xx-small;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-size: xx-small;"&gt;/tr&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="background-color: #f3f3f3; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: xx-small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size: xx-small;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-size: xx-small;"&gt;tr&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="background-color: #f3f3f3; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: xx-small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size: xx-small;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-size: xx-small;"&gt;td colspan=3&amp;gt;&lt;/span&gt;&lt;span style="font-size: xx-small;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-size: xx-small;"&gt;br/&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; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; --Body&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; while length(l_body) &amp;gt; 0&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; loop&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; l_chunk := least(l_chunk, length(l_body));&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; utl_smtp.write_data(l_connection, SUBSTR(l_body, 1, l_chunk));&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; l_body := substr(l_body,l_chunk+1);&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; dbms_output.put_line(l_body);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; end loop;&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; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -- Cleanup&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; utl_smtp.write_data(l_connection, '&lt;/span&gt;&lt;/div&gt;&lt;div style="background-color: #f3f3f3; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: xx-small;"&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size: xx-small;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-size: xx-small;"&gt;/td&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="background-color: #f3f3f3; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: xx-small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size: xx-small;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-size: xx-small;"&gt;/tr&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="background-color: #f3f3f3; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: xx-small;"&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size: xx-small;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-size: xx-small;"&gt;/table&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="background-color: #f3f3f3; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: xx-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size: xx-small;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-size: xx-small;"&gt;/body&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="background-color: #f3f3f3; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: xx-small;"&gt;&lt;span style="background-color: #f3f3f3; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: xx-small;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-size: xx-small;"&gt;&lt;span style="background-color: #f3f3f3; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;/html&amp;gt;' || l_crlf || '--' || l_boundary || '--' || CHR(13));&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;br style="background-color: #f3f3f3; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="background-color: #f3f3f3; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; utl_smtp.close_data(l_connection);&lt;/span&gt;&lt;br style="background-color: #f3f3f3; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="background-color: #f3f3f3; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; utl_smtp.quit(l_connection);&lt;/span&gt;&lt;br style="background-color: #f3f3f3; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="background-color: #f3f3f3; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; END IF;&lt;/span&gt;&lt;br style="background-color: #f3f3f3; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="background-color: #f3f3f3; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; END IF;&lt;/span&gt;&lt;br style="background-color: #f3f3f3; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="background-color: #f3f3f3; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;END sendmail;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;
Some of this isn't as efficient as I'd like it to be but it works.&amp;nbsp; Every email now gets a nice table around it with a title and a link to the web app.&amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-6VJJW2Q8bkk/TbgUeg8gm8I/AAAAAAAAAGI/diOale2zzTM/s1600/untitled.bmp" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="80" src="http://1.bp.blogspot.com/-6VJJW2Q8bkk/TbgUeg8gm8I/AAAAAAAAAGI/diOale2zzTM/s640/untitled.bmp" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;This is, of course, a system message and not one the users get - or it would have had some nicer text, etc., but you get the idea. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Every email is also cc:ed to our group shared mailbox.&amp;nbsp; If we're not in Production, the shared mailbox is the only place the email goes - which is handy in preventing Test emails from getting to real users.&amp;nbsp; Also, the subject also has "-Test" appended to it so I can tell which emails in the shared mailbox are real and which are not.&amp;nbsp; They still &lt;i&gt;appear&lt;/i&gt; to have their original recipients (which is good for testing) because the MIME header has the original recipient but the recipient isn't added to the recipient list.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2542912692751492802-1426621823351186064?l=stevebarronnet.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Stevebarronnet?a=we7NVHYS8wE:OZup3xtTX9c:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Stevebarronnet?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Stevebarronnet?a=we7NVHYS8wE:OZup3xtTX9c:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Stevebarronnet?i=we7NVHYS8wE:OZup3xtTX9c:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Stevebarronnet?a=we7NVHYS8wE:OZup3xtTX9c:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Stevebarronnet?i=we7NVHYS8wE:OZup3xtTX9c:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Stevebarronnet/~4/we7NVHYS8wE" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/Stevebarronnet/~3/we7NVHYS8wE/sending-nice-emails-from-oracle.html</link><author>noreply@blogger.com (Steve Barron)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-6VJJW2Q8bkk/TbgUeg8gm8I/AAAAAAAAAGI/diOale2zzTM/s72-c/untitled.bmp" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://stevebarronnet.blogspot.com/2011/04/sending-nice-emails-from-oracle.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2542912692751492802.post-1770678619989555518</guid><pubDate>Tue, 12 Apr 2011 15:27:00 +0000</pubDate><atom:updated>2011-04-12T08:27:08.036-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">DataGrid ASP.NET</category><title>DataGrid with variable Columns</title><description>&lt;div style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;A number of times in my career, I have been asked to create a "grid" of data.&amp;nbsp; Users like a single report to let them compare a product across customers and also a customer across products.&lt;br /&gt;
&lt;br /&gt;
Because I started with "Classic" ASP many years ago, my knowledge of HTML &amp;amp; CSS made it a natural to create this as an HTMLTable object with multiple rows, each with multiple cells, each of which could have multiple controls.&amp;nbsp; Certainly, some of the more advanced requirements I was given lent themselves to this hand-crafted method.&lt;br /&gt;
&lt;br /&gt;
But, sometimes, the grid is very simple and just needs rows and columns of data.&amp;nbsp; Binding a DataGrid (yes, I'm still using DataGrids instead of GridViews) with dynamic columns.&amp;nbsp; Even some slightly advanced requirements can be handled with this method - the example below shows a secondary fact in the grid for some products and also colors for each product from the database (stored as hex).&lt;br /&gt;
&lt;br /&gt;
Let's start by creating the DataGrid itself in the ASPX page:&lt;/div&gt;&lt;pre style="background: none repeat scroll 0% 0% white; color: black; font-family: Consolas;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: maroon;"&gt;asp&lt;/span&gt;&lt;span style="color: blue;"&gt;:&lt;/span&gt;&lt;span style="color: maroon;"&gt;DataGrid&lt;/span&gt;&amp;nbsp;&lt;span style="color: red;"&gt;runat&lt;/span&gt;&lt;span style="color: blue;"&gt;=&lt;/span&gt;&lt;span style="color: blue;"&gt;"server"&lt;/span&gt;&amp;nbsp;&lt;span style="color: red;"&gt;ID&lt;/span&gt;&lt;span style="color: blue;"&gt;=&lt;/span&gt;&lt;span style="color: blue;"&gt;"dgMain"&lt;/span&gt;&amp;nbsp;&lt;span style="color: red;"&gt;AutoGenerateColumns&lt;/span&gt;&lt;span style="color: blue;"&gt;=&lt;/span&gt;&lt;span style="color: blue;"&gt;false&lt;/span&gt;&amp;nbsp;&lt;span style="color: red;"&gt;EnableViewState&lt;/span&gt;&lt;span style="color: blue;"&gt;=&lt;/span&gt;&lt;span style="color: blue;"&gt;false&amp;gt;&lt;/span&gt;
&amp;nbsp; &lt;/span&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="color: maroon;"&gt;HeaderStyle&lt;/span&gt;&amp;nbsp;&lt;span style="color: red;"&gt;CssClass&lt;/span&gt;&lt;span style="color: blue;"&gt;=&lt;/span&gt;&lt;span style="color: blue;"&gt;"Header"&lt;/span&gt;&amp;nbsp;&lt;span style="color: blue;"&gt;/&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: x-small;"&gt;
&amp;nbsp; &lt;/span&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="color: maroon;"&gt;AlternatingItemStyle&lt;/span&gt;&amp;nbsp;&lt;span style="color: red;"&gt;CssClass&lt;/span&gt;&lt;span style="color: blue;"&gt;=&lt;/span&gt;&lt;span style="color: blue;"&gt;"AltRows"&lt;/span&gt;&amp;nbsp;&lt;span style="color: blue;"&gt;/&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: x-small;"&gt;
&amp;nbsp; &lt;/span&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="color: maroon;"&gt;Columns&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: x-small;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="color: blue;"&gt;&lt;/span&gt;&lt;span style="color: maroon;"&gt;asp&lt;/span&gt;&lt;span style="color: blue;"&gt;:&lt;/span&gt;&lt;span style="color: maroon;"&gt;BoundColumn&lt;/span&gt;&amp;nbsp;&lt;span style="color: red;"&gt;DataField&lt;/span&gt;&lt;span style="color: blue;"&gt;=&lt;/span&gt;&lt;span style="color: blue;"&gt;"acct_nm"&lt;/span&gt;&amp;nbsp;&lt;span style="color: red;"&gt;ReadOnly&lt;/span&gt;&lt;span style="color: blue;"&gt;=&lt;/span&gt;&lt;span style="color: blue;"&gt;"true"&lt;/span&gt;&amp;nbsp;&lt;span style="color: blue;"&gt;/&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: x-small;"&gt;
&amp;nbsp; &lt;/span&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="color: blue;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="color: blue;"&gt;&lt;span style="color: maroon;"&gt;Columns&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="color: blue;"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="color: blue;"&gt;&lt;span style="color: blue;"&gt;&lt;span style="color: maroon;"&gt;asp&lt;/span&gt;&lt;span style="color: blue;"&gt;:&lt;/span&gt;&lt;span style="color: maroon;"&gt;DataGrid&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;
&lt;div style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;Nothing tricky there.  I've added the Account Name column to label the row and set up the styles.  In the code, we need to add the columns and build the SQL statement. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The For Each goes through the list of products, adding columns to the data grid and building columns (the "col" column) for the real SELECT clause to come. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
See some of my other blog posts for details about the Common class. &lt;/div&gt;&lt;pre style="background: none repeat scroll 0% 0% white; color: black; font-family: Consolas;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&amp;nbsp;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;Private&lt;/span&gt;&amp;nbsp;&lt;span style="color: blue;"&gt;Sub&lt;/span&gt;&amp;nbsp;BuildGrid(&lt;span style="color: blue;"&gt;Optional&lt;/span&gt;&amp;nbsp;&lt;span style="color: blue;"&gt;ByRef&lt;/span&gt;&amp;nbsp;cn&amp;nbsp;&lt;span style="color: blue;"&gt;As&lt;/span&gt;&amp;nbsp;&lt;span style="color: #2b91af;"&gt;OleDbConnection&lt;/span&gt;&amp;nbsp;=&amp;nbsp;&lt;span style="color: blue;"&gt;Nothing&lt;/span&gt;)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: blue;"&gt;Dim&lt;/span&gt;&amp;nbsp;bDispose&amp;nbsp;&lt;span style="color: blue;"&gt;As&lt;/span&gt;&amp;nbsp;&lt;span style="color: blue;"&gt;Boolean&lt;/span&gt;&amp;nbsp;=&amp;nbsp;&lt;span style="color: #2b91af;"&gt;Common&lt;/span&gt;.MaybeOpenConnection(cn)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: blue;"&gt;Dim&lt;/span&gt;&amp;nbsp;bc&amp;nbsp;&lt;span style="color: blue;"&gt;As&lt;/span&gt;&amp;nbsp;&lt;span style="color: #2b91af;"&gt;BoundColumn&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: blue;"&gt;Dim&lt;/span&gt;&amp;nbsp;sSQL&amp;nbsp;&lt;span style="color: blue;"&gt;As&lt;/span&gt;&amp;nbsp;&lt;span style="color: blue;"&gt;String&lt;/span&gt;&amp;nbsp;=&amp;nbsp;&lt;span style="color: #a31515;"&gt;"SELECT&amp;nbsp;acct_nm,"&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: blue;"&gt;For&lt;/span&gt;&amp;nbsp;&lt;span style="color: blue;"&gt;Each&lt;/span&gt;&amp;nbsp;dr&amp;nbsp;&lt;span style="color: blue;"&gt;As&lt;/span&gt;&amp;nbsp;&lt;span style="color: #2b91af;"&gt;DataRow&lt;/span&gt; &lt;/span&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="color: blue;"&gt;In&lt;/span&gt;&amp;nbsp;&lt;span style="color: #2b91af;"&gt;Common&lt;/span&gt;.GetDataTable(&lt;span style="color: #a31515;"&gt;"select cmptr_ind,&amp;nbsp;dsly_clr, prod_desc,&amp;nbsp;prod_id,&amp;nbsp;"&lt;/span&gt;&amp;nbsp;&amp;amp; _
&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #a31515;"&gt;"&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;'(select fact from fact_tbl where acct_id=a.acct_id&amp;nbsp;and&amp;nbsp;prod_id='&amp;nbsp;||&amp;nbsp;prod_id&amp;nbsp;||&amp;nbsp;'))&amp;nbsp;f1_'&amp;nbsp;||&amp;nbsp;prod_id&amp;nbsp;||&amp;nbsp;','&amp;nbsp;||&amp;nbsp;decode(cmptr_ind,'N','(select fact2 from fact_tbl2 where&amp;nbsp;acct_id=a.acct_id&amp;nbsp;and&amp;nbsp;prod_id='&amp;nbsp;||&amp;nbsp;prod_id&amp;nbsp;||&amp;nbsp;') f2_'&amp;nbsp;||&amp;nbsp;prod_id&amp;nbsp;||&amp;nbsp;',','')&amp;nbsp;col&amp;nbsp;"&lt;/span&gt;&amp;nbsp;&amp;amp; _
&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #a31515;"&gt;"&amp;nbsp;&amp;nbsp;from prod_tbl "&lt;/span&gt;&amp;nbsp;&amp;amp; _
&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;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #a31515;"&gt;"&amp;nbsp; /* prod filter? */ "&lt;/span&gt;&amp;nbsp;&amp;amp; _
&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #a31515;"&gt;"&amp;nbsp;order&amp;nbsp;by cmptr_ind&amp;nbsp;desc, prod_desc"&lt;/span&gt;,&amp;nbsp;cn).Rows
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sSQL&amp;nbsp;&amp;amp;=&amp;nbsp;dr(&lt;span style="color: #a31515;"&gt;"col"&lt;/span&gt;).ToString
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;bc&amp;nbsp;=&amp;nbsp;&lt;span style="color: blue;"&gt;New&lt;/span&gt;&amp;nbsp;&lt;span style="color: #2b91af;"&gt;BoundColumn&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;bc.DataField&amp;nbsp;=&amp;nbsp;&lt;span style="color: #a31515;"&gt;"f1_"&lt;/span&gt;&amp;nbsp;&amp;amp; dr(&lt;span style="color: #a31515;"&gt;"prod_id"&lt;/span&gt;).ToString
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;bc.HeaderText&amp;nbsp;=&amp;nbsp;dr(&lt;span style="color: #a31515;"&gt;"prod_desc"&lt;/span&gt;).ToString&amp;nbsp;&amp;amp; &lt;span style="color: #a31515;"&gt;"Main Fact&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="color: #a31515;"&gt;"&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: x-small;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; bc.HeaderStyle.BackColor&amp;nbsp;=&amp;nbsp;Drawing.&lt;span style="color: #2b91af;"&gt;ColorTranslator&lt;/span&gt;.FromHtml(dr(&lt;span style="color: #a31515;"&gt;"dsly_clr"&lt;/span&gt;))
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;bc.HeaderStyle.VerticalAlign&amp;nbsp;=&amp;nbsp;&lt;span style="color: #2b91af;"&gt;VerticalAlign&lt;/span&gt;.Bottom
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;dgMain.Columns.Add(bc)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: blue;"&gt;If&lt;/span&gt;&amp;nbsp;dr(&lt;span style="color: #a31515;"&gt;"cmptr_ind"&lt;/span&gt;).ToString&amp;nbsp;=&amp;nbsp;&lt;span style="color: #a31515;"&gt;"N"&lt;/span&gt;&amp;nbsp;&lt;span style="color: blue;"&gt;Then  'Our product - show second fact&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&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; bc&amp;nbsp;=&amp;nbsp;&lt;span style="color: blue;"&gt;New&lt;/span&gt;&amp;nbsp;&lt;span style="color: #2b91af;"&gt;BoundColumn&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;bc.DataField&amp;nbsp;=&amp;nbsp;&lt;span style="color: #a31515;"&gt;"f2_"&lt;/span&gt;&amp;nbsp;&amp;amp; dr(&lt;span style="color: #a31515;"&gt;"prod_id"&lt;/span&gt;).ToString
&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;bc.HeaderText&amp;nbsp;=&amp;nbsp;dr(&lt;span style="color: #a31515;"&gt;"prod_desc"&lt;/span&gt;).ToString&amp;nbsp;&amp;amp; &lt;span style="color: #a31515;"&gt;"Second Fact"&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;bc.HeaderStyle.BackColor&amp;nbsp;=&amp;nbsp;Drawing.&lt;span style="color: #2b91af;"&gt;ColorTranslator&lt;/span&gt;.FromHtml(dr(&lt;span style="color: #a31515;"&gt;"dsly_clr"&lt;/span&gt;))
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;bc.HeaderStyle.VerticalAlign&amp;nbsp;=&amp;nbsp;&lt;span style="color: #2b91af;"&gt;VerticalAlign&lt;/span&gt;.Bottom
&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;bc.ItemStyle.HorizontalAlign&amp;nbsp;=&amp;nbsp;&lt;span style="color: #2b91af;"&gt;HorizontalAlign&lt;/span&gt;.Right
&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;dgMain.Columns.Add(bc)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: blue;"&gt;End&lt;/span&gt;&amp;nbsp;&lt;span style="color: blue;"&gt;If&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;Next&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sSQL&amp;nbsp;=&amp;nbsp;sSQL.Substring(0,&amp;nbsp;sSQL.Length&amp;nbsp;-&amp;nbsp;1)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #2b91af;"&gt;Common&lt;/span&gt;.BindToReader(sSQL&amp;nbsp;&amp;amp; &lt;span style="color: #a31515;"&gt;"&amp;nbsp;FROM&amp;nbsp;acct_tbl a /* acct filter? */"&lt;/span&gt;,&amp;nbsp;dgMain,&amp;nbsp;cn)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: blue;"&gt;If&lt;/span&gt;&amp;nbsp;bDispose&amp;nbsp;&lt;span style="color: blue;"&gt;Then&lt;/span&gt;&amp;nbsp;cn.Dispose()
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: blue;"&gt;End&lt;/span&gt;&amp;nbsp;&lt;span style="color: blue;"&gt;Sub&lt;/span&gt;
&lt;/span&gt;&lt;/pre&gt;&lt;div style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&lt;br /&gt;
The second-to-last line runs the built SQL to get the data and bind it to the DataGrid.  The sSQL variable could probably benefit from being a StringBuilder, rather than doing all of those concatenations, but I didn't have any performance issues.&amp;nbsp; Your SQL may vary.&amp;nbsp; :)&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2542912692751492802-1770678619989555518?l=stevebarronnet.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Stevebarronnet?a=BH_3Lbgkl8M:4snvVPITi9g:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Stevebarronnet?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Stevebarronnet?a=BH_3Lbgkl8M:4snvVPITi9g:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Stevebarronnet?i=BH_3Lbgkl8M:4snvVPITi9g:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Stevebarronnet?a=BH_3Lbgkl8M:4snvVPITi9g:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Stevebarronnet?i=BH_3Lbgkl8M:4snvVPITi9g:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Stevebarronnet/~4/BH_3Lbgkl8M" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/Stevebarronnet/~3/BH_3Lbgkl8M/datagrid-with-variable-columns.html</link><author>noreply@blogger.com (Steve Barron)</author><thr:total>1</thr:total><feedburner:origLink>http://stevebarronnet.blogspot.com/2011/04/datagrid-with-variable-columns.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2542912692751492802.post-876795324481008508</guid><pubDate>Mon, 13 Sep 2010 19:00:00 +0000</pubDate><atom:updated>2010-09-13T12:07:18.238-07:00</atom:updated><title>VB.NET Line Continuation Characters in VS2010</title><description>Once again, the marketing geniuses at Microsoft have lied to us.  How this time?&lt;br /&gt;&lt;br /&gt;They said that line continuation characters are no longer needed on long lines of code.  That may be true - and they are honest in saying that it works &lt;span style="font-style: italic;"&gt;most&lt;/span&gt; of the time.  But here's the rub.  This code:&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;Case InvalidCreateInquiryErrorType.INVALID_CLIENT_ID, _&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;     InvalidCreateInquiryErrorType.INVALID_ORG_ID, _&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;     InvalidCreateInquiryErrorType.INVALID_PRODUCT_CODE, _&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;     InvalidCreateInquiryErrorType.REQUESTOR_EMAIL_TOO_LARGE, _&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;     InvalidCreateInquiryErrorType.REQUESTOR_COMMENT_TOO_LARGE, _&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;     InvalidCreateInquiryErrorType.REQUESTOR_DOCUMENT_TOO_LARGE, _&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;     InvalidCreateInquiryErrorType.INVALID_PRODFORMU_STATUS_CODE_NEW&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;...ran just fine without the line continuation characters.  BUT, the project would not build and gave &lt;span style="font-style: italic;"&gt;no&lt;/span&gt; indication as to what the problem was.  The build reported failure but no errors, either!&lt;br /&gt;&lt;br /&gt;Fortunately, I found something in the &lt;a href="http://social.msdn.microsoft.com/Forums/en/vbide/thread/b1268f37-6f35-47c1-85e3-21207e27f5a3"&gt;blogosphere&lt;/a&gt; that suggested changing the Visual Studio settings to have more verbosity in the Output window.  Once I did that, it took only seconds to guess at the actual error and insert the underscores.&lt;br /&gt;&lt;br /&gt;Caveat emptor!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2542912692751492802-876795324481008508?l=stevebarronnet.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Stevebarronnet?a=Zt2odl28ieg:1BQP4Yltq6g:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Stevebarronnet?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Stevebarronnet?a=Zt2odl28ieg:1BQP4Yltq6g:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Stevebarronnet?i=Zt2odl28ieg:1BQP4Yltq6g:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Stevebarronnet?a=Zt2odl28ieg:1BQP4Yltq6g:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Stevebarronnet?i=Zt2odl28ieg:1BQP4Yltq6g:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Stevebarronnet/~4/Zt2odl28ieg" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/Stevebarronnet/~3/Zt2odl28ieg/vbnet-line-continuation-characters-in.html</link><author>noreply@blogger.com (Steve Barron)</author><thr:total>0</thr:total><feedburner:origLink>http://stevebarronnet.blogspot.com/2010/09/vbnet-line-continuation-characters-in.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2542912692751492802.post-4080088144670714876</guid><pubDate>Thu, 18 Feb 2010 17:30:00 +0000</pubDate><atom:updated>2010-02-18T09:30:18.920-08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Oracle</category><title>Oracle SQL Developer 2.1</title><description>&lt;p&gt;Oracle released a new version of their FREE SQL Developer in December 2009.&lt;/p&gt;  &lt;p&gt;Some Oracle developers prefer one of the products from Quest Software - SQL Developer or TOAD.&amp;#160; I have used all 3 over the years – each for years at a time.&amp;#160; Each had it's strengths and weaknesses.&amp;#160; If you are using an older version of any of these tools, though, and don’t want to lay out money for new versions, give SQLDeveloper a try.&amp;#160; Did I mention it’s FREE?&lt;/p&gt;  &lt;p&gt;There is no &lt;em&gt;install&lt;/em&gt;, per se.&amp;#160; I moved my old install into a folder call Backup underneath the C:\Program Files\SQLDeveloper folder I had been running in.&amp;#160; I extracted the ZIP (complete with JDK1.6._11) into that folder.&amp;#160; My old shortcuts continued to work.&amp;#160; The first time I ran, it asked if I wanted to import my settings from 1.5 and it did.&lt;/p&gt;  &lt;p&gt;So far, I feel like it crashes/freezes a LOT less than the 1.5 version I had been using.&amp;#160; That could be the biggest benefit.&amp;#160; A few other things are nicer than before.&amp;#160; &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;There’s a nice Start Page with links to useful parts of Oracle’s developer site.&lt;/li&gt; &lt;/ul&gt;  &lt;blockquote&gt;   &lt;p&gt;&amp;#160;&amp;#160;&amp;#160; &lt;a href="http://lh3.ggpht.com/_ppph-1DSO_8/S315JyFGH-I/AAAAAAAAAFE/VPTRSAHTq7A/s1600-h/image%5B2%5D.png"&gt;&lt;img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="117" alt="image" src="http://lh5.ggpht.com/_ppph-1DSO_8/S315KexmKuI/AAAAAAAAAFI/-8xOOLyAGyo/image_thumb.png?imgmax=800" width="244" border="0" /&gt;&lt;/a&gt; &lt;/p&gt; &lt;/blockquote&gt;  &lt;ul&gt;   &lt;li&gt;I like the autocomplete that adds and updates the group by clause for your select statements.&lt;/li&gt;    &lt;li&gt;I like that the whole thing doesn’t freeze up when I have a long-running process and accidentally ask for something else from that same connection.&amp;#160; It merely delays those requested actions (usually expanding something in the tree) but allows the rest of the app to continue working.&amp;#160; &lt;/li&gt;    &lt;li&gt;My previous version recently started to randomly freeze cells while I was scrolling around query results with arrow keys.&amp;#160; Going to the top/left and using scroll bars to navigate would fix it some of the time.&amp;#160; I suspect it was a JDK version issue but, either way, it appears to be gone – Yay!&lt;/li&gt;    &lt;li&gt;I like the refresh option on each query result tab and the pin, but I had to make pinning not be the default.&amp;#160; :)&lt;/li&gt;    &lt;li&gt;This isn’t new, but it seems like it should work with several different non-Oracle databases, too.&amp;#160; Maybe I’ll install it at home, too, for SQL Server things I do there.&lt;/li&gt; &lt;/ul&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2542912692751492802-4080088144670714876?l=stevebarronnet.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Stevebarronnet?a=C121AWKMWDI:VkcW7iEBaQI:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Stevebarronnet?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Stevebarronnet?a=C121AWKMWDI:VkcW7iEBaQI:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Stevebarronnet?i=C121AWKMWDI:VkcW7iEBaQI:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Stevebarronnet?a=C121AWKMWDI:VkcW7iEBaQI:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Stevebarronnet?i=C121AWKMWDI:VkcW7iEBaQI:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Stevebarronnet/~4/C121AWKMWDI" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/Stevebarronnet/~3/C121AWKMWDI/oracle-sql-developer-21.html</link><author>noreply@blogger.com (Steve Barron)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh5.ggpht.com/_ppph-1DSO_8/S315KexmKuI/AAAAAAAAAFI/-8xOOLyAGyo/s72-c/image_thumb.png?imgmax=800" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://stevebarronnet.blogspot.com/2010/02/oracle-sql-developer-21.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2542912692751492802.post-4341034757629887289</guid><pubDate>Tue, 16 Feb 2010 17:30:00 +0000</pubDate><atom:updated>2010-02-16T10:19:42.532-08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">ASP.NET</category><title>Common.vb</title><description>&lt;b&gt;Common.vb&lt;/b&gt; [&lt;a href="http://www.stevebarron.net/downloads/common.vb.txt"&gt;Download (23k)&lt;/a&gt;]contains a number of helper functions. This is copy-paste code sharing as new systems use the latest possible version. Fortunately, this file has stabilized pretty well and no changes have been made for the last several systems.  &lt;br /&gt;  &lt;hr /&gt;  &lt;br /&gt;&lt;b&gt;Region: DBFormats&lt;/b&gt;  &lt;br /&gt;These are mostly just formatter functions but this first one also helps protect from SQL injection attacks.  &lt;br/&gt;  &lt;br /&gt;&lt;b&gt;DBString&lt;/b&gt; takes a string, wraps it in single quotes, doubles any internal quotes and replaces an empty string with NULL.  &lt;br /&gt;  &lt;br /&gt;&lt;b&gt;DBDate&lt;/b&gt; takes a date or a string and returns either NULL or a string formatted with the Oracle to_date function for this format: mm/dd/yyyy  &lt;br /&gt;  &lt;br /&gt;&lt;b&gt;DBDateTime&lt;/b&gt; takes a date and returns either NULL or a string formatting with the Oracle to_date function for this format: mm/dd/yyyy hh24:mi  &lt;br /&gt;  &lt;br /&gt;&lt;b&gt;DBNumber&lt;/b&gt; takes a string and returns either NULL (if it’s not a number) or the numeric value of the string. This is rarely used and might even be included in the framework somewhere by now.  &lt;br /&gt;  &lt;br /&gt;  &lt;hr /&gt;&lt;b&gt;Region: Database Helpers&lt;/b&gt;  &lt;br /&gt;Again, the intention is to isolate some database code and implement the rule of threes.  &lt;br /&gt;  &lt;br /&gt;&lt;b&gt;ExecuteNonQuery&lt;/b&gt; is a wrapper for the OleDBCommand object's method of the same name. It accepts a SQL statement (DML), an optional OleDBConnection and an optional OleDBTransaction.  &lt;br /&gt;  &lt;br /&gt;&lt;b&gt;GetDataTable&lt;/b&gt; is mostly a wrapper OleDBDataAdapter object's Fill method. It accepts a SQL statement and an optional OleDBConnection and returns a DataTable named Temp. It is often used inside other functions (e.g., New DataView()). Use .Rows(0) if you want to make sure you get a single DataRow.  &lt;br /&gt;  &lt;br /&gt;&lt;b&gt;AddDataTable&lt;/b&gt; is a &lt;i&gt;lot&lt;/i&gt; like GetDataTable but the resulting DataTable is put into a DataSet. It accepts a SQL statement, table name, DataSet, an optional OleDBConnection and an optional OleDBParameterCollection. This is a SUB, not a function. The passed-in DataSet will contain a new table, named what you've passed in. This is rarely used.  &lt;br /&gt;  &lt;br /&gt;&lt;b&gt;ExecuteScalar&lt;/b&gt; is a wrapper for the OleDBCommand object's method of the same name. It accepts a SQL statement and an optional OleDBConnection and returns the answer as a string. This is over-used. I suspect a good number of these could/should be combined into a single GetDataTable().Rows(0) but as requirements change, sometimes these are added into the code for expediency's sake.  &lt;br /&gt;  &lt;br /&gt;&lt;b&gt;GetNextVal&lt;/b&gt; gets the NextVal from an Oracle Sequence. It accepts the sequence name and an optional OleDBConnection. This is useful when you are about to save a parent record and need to know the ID to also save child record(s).  &lt;br /&gt;  &lt;br /&gt;&lt;b&gt;MaybeOpenConnection&lt;/b&gt; comes in two flavors - a Sub and a Function (which wraps the Sub). The Sub accepts an OleDBConnection and a boolean called CloseIt. The function accepts just the OleDBConnection and returns the boolean. If the OleDBConnection is Nothing, the boolean returns True, implying that the calling code should dispose the OleDBConnection when it's done. If the OleDBConnection is not Nothing, the boolean returns false, implying that the current context should NOT dispose OleDBConnection because it was already open. Most of the database helpers and BindToReaders use MaybeOpenConnection. It is very handy for BindGrid subs on pages - the first Page_Load would call BindGrid() but certain other calls which are already using an OleDBConnection can call BindGrid(cn) so as not to have to open a separate connection.  &lt;br /&gt;  &lt;br /&gt;  &lt;hr /&gt;  &lt;br /&gt;&lt;b&gt;Region: BindToReader&lt;/b&gt;  &lt;br /&gt;has several overloads of the same function for different control types. The intention is to isolate a good portion of the database code and implement the &lt;a href="http://cc2e.com/"&gt;rule of threes&lt;/a&gt;.  &lt;br /&gt;  &lt;br /&gt;BindToReader takes a SQL statement, a control and an optional OleDBConnection object. The version for DropDownList also takes an optional string for SpecialFirstItem (e.g., [ALL]).   &lt;br /&gt;  &lt;br /&gt;An alternative to the SQL statement, for standard lookup tables is to pass in “@obj” which will expand to “SELECT obj_id, obj_desc from obj_lkp where audt_del_dt is null. Of course, this assumes you have a table with those columns.   &lt;br /&gt;  &lt;br /&gt;The control types accepted are DropDownList, Repeater, BaseDataList (DataList, DataGrid) or ListControl (Checkboxlist, ListBox, RadioButtonList).   &lt;br /&gt;  &lt;br /&gt;  &lt;hr /&gt;  &lt;br /&gt;&lt;b&gt;Region: Miscellaneous&lt;/b&gt;  &lt;br /&gt;  &lt;br /&gt;&lt;b&gt;SelectItems&lt;/b&gt; handles pre-selecting items in CheckBoxLists and ListBoxes. Once you've done BindToReader to populate the items, SelectItems accepts a SQL statement, ListControl and optional OleDBConnection and selects all of the ListItems in the ListControl whose values match the IDs from the SQL statement. This is not used all that often but it's very handy when this is what you want done.  &lt;br /&gt;  &lt;br /&gt;&lt;b&gt;SendMail&lt;/b&gt; sends an email. It accepts a From Address, To Address, Subject and Body. While testing, you can put a EmailOverRideRecipient in web.config who will receive the emails instead of the normal recipient. The To Address string can alternately be a SQL select statement. The first column returned is used as the address, the second (if it exists) is used as the Display Name of the recipient. This Sub requires SMTPServer in web.config.  &lt;br /&gt;  &lt;br /&gt;&lt;b&gt;ControlToHTML&lt;/b&gt; is a wrapper for RenderControl. It is often used when exporting to Excel/Word when you would Request.Clear, then ControlToHTML(the control you want to export).  &lt;br /&gt;  &lt;br /&gt;  &lt;hr /&gt;  &lt;br /&gt;&lt;b&gt;Region: SimpleConversions&lt;/b&gt;  &lt;br /&gt;These are all &lt;i&gt;very&lt;/i&gt; small and some are rarely used, but they come in handy when this is what you want!  &lt;br /&gt;  &lt;br /&gt;&lt;b&gt;TF2YN&lt;/b&gt; accepts a boolean and returns a db-quoted string - 'Y' or 'N'.  &lt;br /&gt;&lt;b&gt;TF2YN&lt;/b&gt; accepts a checkbox and returns a db-quoted string - 'Y' or 'N'.  &lt;br /&gt;&lt;b&gt;YN2TF&lt;/b&gt; accepts a string (Y, y, N or N) and returns a boolean.  &lt;br /&gt;&lt;b&gt;IntToHex&lt;/b&gt; accepts a number and returns a string of it's Hex value. This is mostly for HTML color codes.  &lt;br /&gt;  &lt;br /&gt;  &lt;hr /&gt;  &lt;br /&gt;There are a few other Functions and Subs in Common but many of those have been commented out for years or are pretty rarely used.    &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2542912692751492802-4341034757629887289?l=stevebarronnet.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Stevebarronnet?a=BTGdi4fTelw:t-sECaOs5_w:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Stevebarronnet?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Stevebarronnet?a=BTGdi4fTelw:t-sECaOs5_w:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Stevebarronnet?i=BTGdi4fTelw:t-sECaOs5_w:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Stevebarronnet?a=BTGdi4fTelw:t-sECaOs5_w:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Stevebarronnet?i=BTGdi4fTelw:t-sECaOs5_w:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Stevebarronnet/~4/BTGdi4fTelw" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/Stevebarronnet/~3/BTGdi4fTelw/commonvb.html</link><author>noreply@blogger.com (Steve Barron)</author><thr:total>0</thr:total><feedburner:origLink>http://stevebarronnet.blogspot.com/2010/02/commonvb.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2542912692751492802.post-515578606019646688</guid><pubDate>Wed, 18 Mar 2009 00:12:00 +0000</pubDate><atom:updated>2010-02-07T05:30:40.088-08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">SmartPhone2003</category><title>SmartPhone 2003 Games</title><description>&lt;i&gt;This post was migrated from my old blog so it is still accessible to anyone who wants either the CABs or the ZIP containing the &lt;a href="http://www.stevebarron.net/downloads/SourceCode.ZIP"&gt;Source Code&lt;/a&gt; to all of the games.&lt;/i&gt;&lt;hr/&gt;&lt;br /&gt;&lt;table cellspacing="0" cellpadding="2" width="400" border="0"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top"&gt;&lt;a href="http://www.stevebarron.net/downloads/PokerSP_SMP.CAB"&gt;Poker         &lt;br /&gt;&lt;img src="http://www.stevebarron.net/downloads/PokerSP.PNG" /&gt;&lt;/a&gt;          &lt;br /&gt;No, it's not real gambling, but it is classic Video Poker for your Smartphone.&lt;/td&gt;        &lt;td valign="top"&gt; &lt;/td&gt;        &lt;td valign="top"&gt;&lt;a href="http://www.stevebarron.net/downloads/HoldEmSP_SMP.CAB"&gt;Hold 'Em           &lt;br /&gt;&lt;img src="http://www.stevebarron.net/downloads/HoldEmSP.PNG" /&gt;&lt;/a&gt;          &lt;br /&gt;Today's hottest Poker style - for your Smartphone.&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top"&gt;&lt;a href="http://www.stevebarron.net/downloads/HeadsUpHoldEmSP_SMP.CAB"&gt;Heads Up Hold 'Em           &lt;br /&gt;&lt;img src="http://www.stevebarron.net/downloads/HeadsUpHoldEmSP.PNG" /&gt;&lt;/a&gt;In Head's Up Hold 'em, you play against "Colin" the callin' fool. Best hand wins! &lt;/td&gt;        &lt;td valign="top"&gt; &lt;/td&gt;        &lt;td valign="top"&gt;        &lt;br /&gt;&lt;img title="royal" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="223" alt="royal" src="http://lh5.ggpht.com/_ppph-1DSO_8/ScvBXKpJ6VI/AAAAAAAAADM/rE_0WYu1dbw/royal%5B2%5D.png?imgmax=800" width="179" border="0" /&gt; Royals Happen!  :)&lt;a href="http://www.stevebarron.net/downloads/HeadsUpHoldEmSP_SMP.CAB"&gt;&lt;/a&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" colspan="3"&gt;         &lt;p&gt;OK, it's &lt;em&gt;very, very&lt;/em&gt; similar to my other Hold 'em, below, it just partially solves the fact that the original was scored against a standard Video Poker pay table.  This one is scored against another player.  The drawback?  He has no mind of his own and will always "call", or bet the same amount as you (and you are always on the big blind).  It's still not the same as playing against real people but it fits in your pocket!  :)&lt;/p&gt;          &lt;p&gt;Try them both and see which you like better!&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top"&gt;&lt;a href="http://www.stevebarron.net/downloads/LetsRideSP_SMP.CAB"&gt;Let's Ride           &lt;br /&gt;&lt;img src="http://www.stevebarron.net/downloads/LetsRideSP.PNG" /&gt;&lt;/a&gt;          &lt;br /&gt;Let it ride or pull it back with Let's Ride Poker for your Smartphone.&lt;/td&gt;        &lt;td valign="top"&gt; &lt;/td&gt;        &lt;td valign="top"&gt;&lt;a href="http://www.stevebarron.net/downloads/IslandPokerSP_SMP.CAB"&gt;Island Poker           &lt;br /&gt;&lt;img src="http://www.stevebarron.net/downloads/IslandPokerSP.PNG" /&gt;&lt;/a&gt;          &lt;br /&gt;Get a taste of the islands with Island Poker for your Smartphone.&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top"&gt;&lt;a href="http://www.stevebarron.net/downloads/YachtGameSP_SMP.CAB"&gt;Yacht Game           &lt;br /&gt;&lt;img src="http://www.stevebarron.net/downloads/YachtGameSP.PNG" /&gt;&lt;/a&gt;Popular dice game, invented by some bored yacht owners - now for your Smartphone.&lt;/td&gt;        &lt;td valign="top"&gt; &lt;/td&gt;        &lt;td valign="top"&gt;&lt;a href="http://www.stevebarron.net/downloads/BlackCatSP_SMP.CAB"&gt;Black Cat           &lt;br /&gt;&lt;img src="http://www.stevebarron.net/downloads/BlackCatSP.PNG" /&gt;&lt;/a&gt;          &lt;br /&gt;If you like Red Dog, you'll love Black Cat for your Smartphone.&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2542912692751492802-515578606019646688?l=stevebarronnet.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Stevebarronnet?a=oRrawr8S8T0:3rn6vTDh44Y:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Stevebarronnet?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Stevebarronnet?a=oRrawr8S8T0:3rn6vTDh44Y:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Stevebarronnet?i=oRrawr8S8T0:3rn6vTDh44Y:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Stevebarronnet?a=oRrawr8S8T0:3rn6vTDh44Y:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Stevebarronnet?i=oRrawr8S8T0:3rn6vTDh44Y:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Stevebarronnet/~4/oRrawr8S8T0" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/Stevebarronnet/~3/oRrawr8S8T0/poker-smartphone-2003.html</link><author>noreply@blogger.com (Steve Barron)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh5.ggpht.com/_ppph-1DSO_8/ScvBXKpJ6VI/AAAAAAAAADM/rE_0WYu1dbw/s72-c/royal%5B2%5D.png?imgmax=800" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://stevebarronnet.blogspot.com/2009/03/poker-smartphone-2003.html</feedburner:origLink></item></channel></rss>

