<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0">
  <channel>
    <title>.NET Ramblings - Brian Noyes' Blog - Data Binding</title>
    <link>http://www.softinsight.com/bnoyes/</link>
    <description>Occasional mutterings on .NET architecture and development</description>
    <language>en-us</language>
    <copyright>Brian Noyes</copyright>
    <lastBuildDate>Fri, 10 Nov 2006 02:02:33 GMT</lastBuildDate>
    <generator>newtelligence dasBlog 2.0.7226.0</generator>
    <managingEditor>brian@softinsight.com</managingEditor>
    <webMaster>brian@softinsight.com</webMaster>
    <item>
      <trackback:ping>http://www.softinsight.com/bnoyes/Trackback.aspx?guid=a0e9b379-5eab-4385-a4a0-069b28f39fa0</trackback:ping>
      <pingback:server>http://www.softinsight.com/bnoyes/pingback.aspx</pingback:server>
      <pingback:target>http://www.softinsight.com/bnoyes/PermaLink,guid,a0e9b379-5eab-4385-a4a0-069b28f39fa0.aspx</pingback:target>
      <dc:creator />
      <wfw:comment>http://www.softinsight.com/bnoyes/CommentView,guid,a0e9b379-5eab-4385-a4a0-069b28f39fa0.aspx</wfw:comment>
      <wfw:commentRss>http://www.softinsight.com/bnoyes/SyndicationService.asmx/GetEntryCommentsRss?guid=a0e9b379-5eab-4385-a4a0-069b28f39fa0</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Another great conference complete. Around 5000 showed up and we had great feedback
from the crowd that it was a good show. If you haven't been to connections before,
you really should check it out.
</p>
        <p>
I gave three talks this week. You can get the slides and demos for each below.
</p>
        <p>
Real World ClickOnce:  <a href="http://www.softinsight.com/downloads/Conferences/DevConnections/VDP301_RealWorldClickOnce.pdf">Slides</a>   <a href="http://www.softinsight.com/downloads/Conferences/DevConnections/RealWorldClickOnceDemos.zip">Demos</a><br />
Workflow Driven Windows Applications:  <a href="http://www.softinsight.com/downloads/Conferences/DevConnections/VWX301_WorkflowDrivenWindowsApplications.pdf">Slides</a>   <a href="http://www.softinsight.com/downloads/Conferences/DevConnections/WorkflowWindowsAppDemos.zip">Demos</a><br />
Implement a Data Layer with the VS 2005 DataSet Designer:  <a href="http://www.softinsight.com/downloads/Conferences/DevConnections/VDA302_ImplementDataLayerwithDataSetDesigner.pdf">Slides</a>   <a href="http://www.softinsight.com/downloads/Conferences/DevConnections/DataSetDesignerDemos.zip">Demos</a></p>
        <img width="0" height="0" src="http://www.softinsight.com/bnoyes/aggbug.ashx?id=a0e9b379-5eab-4385-a4a0-069b28f39fa0" />
      </body>
      <title>DevConnections Vegas Slides and Demos</title>
      <guid isPermaLink="false">http://www.softinsight.com/bnoyes/PermaLink,guid,a0e9b379-5eab-4385-a4a0-069b28f39fa0.aspx</guid>
      <link>http://www.softinsight.com/bnoyes/2006/11/10/DevConnectionsVegasSlidesAndDemos.aspx</link>
      <pubDate>Fri, 10 Nov 2006 02:02:33 GMT</pubDate>
      <description>&lt;p&gt;
Another great conference complete. Around 5000 showed up and we had great feedback
from the crowd that it was a good show. If you haven't been to connections before,
you really should check it out.
&lt;/p&gt;
&lt;p&gt;
I gave three talks this week. You can get the slides and demos for each below.
&lt;/p&gt;
&lt;p&gt;
Real World ClickOnce:&amp;nbsp; &lt;a href="http://www.softinsight.com/downloads/Conferences/DevConnections/VDP301_RealWorldClickOnce.pdf"&gt;Slides&lt;/a&gt;&amp;nbsp;&amp;nbsp; &lt;a href="http://www.softinsight.com/downloads/Conferences/DevConnections/RealWorldClickOnceDemos.zip"&gt;Demos&lt;/a&gt;
&lt;br&gt;
Workflow Driven Windows Applications:&amp;nbsp; &lt;a href="http://www.softinsight.com/downloads/Conferences/DevConnections/VWX301_WorkflowDrivenWindowsApplications.pdf"&gt;Slides&lt;/a&gt;&amp;nbsp;&amp;nbsp; &lt;a href="http://www.softinsight.com/downloads/Conferences/DevConnections/WorkflowWindowsAppDemos.zip"&gt;Demos&lt;/a&gt;
&lt;br&gt;
Implement a Data Layer with the VS 2005 DataSet Designer:&amp;nbsp; &lt;a href="http://www.softinsight.com/downloads/Conferences/DevConnections/VDA302_ImplementDataLayerwithDataSetDesigner.pdf"&gt;Slides&lt;/a&gt;&amp;nbsp;&amp;nbsp; &lt;a href="http://www.softinsight.com/downloads/Conferences/DevConnections/DataSetDesignerDemos.zip"&gt;Demos&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.softinsight.com/bnoyes/aggbug.ashx?id=a0e9b379-5eab-4385-a4a0-069b28f39fa0" /&gt;</description>
      <comments>http://www.softinsight.com/bnoyes/CommentView,guid,a0e9b379-5eab-4385-a4a0-069b28f39fa0.aspx</comments>
      <category>.NET</category>
      <category>.NET 3.0</category>
      <category>Architecture</category>
      <category>ClickOnce</category>
      <category>Data Binding</category>
      <category>DevConnections</category>
      <category>Speaking</category>
    </item>
    <item>
      <trackback:ping>http://www.softinsight.com/bnoyes/Trackback.aspx?guid=bc8e5311-b46c-4164-8ad2-aebe8bd46851</trackback:ping>
      <pingback:server>http://www.softinsight.com/bnoyes/pingback.aspx</pingback:server>
      <pingback:target>http://www.softinsight.com/bnoyes/PermaLink,guid,bc8e5311-b46c-4164-8ad2-aebe8bd46851.aspx</pingback:target>
      <dc:creator />
      <wfw:comment>http://www.softinsight.com/bnoyes/CommentView,guid,bc8e5311-b46c-4164-8ad2-aebe8bd46851.aspx</wfw:comment>
      <wfw:commentRss>http://www.softinsight.com/bnoyes/SyndicationService.asmx/GetEntryCommentsRss?guid=bc8e5311-b46c-4164-8ad2-aebe8bd46851</wfw:commentRss>
      <slash:comments>2</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Bookpool.com is doing a special discount promotion of my Data Binding with Windows
Forms book:
</p>
        <p>
          <a title="http://www.bookpool.com/ct/214" href="http://www.bookpool.com/ct/214">
            <font face="Arial">http://www.bookpool.com/ct/214</font>
          </a>
        </p>
        <p>
If you haven't picked up a copy yet, here is a chance to save some bucks off the usual
price.
</p>
        <img width="0" height="0" src="http://www.softinsight.com/bnoyes/aggbug.ashx?id=bc8e5311-b46c-4164-8ad2-aebe8bd46851" />
      </body>
      <title>Get it while it is cheap - Data Binding with Windows Forms 2.0 promotion</title>
      <guid isPermaLink="false">http://www.softinsight.com/bnoyes/PermaLink,guid,bc8e5311-b46c-4164-8ad2-aebe8bd46851.aspx</guid>
      <link>http://www.softinsight.com/bnoyes/2006/08/15/GetItWhileItIsCheapDataBindingWithWindowsForms20Promotion.aspx</link>
      <pubDate>Tue, 15 Aug 2006 16:24:27 GMT</pubDate>
      <description>&lt;p&gt;
Bookpool.com is doing a special discount promotion of my Data Binding with Windows
Forms book:
&lt;/p&gt;
&lt;p&gt;
&lt;a title=http://www.bookpool.com/ct/214 href="http://www.bookpool.com/ct/214"&gt;&lt;font face=Arial&gt;http://www.bookpool.com/ct/214&lt;/font&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
If you haven't picked up a copy yet, here is a chance to save some bucks off the usual
price.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.softinsight.com/bnoyes/aggbug.ashx?id=bc8e5311-b46c-4164-8ad2-aebe8bd46851" /&gt;</description>
      <comments>http://www.softinsight.com/bnoyes/CommentView,guid,bc8e5311-b46c-4164-8ad2-aebe8bd46851.aspx</comments>
      <category>.NET</category>
      <category>Data Binding</category>
    </item>
    <item>
      <trackback:ping>http://www.softinsight.com/bnoyes/Trackback.aspx?guid=038d48d3-62d1-4b61-a0b9-6d58698d1cd5</trackback:ping>
      <pingback:server>http://www.softinsight.com/bnoyes/pingback.aspx</pingback:server>
      <pingback:target>http://www.softinsight.com/bnoyes/PermaLink,guid,038d48d3-62d1-4b61-a0b9-6d58698d1cd5.aspx</pingback:target>
      <dc:creator />
      <wfw:comment>http://www.softinsight.com/bnoyes/CommentView,guid,038d48d3-62d1-4b61-a0b9-6d58698d1cd5.aspx</wfw:comment>
      <wfw:commentRss>http://www.softinsight.com/bnoyes/SyndicationService.asmx/GetEntryCommentsRss?guid=038d48d3-62d1-4b61-a0b9-6d58698d1cd5</wfw:commentRss>
      <slash:comments>2</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
For those who attended, or those who just want the materials, here are the slides
and demos from today's MSDN Webcast:
</p>
        <p>
Slides: <a href="http://www.softinsight.com/downloads/MSDNWebcasts/SmartClientDataApplications_Jul06.pdf">http://www.softinsight.com/downloads/MSDNWebcasts/SmartClientDataApplications_Jul06.pdf</a></p>
        <p>
Demos:<a href="http://www.softinsight.com/downloads/MSDNWebcasts/SmartClientDataAppsDemos_Jul06.zip">http://www.softinsight.com/downloads/MSDNWebcasts/SmartClientDataAppsDemos_Jul06.zip</a></p>
        <p>
 
</p>
        <img width="0" height="0" src="http://www.softinsight.com/bnoyes/aggbug.ashx?id=038d48d3-62d1-4b61-a0b9-6d58698d1cd5" />
      </body>
      <title>Slides and demos from MSDN Webcast: Build Smart Client Data Applications with Windows Forms 2.0</title>
      <guid isPermaLink="false">http://www.softinsight.com/bnoyes/PermaLink,guid,038d48d3-62d1-4b61-a0b9-6d58698d1cd5.aspx</guid>
      <link>http://www.softinsight.com/bnoyes/2006/07/07/SlidesAndDemosFromMSDNWebcastBuildSmartClientDataApplicationsWithWindowsForms20.aspx</link>
      <pubDate>Fri, 07 Jul 2006 17:31:57 GMT</pubDate>
      <description>&lt;p&gt;
For those who attended, or those who just want the materials, here are the slides
and demos from today's MSDN Webcast:
&lt;/p&gt;
&lt;p&gt;
Slides: &lt;a href="http://www.softinsight.com/downloads/MSDNWebcasts/SmartClientDataApplications_Jul06.pdf"&gt;http://www.softinsight.com/downloads/MSDNWebcasts/SmartClientDataApplications_Jul06.pdf&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Demos:&lt;a href="http://www.softinsight.com/downloads/MSDNWebcasts/SmartClientDataAppsDemos_Jul06.zip"&gt;http://www.softinsight.com/downloads/MSDNWebcasts/SmartClientDataAppsDemos_Jul06.zip&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.softinsight.com/bnoyes/aggbug.ashx?id=038d48d3-62d1-4b61-a0b9-6d58698d1cd5" /&gt;</description>
      <comments>http://www.softinsight.com/bnoyes/CommentView,guid,038d48d3-62d1-4b61-a0b9-6d58698d1cd5.aspx</comments>
      <category>.NET</category>
      <category>Community</category>
      <category>Data Binding</category>
      <category>Speaking</category>
    </item>
    <item>
      <trackback:ping>http://www.softinsight.com/bnoyes/Trackback.aspx?guid=c34df3c8-8129-4b24-ab89-890fa9540603</trackback:ping>
      <pingback:server>http://www.softinsight.com/bnoyes/pingback.aspx</pingback:server>
      <pingback:target>http://www.softinsight.com/bnoyes/PermaLink,guid,c34df3c8-8129-4b24-ab89-890fa9540603.aspx</pingback:target>
      <dc:creator />
      <wfw:comment>http://www.softinsight.com/bnoyes/CommentView,guid,c34df3c8-8129-4b24-ab89-890fa9540603.aspx</wfw:comment>
      <wfw:commentRss>http://www.softinsight.com/bnoyes/SyndicationService.asmx/GetEntryCommentsRss?guid=c34df3c8-8129-4b24-ab89-890fa9540603</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
It was a crazy week at TechEd last week. So crazy, no time to write or consume blogs.
I gave two breakout sessions (Real World ClickOnce and Windows Forms: Build Enterprise
Ready Forms Applications) and a Birds of Feather session (Windows Workflow Foundation).
</p>
        <p>
You can get the slides and demos from the sessions here:
</p>
        <p>
Real World ClickOnce:  <a href="http://www.softinsight.com/downloads/Conferences/TechEd06/DEV318__RealWorldClickOnce.pdf">Slides</a>   <a href="http://www.softinsight.com/downloads/Conferences/TechEd06/RealWorldClickOnceDemos.zip">Demos</a></p>
        <p>
Windows Forms: Build Enterprise Ready Forms Applications:  <a href="http://www.softinsight.com/downloads/Conferences/TechEd06/DEV332__BuildEnterpriseReadyFormsApps.pdf">Slides</a>   <a href="http://www.softinsight.com/downloads/Conferences/TechEd06/EnterpriseFormsApplicationsDemos.zip">Demos</a></p>
        <p>
 
</p>
        <img width="0" height="0" src="http://www.softinsight.com/bnoyes/aggbug.ashx?id=c34df3c8-8129-4b24-ab89-890fa9540603" />
      </body>
      <title>Another TechEd Complete - Slides and Demos</title>
      <guid isPermaLink="false">http://www.softinsight.com/bnoyes/PermaLink,guid,c34df3c8-8129-4b24-ab89-890fa9540603.aspx</guid>
      <link>http://www.softinsight.com/bnoyes/2006/06/19/AnotherTechEdCompleteSlidesAndDemos.aspx</link>
      <pubDate>Mon, 19 Jun 2006 13:27:37 GMT</pubDate>
      <description>&lt;p&gt;
It was a crazy week at TechEd last week. So crazy, no time to write or consume blogs.
I gave two breakout sessions (Real World ClickOnce and Windows Forms: Build Enterprise
Ready Forms Applications) and a Birds of Feather session (Windows Workflow Foundation).
&lt;/p&gt;
&lt;p&gt;
You can get the slides and demos from the sessions here:
&lt;/p&gt;
&lt;p&gt;
Real World ClickOnce:&amp;nbsp; &lt;a href="http://www.softinsight.com/downloads/Conferences/TechEd06/DEV318__RealWorldClickOnce.pdf"&gt;Slides&lt;/a&gt;&amp;nbsp;&amp;nbsp; &lt;a href="http://www.softinsight.com/downloads/Conferences/TechEd06/RealWorldClickOnceDemos.zip"&gt;Demos&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Windows Forms: Build Enterprise Ready Forms Applications:&amp;nbsp; &lt;a href="http://www.softinsight.com/downloads/Conferences/TechEd06/DEV332__BuildEnterpriseReadyFormsApps.pdf"&gt;Slides&lt;/a&gt;&amp;nbsp;&amp;nbsp; &lt;a href="http://www.softinsight.com/downloads/Conferences/TechEd06/EnterpriseFormsApplicationsDemos.zip"&gt;Demos&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.softinsight.com/bnoyes/aggbug.ashx?id=c34df3c8-8129-4b24-ab89-890fa9540603" /&gt;</description>
      <comments>http://www.softinsight.com/bnoyes/CommentView,guid,c34df3c8-8129-4b24-ab89-890fa9540603.aspx</comments>
      <category>.NET</category>
      <category>ClickOnce</category>
      <category>Data Binding</category>
      <category>Languages and Tools</category>
      <category>Speaking</category>
    </item>
    <item>
      <trackback:ping>http://www.softinsight.com/bnoyes/Trackback.aspx?guid=3210b58c-0bec-42cf-ac73-7cc6e5c8a229</trackback:ping>
      <pingback:server>http://www.softinsight.com/bnoyes/pingback.aspx</pingback:server>
      <pingback:target>http://www.softinsight.com/bnoyes/PermaLink,guid,3210b58c-0bec-42cf-ac73-7cc6e5c8a229.aspx</pingback:target>
      <dc:creator />
      <wfw:comment>http://www.softinsight.com/bnoyes/CommentView,guid,3210b58c-0bec-42cf-ac73-7cc6e5c8a229.aspx</wfw:comment>
      <wfw:commentRss>http://www.softinsight.com/bnoyes/SyndicationService.asmx/GetEntryCommentsRss?guid=3210b58c-0bec-42cf-ac73-7cc6e5c8a229</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
I gave four talks at the Software Developers Conference in Netherlands this week.
This is a very fun and interesting conference that is put on by a large user group
organization called Software Developers Network, run by Remi Caron and Joop Pecht.
</p>
        <p>
This conference is one of the most enjoyable conferences I get to do anywhere in the
world. It is amazing how professional and well run this conference is, especially
when you consider that it is being put on by a user group organization and it is better
run than many U.S. conferences put on by companies that are supposed to specialize
in this kind of event. All of the user group members that run the conference are volunteers,
and yet the quality and professionalism that comes out of that is outstanding.
</p>
        <p>
The attendees are hard core, ask great questions, and make the event fun for the speakers
as well. For those of you who attended and find your way to this post for the slides
and demos - thanks! 
</p>
        <p>
You can grab the slides and demos here:
</p>
        <p>
Build Smart Client Data Apps with Windows Forms 2.0:  <a href="http://www.softinsight.com/downloads/Conferences/SDC06/BuildSmartClientDataApplicationswithWindowsForms2.0.pdf">Slides</a>   <a href="http://www.softinsight.com/downloads/Conferences/SDC06/SmartClientDataAppsDemos.zip">Demos</a><br />
Build Custom Data Bound Objects and Collections:  <a href="http://www.softinsight.com/downloads/Conferences/SDC06/BuildCustomDataBoundBusinessObjectsandCollections.pdf">Slides</a>   <a href="http://www.softinsight.com/downloads/Conferences/SDC06/CustomBoundObjectsDemos.zip">Demos</a><br />
Present Rich Tabular Data with the DataGridView Control:  <a href="http://www.softinsight.com/downloads/Conferences/SDC06/PresentRichDataInterfaceswiththeDataGridViewControl.pdf">Slides</a>   <a href="http://www.softinsight.com/downloads/Conferences/SDC06/DataGRidViewDemos.zip">Demos</a><br />
Drive Application Behavior with Application and User Settings:  <a href="http://www.softinsight.com/downloads/Conferences/SDC06/DriveApplicationBehaviorwithApplicationandUserConfigurationSettings.pdf">Slides</a>   <a href="http://www.softinsight.com/downloads/Conferences/SDC06/ApplicationAndUserSettingsDemos.zip">Demos</a></p>
        <img width="0" height="0" src="http://www.softinsight.com/bnoyes/aggbug.ashx?id=3210b58c-0bec-42cf-ac73-7cc6e5c8a229" />
      </body>
      <title>Slides and Demos from SDC Netherlands</title>
      <guid isPermaLink="false">http://www.softinsight.com/bnoyes/PermaLink,guid,3210b58c-0bec-42cf-ac73-7cc6e5c8a229.aspx</guid>
      <link>http://www.softinsight.com/bnoyes/2006/05/20/SlidesAndDemosFromSDCNetherlands.aspx</link>
      <pubDate>Sat, 20 May 2006 13:35:03 GMT</pubDate>
      <description>&lt;p&gt;
I gave four talks at the Software Developers Conference in Netherlands this week.
This is a very fun and interesting conference that is put on by a large user group
organization called Software Developers Network, run by Remi Caron and Joop Pecht.
&lt;/p&gt;
&lt;p&gt;
This conference is one of the most enjoyable conferences I get to do anywhere in the
world. It is amazing how professional and well run this conference is, especially
when you consider that it is being put on by a user group organization and it is better
run than many U.S. conferences put on by companies that are supposed to specialize
in this kind of event. All of the user group members that run the conference are volunteers,
and yet the quality and professionalism that comes out of that is outstanding.
&lt;/p&gt;
&lt;p&gt;
The attendees are hard core, ask great questions, and make the event fun for the speakers
as well. For those of you who attended and find your way to this post for the slides
and demos - thanks! 
&lt;/p&gt;
&lt;p&gt;
You can grab the slides and demos here:
&lt;/p&gt;
&lt;p&gt;
Build Smart Client Data Apps with Windows Forms 2.0:&amp;nbsp; &lt;a href="http://www.softinsight.com/downloads/Conferences/SDC06/BuildSmartClientDataApplicationswithWindowsForms2.0.pdf"&gt;Slides&lt;/a&gt;&amp;nbsp;&amp;nbsp; &lt;a href="http://www.softinsight.com/downloads/Conferences/SDC06/SmartClientDataAppsDemos.zip"&gt;Demos&lt;/a&gt;
&lt;br&gt;
Build Custom Data Bound Objects and Collections:&amp;nbsp; &lt;a href="http://www.softinsight.com/downloads/Conferences/SDC06/BuildCustomDataBoundBusinessObjectsandCollections.pdf"&gt;Slides&lt;/a&gt;&amp;nbsp;&amp;nbsp; &lt;a href="http://www.softinsight.com/downloads/Conferences/SDC06/CustomBoundObjectsDemos.zip"&gt;Demos&lt;/a&gt;
&lt;br&gt;
Present Rich Tabular Data with the DataGridView Control:&amp;nbsp; &lt;a href="http://www.softinsight.com/downloads/Conferences/SDC06/PresentRichDataInterfaceswiththeDataGridViewControl.pdf"&gt;Slides&lt;/a&gt;&amp;nbsp;&amp;nbsp; &lt;a href="http://www.softinsight.com/downloads/Conferences/SDC06/DataGRidViewDemos.zip"&gt;Demos&lt;/a&gt;
&lt;br&gt;
Drive Application Behavior with Application and User Settings:&amp;nbsp; &lt;a href="http://www.softinsight.com/downloads/Conferences/SDC06/DriveApplicationBehaviorwithApplicationandUserConfigurationSettings.pdf"&gt;Slides&lt;/a&gt;&amp;nbsp;&amp;nbsp; &lt;a href="http://www.softinsight.com/downloads/Conferences/SDC06/ApplicationAndUserSettingsDemos.zip"&gt;Demos&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.softinsight.com/bnoyes/aggbug.ashx?id=3210b58c-0bec-42cf-ac73-7cc6e5c8a229" /&gt;</description>
      <comments>http://www.softinsight.com/bnoyes/CommentView,guid,3210b58c-0bec-42cf-ac73-7cc6e5c8a229.aspx</comments>
      <category>.NET</category>
      <category>ClickOnce</category>
      <category>Community</category>
      <category>Data Binding</category>
      <category>Languages and Tools</category>
      <category>Speaking</category>
      <category>Travel</category>
    </item>
    <item>
      <trackback:ping>http://www.softinsight.com/bnoyes/Trackback.aspx?guid=805946c3-ae07-49e2-8ae9-e85ac67ecfb5</trackback:ping>
      <pingback:server>http://www.softinsight.com/bnoyes/pingback.aspx</pingback:server>
      <pingback:target>http://www.softinsight.com/bnoyes/PermaLink,guid,805946c3-ae07-49e2-8ae9-e85ac67ecfb5.aspx</pingback:target>
      <dc:creator />
      <wfw:comment>http://www.softinsight.com/bnoyes/CommentView,guid,805946c3-ae07-49e2-8ae9-e85ac67ecfb5.aspx</wfw:comment>
      <wfw:commentRss>http://www.softinsight.com/bnoyes/SyndicationService.asmx/GetEntryCommentsRss?guid=805946c3-ae07-49e2-8ae9-e85ac67ecfb5</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
I spoke at DevTeach  in Montreal Tue-Thu of this week and had a great time as
always. If you haven't checked out this conference, you should plan on signing up
next year. Great location, great speakers, very well done conference with lots of
hard core sessions.
</p>
        <p>
If you attended one of my sessions and want to get the slides and demos, here you
go:
</p>
        <p>
NET371 - Drive App Behavior with Application and User Settings:  <a href="http://www.softinsight.com/downloads/Conferences/DevTeach/NET371_AppAndUserSettings.pdf">Slides</a>   <a href="http://www.softinsight.com/downloads/Conferences/DevTeach/NET371_AppAndUserSettingsDemos.zip">Demos</a></p>
        <p>
NET391 - Custom Bound Objects and Collections:  <a href="http://www.softinsight.com/downloads/Conferences/DevTeach/NET391_CustomBoundObjects.pdf">Slides</a>   <a href="http://www.softinsight.com/downloads/Conferences/DevTeach/NET391_CustomBoundObjectsDemos.zip">Demos</a></p>
        <p>
NET463 - Advanced ClickOnce:  <a href="http://www.softinsight.com/downloads/Conferences/DevTeach/NET463_AdvancedClickOnce.pdf">Slides</a>   <a href="http://www.softinsight.com/downloads/Conferences/DevTeach/NET463_AdvancedClickOnceDemos.zip">Demos</a></p>
        <p>
MusicLibrary Database Creation Script:   <a href="http://www.softinsight.com/downloads/Conferences/DevTeach/MusicLibrary.sql">Script</a></p>
        <img width="0" height="0" src="http://www.softinsight.com/bnoyes/aggbug.ashx?id=805946c3-ae07-49e2-8ae9-e85ac67ecfb5" />
      </body>
      <title>DevTeach Slides and Demos</title>
      <guid isPermaLink="false">http://www.softinsight.com/bnoyes/PermaLink,guid,805946c3-ae07-49e2-8ae9-e85ac67ecfb5.aspx</guid>
      <link>http://www.softinsight.com/bnoyes/2006/05/13/DevTeachSlidesAndDemos.aspx</link>
      <pubDate>Sat, 13 May 2006 17:09:02 GMT</pubDate>
      <description>&lt;p&gt;
I spoke at DevTeach&amp;nbsp; in Montreal Tue-Thu of this week and had a great time as
always. If you haven't checked out this conference, you should plan on signing up
next year. Great location, great speakers, very well done conference with lots of
hard core sessions.
&lt;/p&gt;
&lt;p&gt;
If you attended one of my sessions and want to get the slides and demos, here you
go:
&lt;/p&gt;
&lt;p&gt;
NET371 - Drive App Behavior with Application and User Settings:&amp;nbsp; &lt;a href="http://www.softinsight.com/downloads/Conferences/DevTeach/NET371_AppAndUserSettings.pdf"&gt;Slides&lt;/a&gt;&amp;nbsp;&amp;nbsp; &lt;a href="http://www.softinsight.com/downloads/Conferences/DevTeach/NET371_AppAndUserSettingsDemos.zip"&gt;Demos&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
NET391 - Custom Bound Objects and Collections:&amp;nbsp; &lt;a href="http://www.softinsight.com/downloads/Conferences/DevTeach/NET391_CustomBoundObjects.pdf"&gt;Slides&lt;/a&gt;&amp;nbsp;&amp;nbsp; &lt;a href="http://www.softinsight.com/downloads/Conferences/DevTeach/NET391_CustomBoundObjectsDemos.zip"&gt;Demos&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
NET463 - Advanced ClickOnce:&amp;nbsp; &lt;a href="http://www.softinsight.com/downloads/Conferences/DevTeach/NET463_AdvancedClickOnce.pdf"&gt;Slides&lt;/a&gt;&amp;nbsp;&amp;nbsp; &lt;a href="http://www.softinsight.com/downloads/Conferences/DevTeach/NET463_AdvancedClickOnceDemos.zip"&gt;Demos&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
MusicLibrary Database Creation Script:&amp;nbsp;&amp;nbsp; &lt;a href="http://www.softinsight.com/downloads/Conferences/DevTeach/MusicLibrary.sql"&gt;Script&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.softinsight.com/bnoyes/aggbug.ashx?id=805946c3-ae07-49e2-8ae9-e85ac67ecfb5" /&gt;</description>
      <comments>http://www.softinsight.com/bnoyes/CommentView,guid,805946c3-ae07-49e2-8ae9-e85ac67ecfb5.aspx</comments>
      <category>.NET</category>
      <category>ClickOnce</category>
      <category>Community</category>
      <category>Data Binding</category>
      <category>Languages and Tools</category>
      <category>Speaking</category>
      <category>Travel</category>
    </item>
    <item>
      <trackback:ping>http://www.softinsight.com/bnoyes/Trackback.aspx?guid=ec7ef166-caf7-481f-b32c-c1ad983225e8</trackback:ping>
      <pingback:server>http://www.softinsight.com/bnoyes/pingback.aspx</pingback:server>
      <pingback:target>http://www.softinsight.com/bnoyes/PermaLink,guid,ec7ef166-caf7-481f-b32c-c1ad983225e8.aspx</pingback:target>
      <dc:creator />
      <wfw:comment>http://www.softinsight.com/bnoyes/CommentView,guid,ec7ef166-caf7-481f-b32c-c1ad983225e8.aspx</wfw:comment>
      <wfw:commentRss>http://www.softinsight.com/bnoyes/SyndicationService.asmx/GetEntryCommentsRss?guid=ec7ef166-caf7-481f-b32c-c1ad983225e8</wfw:commentRss>
      <slash:comments>1</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
I gave a talk on Data Binding with Windows Forms 2.0 at the San Diego .NET Developers
Group on Tuesday 7 Mar. 
</p>
        <p>
Here are the slides and demos:  <a href="http://www.softinsight.com/downloads/INETA/DataBindingwithWindowsForms2.0_Feb06.pdf">Slides</a>   <a href="http://www.softinsight.com/downloads/INETA/DataBindingWithWindowsFormsDemos_Mar06.zip">Demos</a></p>
        <img width="0" height="0" src="http://www.softinsight.com/bnoyes/aggbug.ashx?id=ec7ef166-caf7-481f-b32c-c1ad983225e8" />
      </body>
      <title>Data Binding Talk in San Diego - Slides and Demos</title>
      <guid isPermaLink="false">http://www.softinsight.com/bnoyes/PermaLink,guid,ec7ef166-caf7-481f-b32c-c1ad983225e8.aspx</guid>
      <link>http://www.softinsight.com/bnoyes/2006/03/13/DataBindingTalkInSanDiegoSlidesAndDemos.aspx</link>
      <pubDate>Mon, 13 Mar 2006 06:30:14 GMT</pubDate>
      <description>&lt;p&gt;
I gave a talk on Data Binding with Windows Forms 2.0 at the San Diego .NET Developers
Group on Tuesday 7 Mar. 
&lt;/p&gt;
&lt;p&gt;
Here are the slides and demos:&amp;nbsp; &lt;a href="http://www.softinsight.com/downloads/INETA/DataBindingwithWindowsForms2.0_Feb06.pdf"&gt;Slides&lt;/a&gt;&amp;nbsp;&amp;nbsp; &lt;a href="http://www.softinsight.com/downloads/INETA/DataBindingWithWindowsFormsDemos_Mar06.zip"&gt;Demos&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.softinsight.com/bnoyes/aggbug.ashx?id=ec7ef166-caf7-481f-b32c-c1ad983225e8" /&gt;</description>
      <comments>http://www.softinsight.com/bnoyes/CommentView,guid,ec7ef166-caf7-481f-b32c-c1ad983225e8.aspx</comments>
      <category>.NET</category>
      <category>Community</category>
      <category>Data Binding</category>
      <category>Languages and Tools</category>
      <category>Speaking</category>
    </item>
    <item>
      <trackback:ping>http://www.softinsight.com/bnoyes/Trackback.aspx?guid=64275c83-d7af-4a19-b4f7-593146ab415f</trackback:ping>
      <pingback:server>http://www.softinsight.com/bnoyes/pingback.aspx</pingback:server>
      <pingback:target>http://www.softinsight.com/bnoyes/PermaLink,guid,64275c83-d7af-4a19-b4f7-593146ab415f.aspx</pingback:target>
      <dc:creator />
      <wfw:comment>http://www.softinsight.com/bnoyes/CommentView,guid,64275c83-d7af-4a19-b4f7-593146ab415f.aspx</wfw:comment>
      <wfw:commentRss>http://www.softinsight.com/bnoyes/SyndicationService.asmx/GetEntryCommentsRss?guid=64275c83-d7af-4a19-b4f7-593146ab415f</wfw:commentRss>
      <slash:comments>4</slash:comments>
      <title>What to do when BindingNavigator Raises Exception on AddNew</title>
      <guid isPermaLink="false">http://www.softinsight.com/bnoyes/PermaLink,guid,64275c83-d7af-4a19-b4f7-593146ab415f.aspx</guid>
      <link>http://www.softinsight.com/bnoyes/2006/02/27/WhatToDoWhenBindingNavigatorRaisesExceptionOnAddNew.aspx</link>
      <pubDate>Mon, 27 Feb 2006 18:29:04 GMT</pubDate>
      <description>&lt;p&gt;
I got a great question from a reader recently. It's essence reads like this:
&lt;/p&gt;
&lt;p&gt;
If I set up drag and drop data binding to a table that has non-nullable columns, and
then press the Add New button twice in the BindingNavigator, I get an unhandled exception
on the thread. Since all of the code involved in that call chain is in .NET code and
assemblies, how can I handle the exception to keep it from blowing up my app?
&lt;/p&gt;
&lt;p&gt;
If you are not already familiar, to get to this point, you have to create a data bound
UI using the Data Sources window, or by hooking up the controls manually. What you
end up with after dragging a collection from the Data Sources window onto a form is:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
A DataGridView or Details form of individual controls&lt;/li&gt;
&lt;li&gt;
A BindingSource component that is set as the data source of the grid or the individual
controls&lt;/li&gt;
&lt;li&gt;
A BindingNavigator control that is hooked up to the BindingSource component.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
If your data source is a typed data set in the same project, you also get a table
adapter instance and data set instance as members on the form, and a Form.Load event
handler that fills the appropriate table of the data set so that the app functions
without any hand written code. If your data source is coming from a different assembly
(an Object data source), then it will be up to you to go retrieve an instance of the
collection type and set it as the DataSource property on the BindingSource at runtime
to complete the data binding chain.
&lt;/p&gt;
&lt;p&gt;
The way the BindingNavigator gets hooked up, it just points to the BindingSource component
and uses the API exposed by a BindingSource to navigate forward and back and to add
and delete items from the underlying collection. When you press the Add New button
on the BindingNavigator, it calls the AddNew method on BindingSource. The BindingSource
passes the call to the underlying collection if it implements the IBindingList interface.
Calling AddNew usually also implicitly calls EndEdit on the current item if that item
type implements the IEditableObject interface, depending on the collection type's
implementation of the AddNew method.
&lt;/p&gt;
&lt;p&gt;
So when dealing with a data table as your collection, you are actually bound to its
default DataView. The DataView class implements the IBindingList interface, and the
DataRowView class (the items in the collection) implement IEditableObject. When a
column in the table is set up so that it does not accept null values, the DataRowView
implementation of EndEdit will throw and exception when EndEdit is called if the non-nullable
columns have not been provided a value.
&lt;/p&gt;
&lt;p&gt;
The call chain that sets all this up for a standard data set based application is
that the BindingNavigator calls into the BindingSource and calls AddNew. This calls
into the DataView and adds a new row to the table and starts an editing transaction
by calling BeginEdit on the row. When you press the AddNew button a second time, EndEdit
is called on the first row you added, which, if you haven't filled in the non-nullable
columns, will throw an exception. Since the call chain goes from BindingNavigator
to BindingSource to DataView to DataRowView, there is no user code in the call chain
where you can logically insert an exception handler.
&lt;/p&gt;
&lt;p&gt;
You could handle the situation in a crude form by having an Application.ThreadException
handler, which will catch all unhandled exceptions on the thread. However, this doesn't
get called until the stack has unraveled all the way back out to the base of the call
stack, so it is a little late to be dealing with the exception in a recoverable way.
&lt;/p&gt;
&lt;p&gt;
A better solution is to inherit from the BindingSource component and provide your
own implementation to AddNew. The following implementation (thanks to Steve Lasker
and Daniel Herling on the product team in Redmond for coming up with this) shows how:
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;private&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;font color=#000000&gt; &lt;/font&gt;&lt;span style="COLOR: blue"&gt;class&lt;/span&gt;&lt;font color=#000000&gt; &lt;/font&gt;&lt;span style="COLOR: teal"&gt;MyBindingSource&lt;/span&gt;&lt;font color=#000000&gt; : &lt;/font&gt;&lt;span style="COLOR: teal"&gt;BindingSource&lt;/span&gt;&lt;/span&gt;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;
&lt;o:p&gt;&lt;/o:p&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;font color=#000000&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;{&lt;/span&gt;
&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;font color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;span style="COLOR: blue"&gt;public&lt;/span&gt;&lt;font color=#000000&gt; MyBindingSource()&lt;/font&gt;&lt;/span&gt;
&lt;o:p&gt;&lt;/o:p&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;font color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
: &lt;/font&gt;&lt;span style="COLOR: blue"&gt;base&lt;/span&gt;&lt;font color=#000000&gt;()&lt;/font&gt;&lt;/span&gt;
&lt;o:p&gt;&lt;/o:p&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;font color=#000000&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;/span&gt;
&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;font color=#000000&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;
&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;font color=#000000&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&amp;nbsp;&lt;/span&gt;
&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;font color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;span style="COLOR: blue"&gt;public&lt;/span&gt;&lt;font color=#000000&gt; &lt;/font&gt;&lt;span style="COLOR: blue"&gt;override&lt;/span&gt;&lt;font color=#000000&gt; &lt;/font&gt;&lt;span style="COLOR: blue"&gt;object&lt;/span&gt;&lt;font color=#000000&gt; AddNew()&lt;/font&gt;&lt;/span&gt;
&lt;o:p&gt;&lt;/o:p&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;font color=#000000&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;/span&gt;
&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;font color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;span style="COLOR: blue"&gt;object&lt;/span&gt;&lt;font color=#000000&gt; o
= &lt;/font&gt;&lt;span style="COLOR: blue"&gt;null&lt;/span&gt;&lt;font color=#000000&gt;;&lt;/font&gt;&lt;/span&gt;
&lt;o:p&gt;&lt;/o:p&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;font color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;span style="COLOR: blue"&gt;try&lt;/span&gt;&lt;/span&gt;
&lt;o:p&gt;&lt;/o:p&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;font color=#000000&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;/span&gt;
&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;font color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
o = &lt;/font&gt;&lt;span style="COLOR: blue"&gt;base&lt;/span&gt;&lt;font color=#000000&gt;.AddNew();&lt;/font&gt;&lt;/span&gt;
&lt;o:p&gt;&lt;/o:p&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;font color=#000000&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;
&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;font color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;span style="COLOR: blue"&gt;catch&lt;/span&gt;&lt;font color=#000000&gt; (System.&lt;/font&gt;&lt;span style="COLOR: teal"&gt;Exception&lt;/span&gt;&lt;font color=#000000&gt; ex)&lt;/font&gt;&lt;/span&gt;
&lt;o:p&gt;&lt;/o:p&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;font color=#000000&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;/span&gt;
&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;font color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;span style="COLOR: blue"&gt;this&lt;/span&gt;&lt;font color=#000000&gt;.OnDataError(&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&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="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;new&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;font color=#000000&gt; &lt;/font&gt;&lt;span style="COLOR: teal"&gt;BindingManagerDataErrorEventArgs&lt;/span&gt;&lt;font color=#000000&gt;(ex));&lt;/font&gt;&lt;/span&gt;
&lt;o:p&gt;&lt;/o:p&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;font color=#000000&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
}&lt;/span&gt;
&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;font color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;span style="COLOR: blue"&gt;return&lt;/span&gt;&lt;font color=#000000&gt; o;&lt;/font&gt;&lt;/span&gt;
&lt;o:p&gt;&lt;/o:p&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;font color=#000000&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;
}&lt;/span&gt;
&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;font color=#000000&gt;}&lt;/font&gt;&lt;/span&gt;
&lt;o:p&gt;&lt;/o:p&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;p&gt;
With this in place, you can just handle the DataError event on the BindingSource component
to do whatever is appropriate based on the exception.
&lt;/p&gt;
&gt;
&lt;img width="0" height="0" src="http://www.softinsight.com/bnoyes/aggbug.ashx?id=64275c83-d7af-4a19-b4f7-593146ab415f" /&gt;</description>
      <comments>http://www.softinsight.com/bnoyes/CommentView,guid,64275c83-d7af-4a19-b4f7-593146ab415f.aspx</comments>
      <category>.NET</category>
      <category>Data Binding</category>
      <category>Languages and Tools</category>
    </item>
    <item>
      <trackback:ping>http://www.softinsight.com/bnoyes/Trackback.aspx?guid=23d11276-49e4-4c1b-ad6a-0507fdc64189</trackback:ping>
      <pingback:server>http://www.softinsight.com/bnoyes/pingback.aspx</pingback:server>
      <pingback:target>http://www.softinsight.com/bnoyes/PermaLink,guid,23d11276-49e4-4c1b-ad6a-0507fdc64189.aspx</pingback:target>
      <dc:creator />
      <wfw:comment>http://www.softinsight.com/bnoyes/CommentView,guid,23d11276-49e4-4c1b-ad6a-0507fdc64189.aspx</wfw:comment>
      <wfw:commentRss>http://www.softinsight.com/bnoyes/SyndicationService.asmx/GetEntryCommentsRss?guid=23d11276-49e4-4c1b-ad6a-0507fdc64189</wfw:commentRss>
      <slash:comments>2</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
I recorded a DNR and DNRtv last week in New London and they are already up on the
site.
</p>
        <p>
You can download/listen to the .NET Rocks! epsidode here: <a href="http://www.dotnetrocks.com">http://www.dotnetrocks.com</a></p>
        <p>
And the DNRtv here: <a href="http://www.dnrtv.com">http://www.dnrtv.com</a></p>
        <p>
In the DNR episode, we talk about data binding, ClickOnce and a few other related
topics.
</p>
        <p>
This DNRtv shows how to do some of the data binding stuff in the designer. Keep your
eyes out for another episode in a week or so on ClickOnce deployment.
</p>
        <img width="0" height="0" src="http://www.softinsight.com/bnoyes/aggbug.ashx?id=23d11276-49e4-4c1b-ad6a-0507fdc64189" />
      </body>
      <title>.NET Rocks and DNRtv episodes up</title>
      <guid isPermaLink="false">http://www.softinsight.com/bnoyes/PermaLink,guid,23d11276-49e4-4c1b-ad6a-0507fdc64189.aspx</guid>
      <link>http://www.softinsight.com/bnoyes/2006/02/24/NETRocksAndDNRtvEpisodesUp.aspx</link>
      <pubDate>Fri, 24 Feb 2006 14:45:20 GMT</pubDate>
      <description>&lt;p&gt;
I recorded a DNR and DNRtv last week in New London and they are already up on the
site.
&lt;/p&gt;
&lt;p&gt;
You can download/listen to the .NET Rocks! epsidode here: &lt;a href="http://www.dotnetrocks.com"&gt;http://www.dotnetrocks.com&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
And the DNRtv here: &lt;a href="http://www.dnrtv.com"&gt;http://www.dnrtv.com&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
In the DNR episode, we talk about data binding, ClickOnce and a few other related
topics.
&lt;/p&gt;
&lt;p&gt;
This DNRtv shows how to do some of the data binding stuff in the designer. Keep your
eyes out for another episode in a week or so on ClickOnce deployment.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.softinsight.com/bnoyes/aggbug.ashx?id=23d11276-49e4-4c1b-ad6a-0507fdc64189" /&gt;</description>
      <comments>http://www.softinsight.com/bnoyes/CommentView,guid,23d11276-49e4-4c1b-ad6a-0507fdc64189.aspx</comments>
      <category>.NET</category>
      <category>ClickOnce</category>
      <category>Community</category>
      <category>Data Binding</category>
      <category>Languages and Tools</category>
      <category>Speaking</category>
    </item>
    <item>
      <trackback:ping>http://www.softinsight.com/bnoyes/Trackback.aspx?guid=ed45c5c6-24cf-469d-b8cf-aeeef64c4ed1</trackback:ping>
      <pingback:server>http://www.softinsight.com/bnoyes/pingback.aspx</pingback:server>
      <pingback:target>http://www.softinsight.com/bnoyes/PermaLink,guid,ed45c5c6-24cf-469d-b8cf-aeeef64c4ed1.aspx</pingback:target>
      <dc:creator />
      <wfw:comment>http://www.softinsight.com/bnoyes/CommentView,guid,ed45c5c6-24cf-469d-b8cf-aeeef64c4ed1.aspx</wfw:comment>
      <wfw:commentRss>http://www.softinsight.com/bnoyes/SyndicationService.asmx/GetEntryCommentsRss?guid=ed45c5c6-24cf-469d-b8cf-aeeef64c4ed1</wfw:commentRss>
      <slash:comments>1</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Here is a little trick that has bitten me on more than one occasion, and just bit
someone who attended my data binding session in NYC the other night.
</p>
        <p>
Here is the setup to be bitten by the defaults in Visual Studio:
</p>
        <p>
- Add a SQL Express database to your project
</p>
        <p>
- Edit the schema, add some tables, etc.
</p>
        <p>
- Write some code / data binding that uses the database
</p>
        <p>
- Run a debug session adding records or modifying ones you created through the designer.
</p>
        <p>
- Save the changes from your running debug session.
</p>
        <p>
- Shut down the app and run another debug session, and your changes are no longer
there. 
</p>
        <p>
First instinct at this point is "there is something screwed up with my data binding
/ data access code". That instinct may be wrong (although we are all good at writing
bugs as well).
</p>
        <p>
When VS adds the MDF file to your project, it places it and its related LDF file in
the project root folder, and add them to your project in solution explorer. The file
properties for the MDF file include Build Action = Content, and Copy To Output Directory
= Copy Always.
</p>
        <p>
What is happening is that your changes are being persisted to the copy of the MDF
file that was placed in your build output directory (bin\debug) on the first debug
run. Then on the second debug run, the unchanged MDF file from the project root folder
is copied down into the build output folder, overwriting the one that was there with
your changes from the previous run. As a result, it looks like your changes were not
persisted when in fact they were (or may have been if your code was correct).
</p>
        <p>
The solution is that whenever you add a SQL Express DB to your VS project, you probably
want to change the Copy To Output Directory property for the file to Copy If Newer.
</p>
        <img width="0" height="0" src="http://www.softinsight.com/bnoyes/aggbug.ashx?id=ed45c5c6-24cf-469d-b8cf-aeeef64c4ed1" />
      </body>
      <title>Debugging SQL Express Apps - Beware VS Copy To Output Directory default</title>
      <guid isPermaLink="false">http://www.softinsight.com/bnoyes/PermaLink,guid,ed45c5c6-24cf-469d-b8cf-aeeef64c4ed1.aspx</guid>
      <link>http://www.softinsight.com/bnoyes/2006/02/22/DebuggingSQLExpressAppsBewareVSCopyToOutputDirectoryDefault.aspx</link>
      <pubDate>Wed, 22 Feb 2006 13:21:46 GMT</pubDate>
      <description>&lt;p&gt;
Here is a little trick that has bitten me on more than one occasion, and just bit
someone who attended my data binding session in NYC the other night.
&lt;/p&gt;
&lt;p&gt;
Here is the setup to be bitten by the defaults in Visual Studio:
&lt;/p&gt;
&lt;p&gt;
- Add a SQL Express database to your project
&lt;/p&gt;
&lt;p&gt;
- Edit the schema, add some tables, etc.
&lt;/p&gt;
&lt;p&gt;
- Write some code / data binding that uses the database
&lt;/p&gt;
&lt;p&gt;
- Run a debug session adding records or modifying ones you created through the designer.
&lt;/p&gt;
&lt;p&gt;
- Save the changes from your running debug session.
&lt;/p&gt;
&lt;p&gt;
- Shut down the app and run another debug session, and your changes are no longer
there. 
&lt;/p&gt;
&lt;p&gt;
First instinct at this point is "there is something screwed up with my data binding
/ data access code". That instinct may be wrong (although we are all good at writing
bugs as well).
&lt;/p&gt;
&lt;p&gt;
When VS adds the MDF file to your project, it places it and its related LDF file in
the project root folder, and add them to your project in solution explorer. The file
properties for the MDF file include Build Action = Content, and Copy To Output Directory
= Copy Always.
&lt;/p&gt;
&lt;p&gt;
What is happening is that your changes are being persisted to the copy of the MDF
file that was placed in your build output directory (bin\debug) on the first debug
run. Then on the second debug run, the unchanged MDF file from the project root folder
is copied down into the build output folder, overwriting the one that was there with
your changes from the previous run. As a result, it looks like your changes were not
persisted when in fact they were (or may have been if your code was correct).
&lt;/p&gt;
&lt;p&gt;
The solution is that whenever you add a SQL Express DB to your VS project, you probably
want to change the Copy To Output Directory property for the file to Copy If Newer.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.softinsight.com/bnoyes/aggbug.ashx?id=ed45c5c6-24cf-469d-b8cf-aeeef64c4ed1" /&gt;</description>
      <comments>http://www.softinsight.com/bnoyes/CommentView,guid,ed45c5c6-24cf-469d-b8cf-aeeef64c4ed1.aspx</comments>
      <category>.NET</category>
      <category>Data Binding</category>
      <category>Languages and Tools</category>
    </item>
    <item>
      <trackback:ping>http://www.softinsight.com/bnoyes/Trackback.aspx?guid=cceb1d90-9f88-49e9-bf30-39889ae025c5</trackback:ping>
      <pingback:server>http://www.softinsight.com/bnoyes/pingback.aspx</pingback:server>
      <pingback:target>http://www.softinsight.com/bnoyes/PermaLink,guid,cceb1d90-9f88-49e9-bf30-39889ae025c5.aspx</pingback:target>
      <dc:creator />
      <wfw:comment>http://www.softinsight.com/bnoyes/CommentView,guid,cceb1d90-9f88-49e9-bf30-39889ae025c5.aspx</wfw:comment>
      <wfw:commentRss>http://www.softinsight.com/bnoyes/SyndicationService.asmx/GetEntryCommentsRss?guid=cceb1d90-9f88-49e9-bf30-39889ae025c5</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">I went up to New London this week and taped
two episodes of <a href="http://www.dnrtv.com/">DNRtv</a> and one <a href="http://www.dotnetrocks.com/">DNR </a>with <a href="http://weblogs.asp.net/cfranklin">Carl </a>and <a href="http://www.campbellassociates.ca/blog/">Richard</a>.
The DNRtv episodes should go up in the next two weeks, one on data binding and one
on ClickOnce deployment. The DNR will air on 22 March. Check them out!<img width="0" height="0" src="http://www.softinsight.com/bnoyes/aggbug.ashx?id=cceb1d90-9f88-49e9-bf30-39889ae025c5" /></body>
      <title>.NET Rocks! and .NET Rocks! TV Episodes coming up</title>
      <guid isPermaLink="false">http://www.softinsight.com/bnoyes/PermaLink,guid,cceb1d90-9f88-49e9-bf30-39889ae025c5.aspx</guid>
      <link>http://www.softinsight.com/bnoyes/2006/02/20/NETRocksAndNETRocksTVEpisodesComingUp.aspx</link>
      <pubDate>Mon, 20 Feb 2006 18:10:56 GMT</pubDate>
      <description>I went up to New London this week and taped two episodes of &lt;a href="http://www.dnrtv.com/"&gt;DNRtv&lt;/a&gt; and
one &lt;a href="http://www.dotnetrocks.com/"&gt;DNR &lt;/a&gt;with &lt;a href="http://weblogs.asp.net/cfranklin"&gt;Carl &lt;/a&gt;and &lt;a href="http://www.campbellassociates.ca/blog/"&gt;Richard&lt;/a&gt;.
The DNRtv episodes should go up in the next two weeks, one on data binding and one
on ClickOnce deployment. The DNR will air on 22 March. Check them out!&lt;img width="0" height="0" src="http://www.softinsight.com/bnoyes/aggbug.ashx?id=cceb1d90-9f88-49e9-bf30-39889ae025c5" /&gt;</description>
      <comments>http://www.softinsight.com/bnoyes/CommentView,guid,cceb1d90-9f88-49e9-bf30-39889ae025c5.aspx</comments>
      <category>.NET</category>
      <category>ClickOnce</category>
      <category>Community</category>
      <category>Data Binding</category>
      <category>Languages and Tools</category>
      <category>Speaking</category>
    </item>
    <item>
      <trackback:ping>http://www.softinsight.com/bnoyes/Trackback.aspx?guid=32486811-1be2-418f-8f43-5d5e4f55942e</trackback:ping>
      <pingback:server>http://www.softinsight.com/bnoyes/pingback.aspx</pingback:server>
      <pingback:target>http://www.softinsight.com/bnoyes/PermaLink,guid,32486811-1be2-418f-8f43-5d5e4f55942e.aspx</pingback:target>
      <dc:creator />
      <wfw:comment>http://www.softinsight.com/bnoyes/CommentView,guid,32486811-1be2-418f-8f43-5d5e4f55942e.aspx</wfw:comment>
      <wfw:commentRss>http://www.softinsight.com/bnoyes/SyndicationService.asmx/GetEntryCommentsRss?guid=32486811-1be2-418f-8f43-5d5e4f55942e</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
I gave a talk on data binding in NYC this Thu night. Had a great time. Lively crowd
as always, lots of good questions and interaction.
</p>
        <p>
Here are the slides and demos:
</p>
        <p>
          <a href="http://www.softinsight.com/downloads/INETA/DataBindingwithWindowsForms2.0_Feb06.pdf">Slides</a>    <a href="http://www.softinsight.com/downloads/INETA/DataBindingDemosFeb06.zip">Demos</a></p>
        <img width="0" height="0" src="http://www.softinsight.com/bnoyes/aggbug.ashx?id=32486811-1be2-418f-8f43-5d5e4f55942e" />
      </body>
      <title>Data Binding with Windows Forms 2.0 Slides/Demos from NYC.NET</title>
      <guid isPermaLink="false">http://www.softinsight.com/bnoyes/PermaLink,guid,32486811-1be2-418f-8f43-5d5e4f55942e.aspx</guid>
      <link>http://www.softinsight.com/bnoyes/2006/02/20/DataBindingWithWindowsForms20SlidesDemosFromNYCNET.aspx</link>
      <pubDate>Mon, 20 Feb 2006 18:06:58 GMT</pubDate>
      <description>&lt;p&gt;
I gave a talk on data binding in NYC this Thu night. Had a great time. Lively crowd
as always, lots of good questions and interaction.
&lt;/p&gt;
&lt;p&gt;
Here are the slides and demos:
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.softinsight.com/downloads/INETA/DataBindingwithWindowsForms2.0_Feb06.pdf"&gt;Slides&lt;/a&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;a href="http://www.softinsight.com/downloads/INETA/DataBindingDemosFeb06.zip"&gt;Demos&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.softinsight.com/bnoyes/aggbug.ashx?id=32486811-1be2-418f-8f43-5d5e4f55942e" /&gt;</description>
      <comments>http://www.softinsight.com/bnoyes/CommentView,guid,32486811-1be2-418f-8f43-5d5e4f55942e.aspx</comments>
      <category>.NET</category>
      <category>Community</category>
      <category>Data Binding</category>
      <category>Languages and Tools</category>
      <category>Speaking</category>
    </item>
    <item>
      <trackback:ping>http://www.softinsight.com/bnoyes/Trackback.aspx?guid=ecf030b7-4b2f-4300-9c8e-e0c9077d5a59</trackback:ping>
      <pingback:server>http://www.softinsight.com/bnoyes/pingback.aspx</pingback:server>
      <pingback:target>http://www.softinsight.com/bnoyes/PermaLink,guid,ecf030b7-4b2f-4300-9c8e-e0c9077d5a59.aspx</pingback:target>
      <dc:creator />
      <wfw:comment>http://www.softinsight.com/bnoyes/CommentView,guid,ecf030b7-4b2f-4300-9c8e-e0c9077d5a59.aspx</wfw:comment>
      <wfw:commentRss>http://www.softinsight.com/bnoyes/SyndicationService.asmx/GetEntryCommentsRss?guid=ecf030b7-4b2f-4300-9c8e-e0c9077d5a59</wfw:commentRss>
      <slash:comments>5</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
A couple people have suggested that I post the table of contents for my book to my
blog since it is not yet available on Amazon. 
</p>
        <p>
Here it is:
</p>
        <h4>
          <i>Foreword xxi</i>
        </h4>
        <h4>
          <i>Preface xxiii</i>
        </h4>
        <h4>
          <i>Acknowledgments xxxv</i>
        </h4>
        <h4>
          <i>About the Author xxxvii</i>
        </h4>
        <h3>Chapter 1: Building Data-Bound Applications with Windows Forms 1
</h3>
        <p>
What Is Data Binding? 2
</p>
        <p>
Your First Data-Bound Windows Forms 2.0 Application 3
</p>
        <p>
Data-Binding Landscape 14
</p>
        <p>
Data Sources 15
</p>
        <p>
Data Objects and Collections 16
</p>
        <p>
DataSets or Not, That Is the Question... 18
</p>
        <p>
Data-Bound Controls 20
</p>
        <p>
Layered Application Architecture 21
</p>
        <p>
What Is a Smart Client? 27
</p>
        <p>
Where Are We? 28
</p>
        <h3>Chapter 2: Working with Typed Data Sets and Table Adapters 31
</h3>
        <p>
A Quick Review of DataSets 31
</p>
        <p>
The Quest for Type Safety 34
</p>
        <p>
Typed Data Set Internals 37
</p>
        <p>
Creating Typed Data Sets 41
</p>
        <p>
Creating Typed Data Sets with the Data Set Designer 42
</p>
        <p>
Typed Data Set-Generated Code 49
</p>
        <p>
Introduction to Table Adapters 52
</p>
        <p>
Filling and Updating a Typed Data Set with a Table Adapter 56
</p>
        <p>
Connection Management 58
</p>
        <p>
Adding Transaction Support to a Table Adapter 62
</p>
        <p>
Adding Helper Data Access Methods 66
</p>
        <p>
Basing Table Adapters on Stored Procedures or Views 67
</p>
        <p>
Adding Queries to Table Adapters 69
</p>
        <p>
Creating Typed Data Sets with Command Line Tools 77
</p>
        <p>
Using Typed Data Sets in Your Code 78
</p>
        <p>
Where Are We? 79
</p>
        <h3>Chapter 3: Introducing Data Binding in Windows Forms 81
</h3>
        <p>
The 40,000-Foot View of Data Binding 81
</p>
        <p>
Binding Data Collections to a Grid 86
</p>
        <p>
Binding Data Collections to Multi-Valued Controls 88
</p>
        <p>
Binding Data to Individual Controls on a Form 90
</p>
        <p>
Data Paths Within Data Sources 92
</p>
        <p>
Synchronizing Data Between Controls 96
</p>
        <p>
Smarter Data Containment 97
</p>
        <p>
Paging Through Data 99
</p>
        <p>
Master-Details Data Binding 104
</p>
        <p>
Updating Data Sources Through Data Binding 106
</p>
        <p>
Where Are We? 108
</p>
        <h3>Chapter 4: Binding Controls to Data Sources 111
</h3>
        <p>
Getting to Know the BindingSource Component 111
</p>
        <p>
Simple Data Binding with Binding Sources 112
</p>
        <p>
Chaining Binding Sources for Master-Details Data Binding 116
</p>
        <p>
Navigating Data Through a Binding Source 121
</p>
        <p>
Manipulating Data Through a Binding Source 122
</p>
        <p>
Using a Binding Source as a Data Storage Container 124
</p>
        <p>
Filling a Binding Source with a Data Reader 126
</p>
        <p>
Sorting, Searching, and Filtering Presented Data with a Binding Source 128
</p>
        <p>
Monitoring the Data with Events 131
</p>
        <p>
Restricting Changes to the Data 133
</p>
        <p>
Underneath the Covers of Data Binding for Complex Types 134
</p>
        <p>
Binding an Image Column to a PictureBox Control 141
</p>
        <p>
Binding a DateTime Column to a DateTimePicker 142
</p>
        <p>
Binding a DateTime Column to a TextBox 144
</p>
        <p>
Binding a Numeric Column to a TextBox 145
</p>
        <p>
Automatic Formatting and Parsing Summary 147
</p>
        <p>
Going Beyond Built-In Type Conversion with Binding Events 148
</p>
        <p>
Handling the Format Event 154
</p>
        <p>
Handling the Parse Event 156
</p>
        <p>
Completing the Editing Process 157
</p>
        <p>
Making the User’s Life Easier with AutoComplete 160
</p>
        <p>
Data Binding Lifecycle 162
</p>
        <p>
Smarter Child-Parent Data Binding 163
</p>
        <p>
Binding to Multiple Copies of Data 165
</p>
        <p>
Updating Parent Data-Bound Controls from Child Data-Bound Controls 168
</p>
        <p>
Synchronizing Many-to-Many Related Collections 172
</p>
        <p>
Where Are We? 176
</p>
        <h3>Chapter 5: Generating Bound Controls with the Visual Studio Designer 177
</h3>
        <p>
Working with the Data Sources Window 177
</p>
        <p>
Adding Data Sources to a Project 179
</p>
        <p>
Choosing the Type of Data Source 180
</p>
        <p>
Adding a Database Data Source 181
</p>
        <p>
Adding a Web Service Data Source 185
</p>
        <p>
Adding an Object Data Source 186
</p>
        <p>
Generating Bound Controls from Data Sources 189
</p>
        <p>
Selecting the Bound Control Type 196
</p>
        <p>
Customizing the Bound Control Types 196
</p>
        <p>
Binding Existing Controls to Data Sources 199
</p>
        <p>
Behind the Scenes: Designer Code and Data Sources Files 202
</p>
        <p>
Other Designer Data-Binding Code Generation 205
</p>
        <p>
Setting Control Data Binding Through the Properties Window 206
</p>
        <p>
Generating Data Bindings with Smart Tags 210
</p>
        <p>
Generating Master-Details Data-Bound Controls with the Designer 214
</p>
        <p>
Where Are We? 216
</p>
        <h3>Chapter 6: Presenting Data with the DataGridView Control 217
</h3>
        <p>
DataGridView Overview 218
</p>
        <p>
Basic Data Binding with the DataGridView 219
</p>
        <p>
Controlling Modifications to Data in the Grid 221
</p>
        <p>
Programmatic DataGridView Construction 222
</p>
        <p>
Custom Column Content with Unbound Columns 226
</p>
        <p>
Displaying Computed Data in Virtual Mode 233
</p>
        <p>
Using the Built-In Column Types 241
</p>
        <p>
Built-In Header Cells 255
</p>
        <p>
Handling Grid Data Edits 256
</p>
        <p>
Automatic Column Sizing 259
</p>
        <p>
Column and Row Freezing 262
</p>
        <p>
Using the Designer to Define Grids 263
</p>
        <p>
Column Reordering 266
</p>
        <p>
Defining Custom Column and Cell Types 269
</p>
        <p>
Utilizing Cell-Oriented Grid Features 277
</p>
        <p>
Formatting with Styles 281
</p>
        <p>
Where Are We? 284
</p>
        <h3>Chapter 7: Understanding Data-Binding Interfaces 285
</h3>
        <p>
What Does Data Binding Have to Do with Interfaces? 286
</p>
        <p>
The IEnumerable and IEnumerator Interfaces: Supporting Iteration Through Collections
289
</p>
        <p>
The ICollection Interface: Controlling Access to a Collection 295
</p>
        <p>
The IList Interface: Enabling Data Binding 298
</p>
        <p>
The IListSource Interface: Exposing Collections of Collections 303
</p>
        <p>
Property Descriptors: Allowing Dynamic Data Item Information Discovery 305
</p>
        <p>
The ITypedList Interface: Exposing Data-Binding Properties 307
</p>
        <p>
The IBindingList Interface: Providing Rich Binding Support 310
</p>
        <p>
The IBindingListView Interface: Supporting Advanced Sorting and Filtering 323
</p>
        <p>
The ICancelAddNew Interface: Supporting Transactional Inserts in a Collection 325
</p>
        <p>
The IRaiseItemChangedEvents Interface: Providing Item Modification Notifications on
Collections 327
</p>
        <p>
The IEditableObject Interface: Supporting Transactional Item Modifications 328
</p>
        <p>
The INotifyPropertyChanged Interface: Publishing Item Change Notifications 329
</p>
        <p>
The ICustomTypeDescriptor Interface: Exposing Custom Type Information 332
</p>
        <p>
The ISupportInitialize Interface: Supporting Designer Initialization 334
</p>
        <p>
The IDataErrorInfo Interface: Providing Error Information 330
</p>
        <p>
The ISupportInitializeNotification Interface: Supporting Interdependent Component
Initialization 337
</p>
        <p>
The ICurrencyManagerProvider Interface: Exposing a Data Container’s CurrencyManager
341
</p>
        <p>
Where Are We? 341
</p>
        <h3>Chapter 8: Implementing Custom Data-Bound Controls 343
</h3>
        <p>
Extending Framework Data-Bound Controls 344
</p>
        <p>
Creating a Grouped Column DataGridView 345
</p>
        <p>
Using Custom Controls 350
</p>
        <p>
The User Control Test Container 352
</p>
        <p>
Developing Data-Bound Container Controls 353
</p>
        <p>
Building a Filtered Grid Control 354
</p>
        <p>
Adding Data-Binding Capability to a Custom Control 357
</p>
        <p>
Supporting Designer Initialization of Data Binding 359
</p>
        <p>
Specifying Binding Properties on a Control 360
</p>
        <p>
Supporting Delayed Initialization with ISupportInitialize 362
</p>
        <p>
Dynamically Determining the Properties of a Data Source 367
</p>
        <p>
Autocompleting Input in a TextBox Control 371
</p>
        <p>
Autosizing Columns in the Grid 375
</p>
        <p>
Winding Up the Filtered Grid Example 376
</p>
        <p>
Building a Custom Data-Bound Control from Scratch 379
</p>
        <p>
Building a Data-Bound Charting Control for Decision Support 379
</p>
        <p>
Coding a Data-Bound Custom Control 384
</p>
        <p>
Adding Editing Support to a Custom Data Bound Control 391
</p>
        <p>
Where Are We? 397
</p>
        <h3>Chapter 9: Implementing Custom Data-Bound Business Objects and Collections 399
</h3>
        <p>
Defining and Working with Data-Bound Business Objects 400
</p>
        <p>
Defining and Working with Data-Bound Business Object Collections 405
</p>
        <p>
.NET Framework Generic Collection Classes 406
</p>
        <p>
The CustomBusinessObjects Example 408
</p>
        <p>
Setting the Textual Data-Binding Behavior of Custom Objects 415
</p>
        <p>
Supporting Transacted Object Editing with IEditableObject 416
</p>
        <p>
Supporting Object Edit Notifications with Property Change Events 420
</p>
        <p>
Supporting Object Edit Notifications with INotifyPropertyChanged 423
</p>
        <p>
Using BindingList&lt;T&gt; to Create Rich Object Collections 424
</p>
        <p>
Creating a Custom Collection Type Based on BindingList&lt;T&gt; 426
</p>
        <p>
Managing Transacted Additions to a Collection 439
</p>
        <p>
Raising Item Changed Events 441
</p>
        <p>
Adding IBindingListView Functionality 443
</p>
        <p>
Binding to Business Objects Through the Data Sources Window 453
</p>
        <p>
Where Are We? 455
</p>
        <h3>Chapter 10: Validating Data Input and Handling Errors 457
</h3>
        <p>
Windows Forms Validation 458
</p>
        <p>
Handling Validation Events 459
</p>
        <p>
DataGridView Validation Events 462
</p>
        <p>
Validation Up the Control Hierarchy 463
</p>
        <p>
Displaying Validation Errors with the ErrorProvider Control 464
</p>
        <p>
DataGridView Error Displays 467
</p>
        <p>
DataGridView DataError Event 468
</p>
        <p>
Controlling Validation Behavior with the AutoValidate Property 471
</p>
        <p>
Validation down the Control Hierarchy 472
</p>
        <p>
Extended Validation Controls 474
</p>
        <p>
Capturing Data Errors on Data Sets 475
</p>
        <p>
Providing Error Information from Custom Objects with IDataErrorInfo 479
</p>
        <p>
Data Concurrency Resolution 483
</p>
        <p>
Where Are We? 484
</p>
        <h3>Appendix A: Binding to Data in ASP.NET 487
</h3>
        <p>
ASP.NET Page Processing Basics 489
</p>
        <p>
Data Binding in ASP.NET 1.X 490
</p>
        <p>
Data-Binding Overview in ASP.NET 2.0 498
</p>
        <p>
Data Sources 499
</p>
        <p>
Data-Binding Expressions 508
</p>
        <p>
GridView Control 509
</p>
        <p>
DetailsView Control 512
</p>
        <p>
FormView Control 514
</p>
        <p>
Master-Details Binding 515
</p>
        <p>
Hierarchical Binding 518
</p>
        <p>
Where Are We? 519
</p>
        <h3>Appendix B: Binding Data in WinFx Applications 521
</h3>
        <p>
WinFx UI Programming and Capabilities Overview 522
</p>
        <p>
Writing a Simple WinFx Application 525
</p>
        <p>
WinFx Data Binding 101 532
</p>
        <p>
Data Contexts and Data Sources 536
</p>
        <p>
What About XAML? 537
</p>
        <p>
Binding a Collection to a Grid with Templates 541
</p>
        <p>
Control Styling in WinFx 543
</p>
        <p>
Where Are We? 545
</p>
        <h3>Appendix C: Programming Windows Forms Applications 547
</h3>
        <p>
Your First Windows Forms Data Application 548
</p>
        <p>
Creating Windows Forms Applications with Visual Studio 554
</p>
        <p>
Windows Forms Designer-Generated Code (New in 2.0) 563
</p>
        <p>
A Brief Tour of the Windows Forms Architecture 567
</p>
        <p>
The Dawn of .NET Execution—The Main Method 570
</p>
        <p>
Handling Control Events 574
</p>
        <p>
Displaying Other Forms 576
</p>
        <p>
Containing Forms Within a Parent Form 577
</p>
        <p>
Common Data Display Controls 578
</p>
        <p>
Creating a Custom User Control 586
</p>
        <p>
Laying Out Controls on a Form 589
</p>
        <p>
Setting Tab Order 596
</p>
        <p>
Command and Control of Your Windows Forms Applications (New in 2.0) 598
</p>
        <p>
Where Are We? 600
</p>
        <h3>Appendix D: Accessing Data with ADO.NET 601
</h3>
        <p>
Relational Data Access 603
</p>
        <p>
The Ubiquitous DataSet 607
</p>
        <p>
Loading Data Sets from a File 609
</p>
        <p>
Creating a Data Set Programmatically 611
</p>
        <p>
Loading Data Sets from a Database 613
</p>
        <p>
Loading a DataTable with a DataReader 619
</p>
        <p>
Master-Details DataSets 621
</p>
        <p>
Retrieving Data with Stored Procedures 623
</p>
        <p>
Updating the Database Using Data Sets 624
</p>
        <p>
Handling Concurrency 628
</p>
        <p>
Updating with Data Sets and Stored Procedures 632
</p>
        <p>
Searching Data Sets 637
</p>
        <p>
Merging Data from Multiple Data Sets 639
</p>
        <p>
Working with Data Views 641
</p>
        <p>
Working with Transactions 643
</p>
        <p>
Scoping Transactions with System.Transactions 647
</p>
        <p>
Client-Side Transactions 650
</p>
        <p>
Data Set and Data Adapter Events 651
</p>
        <p>
Reading Data into Business Objects 654
</p>
        <p>
XML Data Access 658
</p>
        <p>
Working with the XmlDataDocument Class 659
</p>
        <p>
Working with the XPathDocument Class 663
</p>
        <p>
Loading Data into an XPathDocument 664
</p>
        <p>
Querying XML Data 665
</p>
        <p>
Navigating an XML Document 667
</p>
        <p>
Where Are We? 670
</p>
        <h4>
          <i>Index 671</i>
        </h4>
        <img width="0" height="0" src="http://www.softinsight.com/bnoyes/aggbug.ashx?id=ecf030b7-4b2f-4300-9c8e-e0c9077d5a59" />
      </body>
      <title>Data Binding with Windows Forms 2.0 Table of Contents</title>
      <guid isPermaLink="false">http://www.softinsight.com/bnoyes/PermaLink,guid,ecf030b7-4b2f-4300-9c8e-e0c9077d5a59.aspx</guid>
      <link>http://www.softinsight.com/bnoyes/2006/01/19/DataBindingWithWindowsForms20TableOfContents.aspx</link>
      <pubDate>Thu, 19 Jan 2006 13:58:00 GMT</pubDate>
      <description>&lt;p&gt;
A couple people have suggested that I post the table of contents for my book to my
blog since it is not yet available on Amazon. 
&lt;/p&gt;
&lt;p&gt;
Here it is:
&lt;/p&gt;
&lt;h4&gt;&lt;i&gt;Foreword xxi&lt;/i&gt;
&lt;/h4&gt;
&lt;h4&gt;&lt;i&gt;Preface xxiii&lt;/i&gt;
&lt;/h4&gt;
&lt;h4&gt;&lt;i&gt;Acknowledgments xxxv&lt;/i&gt;
&lt;/h4&gt;
&lt;h4&gt;&lt;i&gt;About the Author xxxvii&lt;/i&gt;
&lt;/h4&gt;
&lt;h3&gt;Chapter 1: Building Data-Bound Applications with Windows Forms 1
&lt;/h3&gt;
&lt;p&gt;
What Is Data Binding? 2
&lt;/p&gt;
&lt;p&gt;
Your First Data-Bound Windows Forms 2.0 Application 3
&lt;/p&gt;
&lt;p&gt;
Data-Binding Landscape 14
&lt;/p&gt;
&lt;p&gt;
Data Sources 15
&lt;/p&gt;
&lt;p&gt;
Data Objects and Collections 16
&lt;/p&gt;
&lt;p&gt;
DataSets or Not, That Is the Question... 18
&lt;/p&gt;
&lt;p&gt;
Data-Bound Controls 20
&lt;/p&gt;
&lt;p&gt;
Layered Application Architecture 21
&lt;/p&gt;
&lt;p&gt;
What Is a Smart Client? 27
&lt;/p&gt;
&lt;p&gt;
Where Are We? 28
&lt;/p&gt;
&lt;h3&gt;Chapter 2: Working with Typed Data Sets and Table Adapters 31
&lt;/h3&gt;
&lt;p&gt;
A Quick Review of DataSets 31
&lt;/p&gt;
&lt;p&gt;
The Quest for Type Safety 34
&lt;/p&gt;
&lt;p&gt;
Typed Data Set Internals 37
&lt;/p&gt;
&lt;p&gt;
Creating Typed Data Sets 41
&lt;/p&gt;
&lt;p&gt;
Creating Typed Data Sets with the Data Set Designer 42
&lt;/p&gt;
&lt;p&gt;
Typed Data Set-Generated Code 49
&lt;/p&gt;
&lt;p&gt;
Introduction to Table Adapters 52
&lt;/p&gt;
&lt;p&gt;
Filling and Updating a Typed Data Set with a Table Adapter 56
&lt;/p&gt;
&lt;p&gt;
Connection Management 58
&lt;/p&gt;
&lt;p&gt;
Adding Transaction Support to a Table Adapter 62
&lt;/p&gt;
&lt;p&gt;
Adding Helper Data Access Methods 66
&lt;/p&gt;
&lt;p&gt;
Basing Table Adapters on Stored Procedures or Views 67
&lt;/p&gt;
&lt;p&gt;
Adding Queries to Table Adapters 69
&lt;/p&gt;
&lt;p&gt;
Creating Typed Data Sets with Command Line Tools 77
&lt;/p&gt;
&lt;p&gt;
Using Typed Data Sets in Your Code 78
&lt;/p&gt;
&lt;p&gt;
Where Are We? 79
&lt;/p&gt;
&lt;h3&gt;Chapter 3: Introducing Data Binding in Windows Forms 81
&lt;/h3&gt;
&lt;p&gt;
The 40,000-Foot View of Data Binding 81
&lt;/p&gt;
&lt;p&gt;
Binding Data Collections to a Grid 86
&lt;/p&gt;
&lt;p&gt;
Binding Data Collections to Multi-Valued Controls 88
&lt;/p&gt;
&lt;p&gt;
Binding Data to Individual Controls on a Form 90
&lt;/p&gt;
&lt;p&gt;
Data Paths Within Data Sources 92
&lt;/p&gt;
&lt;p&gt;
Synchronizing Data Between Controls 96
&lt;/p&gt;
&lt;p&gt;
Smarter Data Containment 97
&lt;/p&gt;
&lt;p&gt;
Paging Through Data 99
&lt;/p&gt;
&lt;p&gt;
Master-Details Data Binding 104
&lt;/p&gt;
&lt;p&gt;
Updating Data Sources Through Data Binding 106
&lt;/p&gt;
&lt;p&gt;
Where Are We? 108
&lt;/p&gt;
&lt;h3&gt;Chapter 4: Binding Controls to Data Sources 111
&lt;/h3&gt;
&lt;p&gt;
Getting to Know the BindingSource Component 111
&lt;/p&gt;
&lt;p&gt;
Simple Data Binding with Binding Sources 112
&lt;/p&gt;
&lt;p&gt;
Chaining Binding Sources for Master-Details Data Binding 116
&lt;/p&gt;
&lt;p&gt;
Navigating Data Through a Binding Source 121
&lt;/p&gt;
&lt;p&gt;
Manipulating Data Through a Binding Source 122
&lt;/p&gt;
&lt;p&gt;
Using a Binding Source as a Data Storage Container 124
&lt;/p&gt;
&lt;p&gt;
Filling a Binding Source with a Data Reader 126
&lt;/p&gt;
&lt;p&gt;
Sorting, Searching, and Filtering Presented Data with a Binding Source 128
&lt;/p&gt;
&lt;p&gt;
Monitoring the Data with Events 131
&lt;/p&gt;
&lt;p&gt;
Restricting Changes to the Data 133
&lt;/p&gt;
&lt;p&gt;
Underneath the Covers of Data Binding for Complex Types 134
&lt;/p&gt;
&lt;p&gt;
Binding an Image Column to a PictureBox Control 141
&lt;/p&gt;
&lt;p&gt;
Binding a DateTime Column to a DateTimePicker 142
&lt;/p&gt;
&lt;p&gt;
Binding a DateTime Column to a TextBox 144
&lt;/p&gt;
&lt;p&gt;
Binding a Numeric Column to a TextBox 145
&lt;/p&gt;
&lt;p&gt;
Automatic Formatting and Parsing Summary 147
&lt;/p&gt;
&lt;p&gt;
Going Beyond Built-In Type Conversion with Binding Events 148
&lt;/p&gt;
&lt;p&gt;
Handling the Format Event 154
&lt;/p&gt;
&lt;p&gt;
Handling the Parse Event 156
&lt;/p&gt;
&lt;p&gt;
Completing the Editing Process 157
&lt;/p&gt;
&lt;p&gt;
Making the User’s Life Easier with AutoComplete 160
&lt;/p&gt;
&lt;p&gt;
Data Binding Lifecycle 162
&lt;/p&gt;
&lt;p&gt;
Smarter Child-Parent Data Binding 163
&lt;/p&gt;
&lt;p&gt;
Binding to Multiple Copies of Data 165
&lt;/p&gt;
&lt;p&gt;
Updating Parent Data-Bound Controls from Child Data-Bound Controls 168
&lt;/p&gt;
&lt;p&gt;
Synchronizing Many-to-Many Related Collections 172
&lt;/p&gt;
&lt;p&gt;
Where Are We? 176
&lt;/p&gt;
&lt;h3&gt;Chapter 5: Generating Bound Controls with the Visual Studio Designer 177
&lt;/h3&gt;
&lt;p&gt;
Working with the Data Sources Window 177
&lt;/p&gt;
&lt;p&gt;
Adding Data Sources to a Project 179
&lt;/p&gt;
&lt;p&gt;
Choosing the Type of Data Source 180
&lt;/p&gt;
&lt;p&gt;
Adding a Database Data Source 181
&lt;/p&gt;
&lt;p&gt;
Adding a Web Service Data Source 185
&lt;/p&gt;
&lt;p&gt;
Adding an Object Data Source 186
&lt;/p&gt;
&lt;p&gt;
Generating Bound Controls from Data Sources 189
&lt;/p&gt;
&lt;p&gt;
Selecting the Bound Control Type 196
&lt;/p&gt;
&lt;p&gt;
Customizing the Bound Control Types 196
&lt;/p&gt;
&lt;p&gt;
Binding Existing Controls to Data Sources 199
&lt;/p&gt;
&lt;p&gt;
Behind the Scenes: Designer Code and Data Sources Files 202
&lt;/p&gt;
&lt;p&gt;
Other Designer Data-Binding Code Generation 205
&lt;/p&gt;
&lt;p&gt;
Setting Control Data Binding Through the Properties Window 206
&lt;/p&gt;
&lt;p&gt;
Generating Data Bindings with Smart Tags 210
&lt;/p&gt;
&lt;p&gt;
Generating Master-Details Data-Bound Controls with the Designer 214
&lt;/p&gt;
&lt;p&gt;
Where Are We? 216
&lt;/p&gt;
&lt;h3&gt;Chapter 6: Presenting Data with the DataGridView Control 217
&lt;/h3&gt;
&lt;p&gt;
DataGridView Overview 218
&lt;/p&gt;
&lt;p&gt;
Basic Data Binding with the DataGridView 219
&lt;/p&gt;
&lt;p&gt;
Controlling Modifications to Data in the Grid 221
&lt;/p&gt;
&lt;p&gt;
Programmatic DataGridView Construction 222
&lt;/p&gt;
&lt;p&gt;
Custom Column Content with Unbound Columns 226
&lt;/p&gt;
&lt;p&gt;
Displaying Computed Data in Virtual Mode 233
&lt;/p&gt;
&lt;p&gt;
Using the Built-In Column Types 241
&lt;/p&gt;
&lt;p&gt;
Built-In Header Cells 255
&lt;/p&gt;
&lt;p&gt;
Handling Grid Data Edits 256
&lt;/p&gt;
&lt;p&gt;
Automatic Column Sizing 259
&lt;/p&gt;
&lt;p&gt;
Column and Row Freezing 262
&lt;/p&gt;
&lt;p&gt;
Using the Designer to Define Grids 263
&lt;/p&gt;
&lt;p&gt;
Column Reordering 266
&lt;/p&gt;
&lt;p&gt;
Defining Custom Column and Cell Types 269
&lt;/p&gt;
&lt;p&gt;
Utilizing Cell-Oriented Grid Features 277
&lt;/p&gt;
&lt;p&gt;
Formatting with Styles 281
&lt;/p&gt;
&lt;p&gt;
Where Are We? 284
&lt;/p&gt;
&lt;h3&gt;Chapter 7: Understanding Data-Binding Interfaces 285
&lt;/h3&gt;
&lt;p&gt;
What Does Data Binding Have to Do with Interfaces? 286
&lt;/p&gt;
&lt;p&gt;
The IEnumerable and IEnumerator Interfaces: Supporting Iteration Through Collections
289
&lt;/p&gt;
&lt;p&gt;
The ICollection Interface: Controlling Access to a Collection 295
&lt;/p&gt;
&lt;p&gt;
The IList Interface: Enabling Data Binding 298
&lt;/p&gt;
&lt;p&gt;
The IListSource Interface: Exposing Collections of Collections 303
&lt;/p&gt;
&lt;p&gt;
Property Descriptors: Allowing Dynamic Data Item Information Discovery 305
&lt;/p&gt;
&lt;p&gt;
The ITypedList Interface: Exposing Data-Binding Properties 307
&lt;/p&gt;
&lt;p&gt;
The IBindingList Interface: Providing Rich Binding Support 310
&lt;/p&gt;
&lt;p&gt;
The IBindingListView Interface: Supporting Advanced Sorting and Filtering 323
&lt;/p&gt;
&lt;p&gt;
The ICancelAddNew Interface: Supporting Transactional Inserts in a Collection 325
&lt;/p&gt;
&lt;p&gt;
The IRaiseItemChangedEvents Interface: Providing Item Modification Notifications on
Collections 327
&lt;/p&gt;
&lt;p&gt;
The IEditableObject Interface: Supporting Transactional Item Modifications 328
&lt;/p&gt;
&lt;p&gt;
The INotifyPropertyChanged Interface: Publishing Item Change Notifications 329
&lt;/p&gt;
&lt;p&gt;
The ICustomTypeDescriptor Interface: Exposing Custom Type Information 332
&lt;/p&gt;
&lt;p&gt;
The ISupportInitialize Interface: Supporting Designer Initialization 334
&lt;/p&gt;
&lt;p&gt;
The IDataErrorInfo Interface: Providing Error Information 330
&lt;/p&gt;
&lt;p&gt;
The ISupportInitializeNotification Interface: Supporting Interdependent Component
Initialization 337
&lt;/p&gt;
&lt;p&gt;
The ICurrencyManagerProvider Interface: Exposing a Data Container’s CurrencyManager
341
&lt;/p&gt;
&lt;p&gt;
Where Are We? 341
&lt;/p&gt;
&lt;h3&gt;Chapter 8: Implementing Custom Data-Bound Controls 343
&lt;/h3&gt;
&lt;p&gt;
Extending Framework Data-Bound Controls 344
&lt;/p&gt;
&lt;p&gt;
Creating a Grouped Column DataGridView 345
&lt;/p&gt;
&lt;p&gt;
Using Custom Controls 350
&lt;/p&gt;
&lt;p&gt;
The User Control Test Container 352
&lt;/p&gt;
&lt;p&gt;
Developing Data-Bound Container Controls 353
&lt;/p&gt;
&lt;p&gt;
Building a Filtered Grid Control 354
&lt;/p&gt;
&lt;p&gt;
Adding Data-Binding Capability to a Custom Control 357
&lt;/p&gt;
&lt;p&gt;
Supporting Designer Initialization of Data Binding 359
&lt;/p&gt;
&lt;p&gt;
Specifying Binding Properties on a Control 360
&lt;/p&gt;
&lt;p&gt;
Supporting Delayed Initialization with ISupportInitialize 362
&lt;/p&gt;
&lt;p&gt;
Dynamically Determining the Properties of a Data Source 367
&lt;/p&gt;
&lt;p&gt;
Autocompleting Input in a TextBox Control 371
&lt;/p&gt;
&lt;p&gt;
Autosizing Columns in the Grid 375
&lt;/p&gt;
&lt;p&gt;
Winding Up the Filtered Grid Example 376
&lt;/p&gt;
&lt;p&gt;
Building a Custom Data-Bound Control from Scratch 379
&lt;/p&gt;
&lt;p&gt;
Building a Data-Bound Charting Control for Decision Support 379
&lt;/p&gt;
&lt;p&gt;
Coding a Data-Bound Custom Control 384
&lt;/p&gt;
&lt;p&gt;
Adding Editing Support to a Custom Data Bound Control 391
&lt;/p&gt;
&lt;p&gt;
Where Are We? 397
&lt;/p&gt;
&lt;h3&gt;Chapter 9: Implementing Custom Data-Bound Business Objects and Collections 399
&lt;/h3&gt;
&lt;p&gt;
Defining and Working with Data-Bound Business Objects 400
&lt;/p&gt;
&lt;p&gt;
Defining and Working with Data-Bound Business Object Collections 405
&lt;/p&gt;
&lt;p&gt;
.NET Framework Generic Collection Classes 406
&lt;/p&gt;
&lt;p&gt;
The CustomBusinessObjects Example 408
&lt;/p&gt;
&lt;p&gt;
Setting the Textual Data-Binding Behavior of Custom Objects 415
&lt;/p&gt;
&lt;p&gt;
Supporting Transacted Object Editing with IEditableObject 416
&lt;/p&gt;
&lt;p&gt;
Supporting Object Edit Notifications with Property Change Events 420
&lt;/p&gt;
&lt;p&gt;
Supporting Object Edit Notifications with INotifyPropertyChanged 423
&lt;/p&gt;
&lt;p&gt;
Using BindingList&amp;lt;T&amp;gt; to Create Rich Object Collections 424
&lt;/p&gt;
&lt;p&gt;
Creating a Custom Collection Type Based on BindingList&amp;lt;T&amp;gt; 426
&lt;/p&gt;
&lt;p&gt;
Managing Transacted Additions to a Collection 439
&lt;/p&gt;
&lt;p&gt;
Raising Item Changed Events 441
&lt;/p&gt;
&lt;p&gt;
Adding IBindingListView Functionality 443
&lt;/p&gt;
&lt;p&gt;
Binding to Business Objects Through the Data Sources Window 453
&lt;/p&gt;
&lt;p&gt;
Where Are We? 455
&lt;/p&gt;
&lt;h3&gt;Chapter 10: Validating Data Input and Handling Errors 457
&lt;/h3&gt;
&lt;p&gt;
Windows Forms Validation 458
&lt;/p&gt;
&lt;p&gt;
Handling Validation Events 459
&lt;/p&gt;
&lt;p&gt;
DataGridView Validation Events 462
&lt;/p&gt;
&lt;p&gt;
Validation Up the Control Hierarchy 463
&lt;/p&gt;
&lt;p&gt;
Displaying Validation Errors with the ErrorProvider Control 464
&lt;/p&gt;
&lt;p&gt;
DataGridView Error Displays 467
&lt;/p&gt;
&lt;p&gt;
DataGridView DataError Event 468
&lt;/p&gt;
&lt;p&gt;
Controlling Validation Behavior with the AutoValidate Property 471
&lt;/p&gt;
&lt;p&gt;
Validation down the Control Hierarchy 472
&lt;/p&gt;
&lt;p&gt;
Extended Validation Controls 474
&lt;/p&gt;
&lt;p&gt;
Capturing Data Errors on Data Sets 475
&lt;/p&gt;
&lt;p&gt;
Providing Error Information from Custom Objects with IDataErrorInfo 479
&lt;/p&gt;
&lt;p&gt;
Data Concurrency Resolution 483
&lt;/p&gt;
&lt;p&gt;
Where Are We? 484
&lt;/p&gt;
&lt;h3&gt;Appendix A: Binding to Data in ASP.NET 487
&lt;/h3&gt;
&lt;p&gt;
ASP.NET Page Processing Basics 489
&lt;/p&gt;
&lt;p&gt;
Data Binding in ASP.NET 1.X 490
&lt;/p&gt;
&lt;p&gt;
Data-Binding Overview in ASP.NET 2.0 498
&lt;/p&gt;
&lt;p&gt;
Data Sources 499
&lt;/p&gt;
&lt;p&gt;
Data-Binding Expressions 508
&lt;/p&gt;
&lt;p&gt;
GridView Control 509
&lt;/p&gt;
&lt;p&gt;
DetailsView Control 512
&lt;/p&gt;
&lt;p&gt;
FormView Control 514
&lt;/p&gt;
&lt;p&gt;
Master-Details Binding 515
&lt;/p&gt;
&lt;p&gt;
Hierarchical Binding 518
&lt;/p&gt;
&lt;p&gt;
Where Are We? 519
&lt;/p&gt;
&lt;h3&gt;Appendix B: Binding Data in WinFx Applications 521
&lt;/h3&gt;
&lt;p&gt;
WinFx UI Programming and Capabilities Overview 522
&lt;/p&gt;
&lt;p&gt;
Writing a Simple WinFx Application 525
&lt;/p&gt;
&lt;p&gt;
WinFx Data Binding 101 532
&lt;/p&gt;
&lt;p&gt;
Data Contexts and Data Sources 536
&lt;/p&gt;
&lt;p&gt;
What About XAML? 537
&lt;/p&gt;
&lt;p&gt;
Binding a Collection to a Grid with Templates 541
&lt;/p&gt;
&lt;p&gt;
Control Styling in WinFx 543
&lt;/p&gt;
&lt;p&gt;
Where Are We? 545
&lt;/p&gt;
&lt;h3&gt;Appendix C: Programming Windows Forms Applications 547
&lt;/h3&gt;
&lt;p&gt;
Your First Windows Forms Data Application 548
&lt;/p&gt;
&lt;p&gt;
Creating Windows Forms Applications with Visual Studio 554
&lt;/p&gt;
&lt;p&gt;
Windows Forms Designer-Generated Code (New in 2.0) 563
&lt;/p&gt;
&lt;p&gt;
A Brief Tour of the Windows Forms Architecture 567
&lt;/p&gt;
&lt;p&gt;
The Dawn of .NET Execution—The Main Method 570
&lt;/p&gt;
&lt;p&gt;
Handling Control Events 574
&lt;/p&gt;
&lt;p&gt;
Displaying Other Forms 576
&lt;/p&gt;
&lt;p&gt;
Containing Forms Within a Parent Form 577
&lt;/p&gt;
&lt;p&gt;
Common Data Display Controls 578
&lt;/p&gt;
&lt;p&gt;
Creating a Custom User Control 586
&lt;/p&gt;
&lt;p&gt;
Laying Out Controls on a Form 589
&lt;/p&gt;
&lt;p&gt;
Setting Tab Order 596
&lt;/p&gt;
&lt;p&gt;
Command and Control of Your Windows Forms Applications (New in 2.0) 598
&lt;/p&gt;
&lt;p&gt;
Where Are We? 600
&lt;/p&gt;
&lt;h3&gt;Appendix D: Accessing Data with ADO.NET 601
&lt;/h3&gt;
&lt;p&gt;
Relational Data Access 603
&lt;/p&gt;
&lt;p&gt;
The Ubiquitous DataSet 607
&lt;/p&gt;
&lt;p&gt;
Loading Data Sets from a File 609
&lt;/p&gt;
&lt;p&gt;
Creating a Data Set Programmatically 611
&lt;/p&gt;
&lt;p&gt;
Loading Data Sets from a Database 613
&lt;/p&gt;
&lt;p&gt;
Loading a DataTable with a DataReader 619
&lt;/p&gt;
&lt;p&gt;
Master-Details DataSets 621
&lt;/p&gt;
&lt;p&gt;
Retrieving Data with Stored Procedures 623
&lt;/p&gt;
&lt;p&gt;
Updating the Database Using Data Sets 624
&lt;/p&gt;
&lt;p&gt;
Handling Concurrency 628
&lt;/p&gt;
&lt;p&gt;
Updating with Data Sets and Stored Procedures 632
&lt;/p&gt;
&lt;p&gt;
Searching Data Sets 637
&lt;/p&gt;
&lt;p&gt;
Merging Data from Multiple Data Sets 639
&lt;/p&gt;
&lt;p&gt;
Working with Data Views 641
&lt;/p&gt;
&lt;p&gt;
Working with Transactions 643
&lt;/p&gt;
&lt;p&gt;
Scoping Transactions with System.Transactions 647
&lt;/p&gt;
&lt;p&gt;
Client-Side Transactions 650
&lt;/p&gt;
&lt;p&gt;
Data Set and Data Adapter Events 651
&lt;/p&gt;
&lt;p&gt;
Reading Data into Business Objects 654
&lt;/p&gt;
&lt;p&gt;
XML Data Access 658
&lt;/p&gt;
&lt;p&gt;
Working with the XmlDataDocument Class 659
&lt;/p&gt;
&lt;p&gt;
Working with the XPathDocument Class 663
&lt;/p&gt;
&lt;p&gt;
Loading Data into an XPathDocument 664
&lt;/p&gt;
&lt;p&gt;
Querying XML Data 665
&lt;/p&gt;
&lt;p&gt;
Navigating an XML Document 667
&lt;/p&gt;
&lt;p&gt;
Where Are We? 670
&lt;/p&gt;
&lt;h4&gt;&lt;i&gt;Index 671&lt;/i&gt;
&lt;/h4&gt;
&lt;img width="0" height="0" src="http://www.softinsight.com/bnoyes/aggbug.ashx?id=ecf030b7-4b2f-4300-9c8e-e0c9077d5a59" /&gt;</description>
      <comments>http://www.softinsight.com/bnoyes/CommentView,guid,ecf030b7-4b2f-4300-9c8e-e0c9077d5a59.aspx</comments>
      <category>.NET</category>
      <category>Data Binding</category>
      <category>Languages and Tools</category>
      <category>Publishing</category>
    </item>
    <item>
      <trackback:ping>http://www.softinsight.com/bnoyes/Trackback.aspx?guid=aa54dc2b-a4e9-4bb8-97ec-a0debbbd868a</trackback:ping>
      <pingback:server>http://www.softinsight.com/bnoyes/pingback.aspx</pingback:server>
      <pingback:target>http://www.softinsight.com/bnoyes/PermaLink,guid,aa54dc2b-a4e9-4bb8-97ec-a0debbbd868a.aspx</pingback:target>
      <dc:creator />
      <wfw:comment>http://www.softinsight.com/bnoyes/CommentView,guid,aa54dc2b-a4e9-4bb8-97ec-a0debbbd868a.aspx</wfw:comment>
      <wfw:commentRss>http://www.softinsight.com/bnoyes/SyndicationService.asmx/GetEntryCommentsRss?guid=aa54dc2b-a4e9-4bb8-97ec-a0debbbd868a</wfw:commentRss>
      <slash:comments>3</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
I gave a talk on data binding at the Sarasota FL .NEt Users Group last night. Had
a great time, and it was especially fun to present this topic this time since it was
the first time presenting on data binding since my book came out. Gave away a couple
copies. It was also great to go have some beers with the group members afterwards,
including fellow MVPs <a href="http://www.vbnetexpert.com/">Stan Schultes</a> and <a href="http://codebetter.com/blogs/david.hayden/default.aspx">David
Hayden</a>.
</p>
        <p>
You can grab the slides and demos here:  <a href="http://www.softinsight.com/downloads/INETA/DataBindingwithWindowsForms2.0.pdf">Slides</a>   <a href="http://www.softinsight.com/downloads/INETA/WindowsFormsDataBinding_Jan06.zip">Demos</a></p>
        <img width="0" height="0" src="http://www.softinsight.com/bnoyes/aggbug.ashx?id=aa54dc2b-a4e9-4bb8-97ec-a0debbbd868a" />
      </body>
      <title>Data Binding with Windows Forms 2.0 Talk in Sarasota last night</title>
      <guid isPermaLink="false">http://www.softinsight.com/bnoyes/PermaLink,guid,aa54dc2b-a4e9-4bb8-97ec-a0debbbd868a.aspx</guid>
      <link>http://www.softinsight.com/bnoyes/2006/01/18/DataBindingWithWindowsForms20TalkInSarasotaLastNight.aspx</link>
      <pubDate>Wed, 18 Jan 2006 14:16:15 GMT</pubDate>
      <description>&lt;p&gt;
I gave a talk on data binding at the Sarasota FL .NEt Users Group last night. Had
a great time, and it was especially fun to present this topic this time since it was
the first time presenting on data binding since my book came out. Gave away a couple
copies. It was also great to go have some beers with the group members afterwards,
including fellow MVPs &lt;a href="http://www.vbnetexpert.com/"&gt;Stan Schultes&lt;/a&gt; and &lt;a href="http://codebetter.com/blogs/david.hayden/default.aspx"&gt;David
Hayden&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
You can grab the slides and demos here:&amp;nbsp; &lt;a href="http://www.softinsight.com/downloads/INETA/DataBindingwithWindowsForms2.0.pdf"&gt;Slides&lt;/a&gt;&amp;nbsp;&amp;nbsp; &lt;a href="http://www.softinsight.com/downloads/INETA/WindowsFormsDataBinding_Jan06.zip"&gt;Demos&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.softinsight.com/bnoyes/aggbug.ashx?id=aa54dc2b-a4e9-4bb8-97ec-a0debbbd868a" /&gt;</description>
      <comments>http://www.softinsight.com/bnoyes/CommentView,guid,aa54dc2b-a4e9-4bb8-97ec-a0debbbd868a.aspx</comments>
      <category>.NET</category>
      <category>Community</category>
      <category>Data Binding</category>
      <category>Languages and Tools</category>
      <category>Speaking</category>
    </item>
    <item>
      <trackback:ping>http://www.softinsight.com/bnoyes/Trackback.aspx?guid=c606c1fc-8adc-4802-b973-59f7d9d53e81</trackback:ping>
      <pingback:server>http://www.softinsight.com/bnoyes/pingback.aspx</pingback:server>
      <pingback:target>http://www.softinsight.com/bnoyes/PermaLink,guid,c606c1fc-8adc-4802-b973-59f7d9d53e81.aspx</pingback:target>
      <dc:creator />
      <wfw:comment>http://www.softinsight.com/bnoyes/CommentView,guid,c606c1fc-8adc-4802-b973-59f7d9d53e81.aspx</wfw:comment>
      <wfw:commentRss>http://www.softinsight.com/bnoyes/SyndicationService.asmx/GetEntryCommentsRss?guid=c606c1fc-8adc-4802-b973-59f7d9d53e81</wfw:commentRss>
      <slash:comments>8</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
It was a very cool feeling to have a box of my books delivered to me on Friday. After
starting way too early on it and rewriting many of the chapters multiple times as
the capabilities evolved in Visual Studio 2005 and .NET 2.0, it felt very good to
finish the writing a couple months ago. But having the finished product show up on
my doorstep was very cool.
</p>
        <p>
So stop reading this and <a href="http://www.amazon.com/gp/product/032126892X/qid=1124482085/sr=11-1/ref=sr_11_1/102-9037627-4093720?n=283155">go
buy one</a> dammit! :)
</p>
        <img width="0" height="0" src="http://www.softinsight.com/bnoyes/aggbug.ashx?id=c606c1fc-8adc-4802-b973-59f7d9d53e81" />
      </body>
      <title>Data Binding with Windows Forms 2.0 is out!</title>
      <guid isPermaLink="false">http://www.softinsight.com/bnoyes/PermaLink,guid,c606c1fc-8adc-4802-b973-59f7d9d53e81.aspx</guid>
      <link>http://www.softinsight.com/bnoyes/2006/01/18/DataBindingWithWindowsForms20IsOut.aspx</link>
      <pubDate>Wed, 18 Jan 2006 14:10:01 GMT</pubDate>
      <description>&lt;p&gt;
It was a very cool feeling to have a box of my books delivered to me on Friday. After
starting way too early on it and rewriting many of the chapters multiple times as
the capabilities evolved in Visual Studio 2005 and .NET 2.0, it felt very good to
finish the writing a couple months ago. But having the finished product show up on
my doorstep was very cool.
&lt;/p&gt;
&lt;p&gt;
So stop reading this and &lt;a href="http://www.amazon.com/gp/product/032126892X/qid=1124482085/sr=11-1/ref=sr_11_1/102-9037627-4093720?n=283155"&gt;go
buy one&lt;/a&gt; dammit! :)
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.softinsight.com/bnoyes/aggbug.ashx?id=c606c1fc-8adc-4802-b973-59f7d9d53e81" /&gt;</description>
      <comments>http://www.softinsight.com/bnoyes/CommentView,guid,c606c1fc-8adc-4802-b973-59f7d9d53e81.aspx</comments>
      <category>.NET</category>
      <category>Data Binding</category>
      <category>Languages and Tools</category>
      <category>Publishing</category>
    </item>
    <item>
      <trackback:ping>http://www.softinsight.com/bnoyes/Trackback.aspx?guid=00af11e8-c4f9-4b00-8069-a88235deac84</trackback:ping>
      <pingback:server>http://www.softinsight.com/bnoyes/pingback.aspx</pingback:server>
      <pingback:target>http://www.softinsight.com/bnoyes/PermaLink,guid,00af11e8-c4f9-4b00-8069-a88235deac84.aspx</pingback:target>
      <dc:creator />
      <wfw:comment>http://www.softinsight.com/bnoyes/CommentView,guid,00af11e8-c4f9-4b00-8069-a88235deac84.aspx</wfw:comment>
      <wfw:commentRss>http://www.softinsight.com/bnoyes/SyndicationService.asmx/GetEntryCommentsRss?guid=00af11e8-c4f9-4b00-8069-a88235deac84</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
I posted all the sample code for my book Data Binding with Windows Forms 2.0 on the
book Web site at <a href="http://www.softinsight.com/databindingbook">http://www.softinsight.com/databindingbook</a>.
The samples are available in both C# and VB, even though all the code in the book
is in C#. The book should be hitting the shelves very soon and is already selling
well on Amazon.
</p>
        <p>
I also posted instructions for running the samples if you do not have a non-default
instance of SQL Server or don't have Northwind on your machine yet, also how to run
the samples with SQL Server 2005 Express, Visual C# 2005 Express and Visual Basic
2005 Express.
</p>
        <p>
Happy Data Binding!
</p>
        <img width="0" height="0" src="http://www.softinsight.com/bnoyes/aggbug.ashx?id=00af11e8-c4f9-4b00-8069-a88235deac84" />
      </body>
      <title>Data Binding with Windows Forms 2.0 Sample Code Posted</title>
      <guid isPermaLink="false">http://www.softinsight.com/bnoyes/PermaLink,guid,00af11e8-c4f9-4b00-8069-a88235deac84.aspx</guid>
      <link>http://www.softinsight.com/bnoyes/2006/01/05/DataBindingWithWindowsForms20SampleCodePosted.aspx</link>
      <pubDate>Thu, 05 Jan 2006 15:06:29 GMT</pubDate>
      <description>&lt;p&gt;
I posted all the sample code for my book Data Binding with Windows Forms 2.0 on the
book Web site at &lt;a href="http://www.softinsight.com/databindingbook"&gt;http://www.softinsight.com/databindingbook&lt;/a&gt;.
The samples are available in both C# and VB, even though all the code in the book
is in C#. The book should be hitting the shelves very soon and is already selling
well on Amazon.
&lt;/p&gt;
&lt;p&gt;
I also posted instructions for running the samples if you do not have a non-default
instance of SQL Server or don't have Northwind on your machine yet, also how to run
the samples with SQL Server 2005 Express, Visual C# 2005 Express and Visual Basic
2005 Express.
&lt;/p&gt;
&lt;p&gt;
Happy Data Binding!
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.softinsight.com/bnoyes/aggbug.ashx?id=00af11e8-c4f9-4b00-8069-a88235deac84" /&gt;</description>
      <comments>http://www.softinsight.com/bnoyes/CommentView,guid,00af11e8-c4f9-4b00-8069-a88235deac84.aspx</comments>
      <category>.NET</category>
      <category>Data Binding</category>
      <category>Languages and Tools</category>
      <category>Publishing</category>
    </item>
    <item>
      <trackback:ping>http://www.softinsight.com/bnoyes/Trackback.aspx?guid=d5dccf90-32a4-41e0-88a2-12e8898e6224</trackback:ping>
      <pingback:server>http://www.softinsight.com/bnoyes/pingback.aspx</pingback:server>
      <pingback:target>http://www.softinsight.com/bnoyes/PermaLink,guid,d5dccf90-32a4-41e0-88a2-12e8898e6224.aspx</pingback:target>
      <dc:creator />
      <wfw:comment>http://www.softinsight.com/bnoyes/CommentView,guid,d5dccf90-32a4-41e0-88a2-12e8898e6224.aspx</wfw:comment>
      <wfw:commentRss>http://www.softinsight.com/bnoyes/SyndicationService.asmx/GetEntryCommentsRss?guid=d5dccf90-32a4-41e0-88a2-12e8898e6224</wfw:commentRss>
      <slash:comments>2</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
A common requirement and question that is very easy to solve with the DataGrid is
the need to have a column or columns in a grid that contain a drop down list of lookup
values from a related table. For example, in Northwind, we have the Products table
with a foreign key column SupplierID that relates the to Suppliers table. The values
in the Suppliers table could be treated as a list of lookup values for editing the
supplier associated with a product:
</p>
        <p>
          <img alt="Application image" hspace="0" src="http://www.softinsight.com/bnoyes/content/binary/comboapp.png" align="baseline" border="0" />
        </p>
        <p>
When a supplier is selected from the drop down list, it should set the SupplierID
column value for that row in the products table. This is very easy to achieve through
the Windows Forms designer and the smart tag for a DataGridView control. 
</p>
        <p>
Do the following to try it out:
</p>
        <p>
1. Create a Windows Forms Project.<br />
2. Add a data source to a data set that contains Products and Suppliers tables from
the Northwind database. This could be any kind of Data Source (Database, Object, Web
service), but for simplicity for trying out the designer, just use a database one
which adds the typed data set into the Windows Forms project. Products is the table
of data we will display in the grid, and Suppliers is the lookup table related through
a foreign key column in the Products table that we want to display as a combo box
of selectable values in the grid.<br />
3. Drag and drop Products from the Data Sources window onto the form. This will generate
the grid, a data set instance, a table adapter to fill it, a BindingSource component
hooked up to the data set and the Products table within it, a grid hooked up to the
products binding source, and a binding navigator hooked up to the binding source.<br />
4. Click on the grid smart tag (little triangle on upper right border of control).<br />
5. Select Dock in Parent Container.<br />
6. Select Edit Columns.<br />
7. Select the SupplierID column in the list on the left.<br />
8. Select the ColumnType property and set it to DataGridViewComboBoxColumn.<br />
9. Select the DataSource property and navigate down through the data source tree through
Other Data Sources &gt; Project Data Sources &gt; NorthwindDataSet &gt; Suppliers
table.
</p>
        <p>
          <img alt="data sources property editor" hspace="0" src="http://www.softinsight.com/bnoyes/content/binary/datasourcespropertyeditor.png" align="baseline" border="0" />
          <br />
10. Select the DisplayMember property and select CompanyName.<br />
11. Select the ValueMember property and select SupplierID.<br />
12. Click OK to close the Edit Columns dialog.<br />
13. Run the app and observe that you get the drop down list of suppliers. Selecting
a supplier actually changes the SupplierID column value for that row in the products
table to the appropriate foreign key value.
</p>
        <p>
You can download a completed sample that was generated with these steps <a href="http://www.softinsight.com/downloads/ComboColumnInGrid.zip">here</a>.
</p>
        <img width="0" height="0" src="http://www.softinsight.com/bnoyes/aggbug.ashx?id=d5dccf90-32a4-41e0-88a2-12e8898e6224" />
      </body>
      <title>Adding a Drop-Down List (ComboBox) Column of Lookup Values in a DataGridView</title>
      <guid isPermaLink="false">http://www.softinsight.com/bnoyes/PermaLink,guid,d5dccf90-32a4-41e0-88a2-12e8898e6224.aspx</guid>
      <link>http://www.softinsight.com/bnoyes/2005/12/01/AddingADropDownListComboBoxColumnOfLookupValuesInADataGridView.aspx</link>
      <pubDate>Thu, 01 Dec 2005 15:05:10 GMT</pubDate>
      <description>&lt;p&gt;
A common requirement and question that is very easy to solve with the DataGrid is
the need to have a column or columns in a grid that contain a drop down list of lookup
values from a related table. For example, in Northwind, we have the Products table
with a foreign key column SupplierID that relates the to Suppliers table. The values
in the Suppliers table could be treated as a list of lookup values for editing the
supplier associated with a product:
&lt;/p&gt;
&lt;p&gt;
&lt;img alt="Application image" hspace=0 src="http://www.softinsight.com/bnoyes/content/binary/comboapp.png" align=baseline border=0&gt;
&lt;/p&gt;
&lt;p&gt;
When a supplier is selected from the drop down list, it should set the SupplierID
column value for that row in the products table. This is very easy to achieve through
the Windows Forms designer and the smart tag for a DataGridView control. 
&lt;/p&gt;
&lt;p&gt;
Do the following to try it out:
&lt;/p&gt;
&lt;p&gt;
1. Create a Windows Forms Project.&lt;br&gt;
2. Add a data source to a data set that contains Products and Suppliers tables from
the Northwind database. This could be any kind of Data Source (Database, Object, Web
service), but for simplicity for trying out the designer, just use a database one
which adds the typed data set into the Windows Forms project. Products is the table
of data we will display in the grid, and Suppliers is the lookup table related through
a foreign key column in the Products table that we want to display as a combo box
of selectable values in the grid.&lt;br&gt;
3. Drag and drop Products from the Data Sources window onto the form. This will generate
the grid, a data set instance, a table adapter to fill it, a BindingSource component
hooked up to the data set and the Products table within it, a grid hooked up to the
products binding source, and a binding navigator hooked up to the binding source.&lt;br&gt;
4. Click on the grid smart tag (little triangle on upper right border of control).&lt;br&gt;
5. Select Dock in Parent Container.&lt;br&gt;
6. Select Edit Columns.&lt;br&gt;
7. Select the SupplierID column in the list on the left.&lt;br&gt;
8. Select the ColumnType property and set it to DataGridViewComboBoxColumn.&lt;br&gt;
9. Select the DataSource property and navigate down through the data source tree through
Other Data Sources &amp;gt; Project Data Sources &amp;gt; NorthwindDataSet &amp;gt; Suppliers
table.
&lt;/p&gt;
&lt;p&gt;
&lt;img alt="data sources property editor" hspace=0 src="http://www.softinsight.com/bnoyes/content/binary/datasourcespropertyeditor.png" align=baseline border=0&gt;
&lt;br&gt;
10. Select the DisplayMember property and select CompanyName.&lt;br&gt;
11. Select the ValueMember property and select SupplierID.&lt;br&gt;
12. Click OK to close the Edit Columns dialog.&lt;br&gt;
13. Run the app and observe that you get the drop down list of suppliers. Selecting
a supplier actually changes the SupplierID column value for that row in the products
table to the appropriate foreign key value.
&lt;/p&gt;
&lt;p&gt;
You can download a completed sample that was generated with these steps &lt;a href="http://www.softinsight.com/downloads/ComboColumnInGrid.zip"&gt;here&lt;/a&gt;.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.softinsight.com/bnoyes/aggbug.ashx?id=d5dccf90-32a4-41e0-88a2-12e8898e6224" /&gt;</description>
      <comments>http://www.softinsight.com/bnoyes/CommentView,guid,d5dccf90-32a4-41e0-88a2-12e8898e6224.aspx</comments>
      <category>.NET</category>
      <category>Data Binding</category>
      <category>Languages and Tools</category>
    </item>
    <item>
      <trackback:ping>http://www.softinsight.com/bnoyes/Trackback.aspx?guid=59ae0941-a088-4d69-8d9e-c48dab56bc2d</trackback:ping>
      <pingback:server>http://www.softinsight.com/bnoyes/pingback.aspx</pingback:server>
      <pingback:target>http://www.softinsight.com/bnoyes/PermaLink,guid,59ae0941-a088-4d69-8d9e-c48dab56bc2d.aspx</pingback:target>
      <dc:creator />
      <wfw:comment>http://www.softinsight.com/bnoyes/CommentView,guid,59ae0941-a088-4d69-8d9e-c48dab56bc2d.aspx</wfw:comment>
      <wfw:commentRss>http://www.softinsight.com/bnoyes/SyndicationService.asmx/GetEntryCommentsRss?guid=59ae0941-a088-4d69-8d9e-c48dab56bc2d</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <a href="http://www.softinsight.com/downloads/MSDNWebcasts/DataGridViewDemos.zip">Here
are the demos</a> from my MSDN Webcast today on the DataGridView control. 
</p>
        <p>
You can find the sample DataGridView chapter for my book <a href="http://searchsqlserver.techtarget.com/searchsqlserver/downloads/data_binding_proof.pdf">here</a>.
</p>
        <p>
You can view the webcast on demand through the links <a href="http://www.microsoft.com/events/series/msdnlaunch2005.mspx#Smart%20Client">here</a>.
</p>
        <img width="0" height="0" src="http://www.softinsight.com/bnoyes/aggbug.ashx?id=59ae0941-a088-4d69-8d9e-c48dab56bc2d" />
      </body>
      <title>DataGridView Webcast demos</title>
      <guid isPermaLink="false">http://www.softinsight.com/bnoyes/PermaLink,guid,59ae0941-a088-4d69-8d9e-c48dab56bc2d.aspx</guid>
      <link>http://www.softinsight.com/bnoyes/2005/11/29/DataGridViewWebcastDemos.aspx</link>
      <pubDate>Tue, 29 Nov 2005 19:44:11 GMT</pubDate>
      <description>&lt;p&gt;
&lt;a href="http://www.softinsight.com/downloads/MSDNWebcasts/DataGridViewDemos.zip"&gt;Here
are the demos&lt;/a&gt; from my MSDN Webcast today on the DataGridView control. 
&lt;/p&gt;
&lt;p&gt;
You can find the sample DataGridView chapter for my book &lt;a href="http://searchsqlserver.techtarget.com/searchsqlserver/downloads/data_binding_proof.pdf"&gt;here&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
You can view the webcast on demand through the links &lt;a href="http://www.microsoft.com/events/series/msdnlaunch2005.mspx#Smart%20Client"&gt;here&lt;/a&gt;.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.softinsight.com/bnoyes/aggbug.ashx?id=59ae0941-a088-4d69-8d9e-c48dab56bc2d" /&gt;</description>
      <comments>http://www.softinsight.com/bnoyes/CommentView,guid,59ae0941-a088-4d69-8d9e-c48dab56bc2d.aspx</comments>
      <category>.NET</category>
      <category>Community</category>
      <category>Data Binding</category>
      <category>Languages and Tools</category>
      <category>Speaking</category>
    </item>
    <item>
      <trackback:ping>http://www.softinsight.com/bnoyes/Trackback.aspx?guid=70acabc4-8554-43cc-8511-c2f6a2827942</trackback:ping>
      <pingback:server>http://www.softinsight.com/bnoyes/pingback.aspx</pingback:server>
      <pingback:target>http://www.softinsight.com/bnoyes/PermaLink,guid,70acabc4-8554-43cc-8511-c2f6a2827942.aspx</pingback:target>
      <dc:creator />
      <wfw:comment>http://www.softinsight.com/bnoyes/CommentView,guid,70acabc4-8554-43cc-8511-c2f6a2827942.aspx</wfw:comment>
      <wfw:commentRss>http://www.softinsight.com/bnoyes/SyndicationService.asmx/GetEntryCommentsRss?guid=70acabc4-8554-43cc-8511-c2f6a2827942</wfw:commentRss>
      <slash:comments>1</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
I just got finished doing my first talk here at DevConnections in Vegas and I think
it went pretty well. Great crowd, good questions, fun topic. 
</p>
        <p>
You can grab the slides and demos here: <a href="http://www.softinsight.com/downloads/DevConnections/BuildCustomDataBoundBusinessObjectsandCollections.pdf">Slides </a>  <a href="http://www.softinsight.com/downloads/DevConnections/DataBoundObjectsDemos.zip">Demos</a></p>
        <p>
The talk highlighted how to define custom objects and collections to make them suitable
for data binding, mostly for Windows Forms, but some of it is applicable to ASP.NET
as well.
</p>
        <p>
The key takeaways from the talk are:
</p>
        <ul>
          <li>
Implement INotifyPropertyChanged on any business entitity type you define that you
expect to use in data binding scenarios. This interface defines a contract for the
objects to raise PropertyChanged events whenever a property is set on the object.
It allows containing collections or bound controls to be notified when the contents
of the data object change, which helps with keeping controls synchronized in a form. 
</li>
          <li>
Use BindingList&lt;T&gt; to create strongly typed collections of objects that support
rich data binding. It provides full implementation of IList, ICollection, IEnumerable
and their generic strongly typed counterparts for whatever type parameter you provide,
and it provides a partial implementation of the IBindingList interface. The part that
it implements is firing ListChanged events when items are added or removed from the
collection. It also looks at the objects type that you provide as a type parameter,
and if it implements INotifyPropertyChanged, the collection will subscribe to the
PropertyChanged event on each object and raise ListChanged events with a change type
of PropertyChanged whenever the contents of an object in the collection change. These
features make BindingList&lt;T&gt; collections work seamlessly with data binding to
multiple controls and keeps the controls all in sync. 
</li>
          <li>
Use my BindingListView&lt;T&gt; class (in the demos and in my book) to get a generic
container that supports sorting (both IBindingList based single property sorts and
IBindingListView multi-property sorts), searching, and filtering.</li>
        </ul>
        <p>
If you were there at the end and saw the on-the-fly demo where I didn't see the saving
behavior that I thought I had just implemented, I tracked down the problem. the changes
were actually being saved. It was just the way I hooked up the data binding I wasn't
seeing those changes. 
</p>
        <p>
In the demo, I used the data sources window to generate a Details view (control collection)
bound to a collection of Album data. I changed one of the controls in the collection
which was bound to a GenreID property on the Album objects to a ComboBox. I then used
the Data Sources window to add data binidng to a Genre object collection to populate
the list of Genres in the combo box. This sets up the ComboBox to have its contents
determined by the Genre collection, but its SelectedValue property is bound to the
GenreID property on the current item in the Album collection - generally exactly what
you want to be able to edit a property on one object collection item through a lookup
list of values in another collection of objects. The problem was that after I selected
a new value in the combo box and saved the changes, then restarted the app, I wasn't
seeing the modified value set for the Album I was viewing in the other controls.
</p>
        <p>
It turns out the problem was just the order that I did the initial binding of the
control collection and the combobox BindingSources. In the form load I had added the
following two lines of code to bind the control collection and the combo box binding
sources:
</p>
        <p>
albumBindingSource.DataSource = <font color="#008080">Album</font><font size="4"><font size="2">.GetAlbums();<br />
genreBindingSource.DataSource = <font color="#008080">Genre</font>.GetGenres();</font></font></p>
        <p>
          <font size="4">
            <font size="2">The problem is that when you set the DataSource, that
is when it intializes the bound controls. So I was initializing the data bindings
for all of the controls based on the album data, then intializing the combo box of
Genres with a new set of data. That set the SelectedIndex of the ComboBox back to
zero, so I wasn't seeing the actual value of the Genre for the current Album, I was
just seeing the first Genre value in the Genre collection. The fix is simply to do
the initial binding in the reverse order:</font>
          </font>
        </p>
        <font size="4">
          <font size="2">
            <p>
              <font size="4">
                <font size="2">genreBindingSource.DataSource = <font color="#008080">Genre</font>.GetGenres();<br />
albumBindingSource.DataSource = <font color="#008080">Album</font><font size="4"><font size="2">.GetAlbums();</font></font></font>
              </font>
            </p>
            <p>
Then it works as expected.
</p>
            <p>
Some resources I mentioned in the talk, as well as some additional ones I gave related
to after-session questions:
</p>
            <p>
My Book: Data Binding in Windows Forms 2.0, Addison Wesley, January 2006<br /><a href="http://www.amazon.com/exec/obidos/ASIN/032126892X/qid%3D1124482085/sr%3D11-1/ref%3Dsr%5F11%5F1/102-3039504-6850510">http://www.amazon.com/exec/obidos/ASIN/032126892X/qid%3D1124482085/sr%3D11-1/ref%3Dsr%5F11%5F1/102-3039504-6850510</a><br />
Rocky Lhotka binding refresh problem post:<br /><a href="http://www.lhotka.net/WeBlog/PermaLink.aspx?guid=d8306469-7e76-4734-9811-777498808b85">http://www.lhotka.net/WeBlog/PermaLink.aspx?guid=d8306469-7e76-4734-9811-777498808b85</a><br />
Rocky Lhotka article on binding to business objects: Windows Forms Object Data Binding
in .NET 2.0, 15seconds.com, <a href="http://www.15seconds.com/issue/040614.htm">http://www.15seconds.com/issue/040614.htm</a><br />
My recent article on The Server Side .NET: Build a Data Access Layer with the Visual
Studio DataSet Designer, The Server Side .NET, Oct 2005, <a href="http://www.theserverside.net/articles/showarticle.tss?id=DataSetDesigner">http://www.theserverside.net/articles/showarticle.tss?id=DataSetDesigner</a><br />
My recent article in CoDe magazine: Tackle Complex Data Binding in Windows Forms 2.0,
CoDe Magazine, July/Aug 2005, <a href="http://www.code-magazine.com/Article.aspx?quickid=0507051">http://www.code-magazine.com/Article.aspx?quickid=0507051</a><font size="4"><font size="2"><font size="4"><font size="2"></font></font></font></font></p>
          </font>
        </font>
        <p>
          <span style="FONT-SIZE: 111%; COLOR: #ffff66">
            <font color="#000000">Enjoy!</font>
          </span>
        </p>
        <img width="0" height="0" src="http://www.softinsight.com/bnoyes/aggbug.ashx?id=70acabc4-8554-43cc-8511-c2f6a2827942" />
      </body>
      <title>Build Custom Data Bound Business Objects and Collections Talk at DevConnections this morning</title>
      <guid isPermaLink="false">http://www.softinsight.com/bnoyes/PermaLink,guid,70acabc4-8554-43cc-8511-c2f6a2827942.aspx</guid>
      <link>http://www.softinsight.com/bnoyes/2005/11/09/BuildCustomDataBoundBusinessObjectsAndCollectionsTalkAtDevConnectionsThisMorning.aspx</link>
      <pubDate>Wed, 09 Nov 2005 20:26:45 GMT</pubDate>
      <description>&lt;p&gt;
I just got finished doing my first talk here at DevConnections in Vegas and I think
it went pretty well. Great crowd, good questions, fun topic. 
&lt;/p&gt;
&lt;p&gt;
You can grab the slides and demos here: &lt;a href="http://www.softinsight.com/downloads/DevConnections/BuildCustomDataBoundBusinessObjectsandCollections.pdf"&gt;Slides&amp;nbsp;&lt;/a&gt;&amp;nbsp; &lt;a href="http://www.softinsight.com/downloads/DevConnections/DataBoundObjectsDemos.zip"&gt;Demos&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
The talk highlighted how to define custom objects and collections to make them suitable
for data binding, mostly for Windows Forms, but some of it is applicable to ASP.NET
as well.
&lt;/p&gt;
&lt;p&gt;
The key takeaways from the talk are:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
Implement INotifyPropertyChanged on any business entitity type you define that you
expect to use in data binding scenarios. This interface defines a contract for the
objects to raise PropertyChanged events whenever a property is set on the object.
It allows containing collections or bound controls to be notified when the contents
of the data object change, which helps with keeping controls synchronized in a form. 
&lt;li&gt;
Use BindingList&amp;lt;T&amp;gt; to create strongly typed collections of objects that support
rich data binding. It provides full implementation of IList, ICollection, IEnumerable
and their generic strongly typed counterparts for whatever type parameter you provide,
and it provides a partial implementation of the IBindingList interface. The part that
it implements is firing ListChanged events when items are added or removed from the
collection. It also looks at the objects type that you provide as a type parameter,
and if it implements INotifyPropertyChanged, the collection will subscribe to the
PropertyChanged event on each object and raise ListChanged events with a change type
of PropertyChanged whenever the contents of an object in the collection change. These
features make BindingList&amp;lt;T&amp;gt; collections work seamlessly with data binding to
multiple controls and keeps the controls all in sync. 
&lt;li&gt;
Use my BindingListView&amp;lt;T&amp;gt; class (in the demos and in my book) to get a generic
container that supports sorting (both IBindingList based single property sorts and
IBindingListView multi-property sorts), searching, and filtering.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
If you were there at the end and saw the on-the-fly demo where I didn't see the saving
behavior that I thought I had just implemented, I tracked down the problem. the changes
were actually being saved. It was just the way I hooked up the data binding I wasn't
seeing those changes. 
&lt;/p&gt;
&lt;p&gt;
In the demo, I used the data sources window to generate a Details view (control collection)
bound to a collection of Album data. I changed one of the controls in the collection
which was bound to a GenreID property on the Album objects to a ComboBox. I then used
the Data Sources window to add data binidng to a Genre object collection to populate
the list of Genres in the combo box. This sets up the ComboBox to have its contents
determined by the Genre collection, but its SelectedValue property is bound to the
GenreID property on the current item in the Album collection - generally exactly what
you want to be able to edit a property on one object collection item through a lookup
list of values in another collection of objects. The problem was that after I selected
a new value in the combo box and saved the changes, then restarted the app, I wasn't
seeing the modified value set for the Album I was viewing in the other controls.
&lt;/p&gt;
&lt;p&gt;
It turns out the problem was just the order that I did the initial binding of the
control collection and the combobox BindingSources. In the form load I had added the
following two lines of code to bind the control collection and the combo box binding
sources:
&lt;/p&gt;
&lt;p&gt;
albumBindingSource.DataSource = &lt;font color=#008080&gt;Album&lt;/font&gt;&lt;font size=4&gt;&lt;font size=2&gt;.GetAlbums();&lt;br&gt;
genreBindingSource.DataSource = &lt;font color=#008080&gt;Genre&lt;/font&gt;.GetGenres();&lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font size=4&gt;&lt;font size=2&gt;The problem is that when you set the DataSource, that is
when it intializes the bound controls. So I was initializing the data bindings for
all of the controls based on the album data, then intializing the combo box of Genres
with a new set of data. That set the SelectedIndex of the ComboBox back to zero, so
I wasn't seeing the actual value of the Genre for the current Album, I was just seeing
the first Genre value in the Genre collection. The fix is simply to do the initial
binding in the reverse order:&lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;font size=4&gt;&lt;font size=2&gt; 
&lt;p&gt;
&lt;font size=4&gt;&lt;font size=2&gt;genreBindingSource.DataSource = &lt;font color=#008080&gt;Genre&lt;/font&gt;.GetGenres();&lt;br&gt;
albumBindingSource.DataSource = &lt;font color=#008080&gt;Album&lt;/font&gt;&lt;font size=4&gt;&lt;font size=2&gt;.GetAlbums();&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
Then it works as expected.
&lt;/p&gt;
&lt;p&gt;
Some resources I mentioned in the talk, as well as some additional ones I gave related
to after-session questions:
&lt;/p&gt;
&lt;p&gt;
My Book: Data Binding in Windows Forms 2.0, Addison Wesley, January 2006&lt;br&gt;
&lt;a href="http://www.amazon.com/exec/obidos/ASIN/032126892X/qid%3D1124482085/sr%3D11-1/ref%3Dsr%5F11%5F1/102-3039504-6850510"&gt;http://www.amazon.com/exec/obidos/ASIN/032126892X/qid%3D1124482085/sr%3D11-1/ref%3Dsr%5F11%5F1/102-3039504-6850510&lt;/a&gt; 
&lt;br&gt;
Rocky Lhotka binding refresh problem post:&lt;br&gt;
&lt;a href="http://www.lhotka.net/WeBlog/PermaLink.aspx?guid=d8306469-7e76-4734-9811-777498808b85"&gt;http://www.lhotka.net/WeBlog/PermaLink.aspx?guid=d8306469-7e76-4734-9811-777498808b85&lt;/a&gt; 
&lt;br&gt;
Rocky Lhotka article on binding to business objects: Windows Forms Object Data Binding
in .NET 2.0, 15seconds.com, &lt;a href="http://www.15seconds.com/issue/040614.htm"&gt;http://www.15seconds.com/issue/040614.htm&lt;/a&gt; 
&lt;br&gt;
My recent article on The Server Side .NET: Build a Data Access Layer with the Visual
Studio DataSet Designer, The Server Side .NET, Oct 2005, &lt;a href="http://www.theserverside.net/articles/showarticle.tss?id=DataSetDesigner"&gt;http://www.theserverside.net/articles/showarticle.tss?id=DataSetDesigner&lt;/a&gt; 
&lt;br&gt;
My recent article in CoDe magazine: Tackle Complex Data Binding in Windows Forms 2.0,
CoDe Magazine, July/Aug 2005, &lt;a href="http://www.code-magazine.com/Article.aspx?quickid=0507051"&gt;http://www.code-magazine.com/Article.aspx?quickid=0507051&lt;/a&gt; &lt;font size=4&gt;&lt;font size=2&gt;&lt;font size=4&gt;&lt;font size=2&gt;
&lt;/p&gt;
&lt;/font&gt;&lt;/font&gt;&gt;&gt; 
&lt;p&gt;
&lt;span style="FONT-SIZE: 111%; COLOR: #ffff66"&gt;&lt;font color=#000000&gt;Enjoy!&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&gt;&gt;&lt;img width="0" height="0" src="http://www.softinsight.com/bnoyes/aggbug.ashx?id=70acabc4-8554-43cc-8511-c2f6a2827942" /&gt;</description>
      <comments>http://www.softinsight.com/bnoyes/CommentView,guid,70acabc4-8554-43cc-8511-c2f6a2827942.aspx</comments>
      <category>.NET</category>
      <category>Data Binding</category>
      <category>DevConnections</category>
      <category>Languages and Tools</category>
      <category>Speaking</category>
    </item>
    <item>
      <trackback:ping>http://www.softinsight.com/bnoyes/Trackback.aspx?guid=5652c644-212c-44f9-b640-ca7747c91e97</trackback:ping>
      <pingback:server>http://www.softinsight.com/bnoyes/pingback.aspx</pingback:server>
      <pingback:target>http://www.softinsight.com/bnoyes/PermaLink,guid,5652c644-212c-44f9-b640-ca7747c91e97.aspx</pingback:target>
      <dc:creator />
      <wfw:comment>http://www.softinsight.com/bnoyes/CommentView,guid,5652c644-212c-44f9-b640-ca7747c91e97.aspx</wfw:comment>
      <wfw:commentRss>http://www.softinsight.com/bnoyes/SyndicationService.asmx/GetEntryCommentsRss?guid=5652c644-212c-44f9-b640-ca7747c91e97</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
I've got two MSDN Webcasts coming up at the end of November, both part of the "Best
Of" series that they are doing surrounding the launch of VS 2005 for those Webcasts
focused on .NET 2.0 and VS 2005 that got the highest scores in the last year.
</p>
        <p>
You can <a href="http://go.microsoft.com/?linkid=4078253">click through here </a>to
get to the webcasts:
</p>
        <p>
          <a href="http://go.microsoft.com/?linkid=4078253">
            <img alt="Click Through for Webcasts" hspace="0" src="C:\Documents and Settings\Brian Noyes\Desktop\msdnwebcast.jpg" align="baseline" border="0" />
          </a>
        </p>
        <p>
The two I am giving will both be on 29 November:
</p>
        <p>
Presenting Rich Rich Tabular Data with the DataGridView Control<br /><strong>Tuesday, November 29, 2005<br /></strong><i>10:00 A.M.–11:00 A.M. Pacific Time</i></p>
        <p>
Deploy Smart Client Applications with ClickOnce<br /><strong>Tuesday, November 29, 2005<br /></strong><i>1:00 P.M.–2:00 P.M. Pacific Time</i></p>
        <p>
          <em>Check them out!!</em>
        </p>
        <img width="0" height="0" src="http://www.softinsight.com/bnoyes/aggbug.ashx?id=5652c644-212c-44f9-b640-ca7747c91e97" />
      </body>
      <title>Two Upcoming MSDN Webcasts: Part of the "Best Of" Series</title>
      <guid isPermaLink="false">http://www.softinsight.com/bnoyes/PermaLink,guid,5652c644-212c-44f9-b640-ca7747c91e97.aspx</guid>
      <link>http://www.softinsight.com/bnoyes/2005/10/24/TwoUpcomingMSDNWebcastsPartOfTheBestOfSeries.aspx</link>
      <pubDate>Mon, 24 Oct 2005 17:59:35 GMT</pubDate>
      <description>&lt;p&gt;
I've got two MSDN Webcasts coming up at the end of November, both part of the "Best
Of" series that they are doing surrounding the launch of VS 2005 for those Webcasts
focused on .NET 2.0 and VS 2005 that got the highest scores in the last year.
&lt;/p&gt;
&lt;p&gt;
You can &lt;a href="http://go.microsoft.com/?linkid=4078253"&gt;click through here &lt;/a&gt;to
get to the webcasts:
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://go.microsoft.com/?linkid=4078253"&gt;&lt;img alt="Click Through for Webcasts" hspace=0 src="C:\Documents and Settings\Brian Noyes\Desktop\msdnwebcast.jpg" align=baseline border=0&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
The two I am giving will both be on 29 November:
&lt;/p&gt;
&lt;p&gt;
Presenting Rich Rich Tabular Data with the DataGridView Control&lt;br&gt;
&lt;strong&gt;Tuesday, November 29, 2005&lt;br&gt;
&lt;/strong&gt;&lt;i&gt;10:00 A.M.–11:00 A.M.&amp;nbsp;Pacific Time&lt;/i&gt;
&lt;/p&gt;
&lt;p&gt;
Deploy Smart Client Applications with ClickOnce&lt;br&gt;
&lt;strong&gt;Tuesday, November 29, 2005&lt;br&gt;
&lt;/strong&gt;&lt;i&gt;1:00 P.M.–2:00 P.M.&amp;nbsp;Pacific Time&lt;/i&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;em&gt;Check them out!!&lt;/em&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.softinsight.com/bnoyes/aggbug.ashx?id=5652c644-212c-44f9-b640-ca7747c91e97" /&gt;</description>
      <comments>http://www.softinsight.com/bnoyes/CommentView,guid,5652c644-212c-44f9-b640-ca7747c91e97.aspx</comments>
      <category>.NET</category>
      <category>ClickOnce</category>
      <category>Community</category>
      <category>Data Binding</category>
      <category>Languages and Tools</category>
      <category>Speaking</category>
    </item>
    <item>
      <trackback:ping>http://www.softinsight.com/bnoyes/Trackback.aspx?guid=a4c8eb1d-f134-4529-9101-4cccaf36bf1a</trackback:ping>
      <pingback:server>http://www.softinsight.com/bnoyes/pingback.aspx</pingback:server>
      <pingback:target>http://www.softinsight.com/bnoyes/PermaLink,guid,a4c8eb1d-f134-4529-9101-4cccaf36bf1a.aspx</pingback:target>
      <dc:creator />
      <wfw:comment>http://www.softinsight.com/bnoyes/CommentView,guid,a4c8eb1d-f134-4529-9101-4cccaf36bf1a.aspx</wfw:comment>
      <wfw:commentRss>http://www.softinsight.com/bnoyes/SyndicationService.asmx/GetEntryCommentsRss?guid=a4c8eb1d-f134-4529-9101-4cccaf36bf1a</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
I gave a talk at LexDotNet in Lexington KY last night on building smart client data
apps. It really boils down to a similar talk to my Tackle Complex Data Binding with
Windows Forms 2.0 talk, but with a slightly different approach and angle. I did mostly
a large progressive demo where I started out with the simple and impressive data binding
capabilties for working directly with a database in your Windows Forms app. Then I
explained why you should never do that in a serious production application and stepped
through how to migrate the functionality to a three or four layer/tier architect without
giving up any of the capability of the data binding features in Windows Forms. 
</p>
        <p>
          <a href="http://www.softinsight.com/downloads/INETA/SmartClientDataAppsWithWinForms20.zip">Here
are the slides and demos </a>that I used.
</p>
        <img width="0" height="0" src="http://www.softinsight.com/bnoyes/aggbug.ashx?id=a4c8eb1d-f134-4529-9101-4cccaf36bf1a" />
      </body>
      <title>Building Smart Client Data Applications with Windows Forms 2.0</title>
      <guid isPermaLink="false">http://www.softinsight.com/bnoyes/PermaLink,guid,a4c8eb1d-f134-4529-9101-4cccaf36bf1a.aspx</guid>
      <link>http://www.softinsight.com/bnoyes/2005/10/12/BuildingSmartClientDataApplicationsWithWindowsForms20.aspx</link>
      <pubDate>Wed, 12 Oct 2005 19:58:14 GMT</pubDate>
      <description>&lt;p&gt;
I gave a talk at LexDotNet in Lexington KY last night on building smart client data
apps. It really boils down to a similar talk to my Tackle Complex Data Binding with
Windows Forms 2.0 talk, but with a slightly different approach and angle. I did mostly
a large progressive demo where I started out with the simple and impressive data binding
capabilties for working directly with a database in your Windows Forms app. Then I
explained why you should never do that in a serious production application and stepped
through how to migrate the functionality to a three or four layer/tier architect without
giving up any of the capability of the data binding features in Windows Forms. 
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.softinsight.com/downloads/INETA/SmartClientDataAppsWithWinForms20.zip"&gt;Here
are the slides and demos &lt;/a&gt;that I used.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.softinsight.com/bnoyes/aggbug.ashx?id=a4c8eb1d-f134-4529-9101-4cccaf36bf1a" /&gt;</description>
      <comments>http://www.softinsight.com/bnoyes/CommentView,guid,a4c8eb1d-f134-4529-9101-4cccaf36bf1a.aspx</comments>
      <category>.NET</category>
      <category>Community</category>
      <category>Data Binding</category>
      <category>Languages and Tools</category>
    </item>
    <item>
      <trackback:ping>http://www.softinsight.com/bnoyes/Trackback.aspx?guid=54fc20d7-e1ad-407b-893b-11db0f3e7a2b</trackback:ping>
      <pingback:server>http://www.softinsight.com/bnoyes/pingback.aspx</pingback:server>
      <pingback:target>http://www.softinsight.com/bnoyes/PermaLink,guid,54fc20d7-e1ad-407b-893b-11db0f3e7a2b.aspx</pingback:target>
      <dc:creator />
      <wfw:comment>http://www.softinsight.com/bnoyes/CommentView,guid,54fc20d7-e1ad-407b-893b-11db0f3e7a2b.aspx</wfw:comment>
      <wfw:commentRss>http://www.softinsight.com/bnoyes/SyndicationService.asmx/GetEntryCommentsRss?guid=54fc20d7-e1ad-407b-893b-11db0f3e7a2b</wfw:commentRss>
      <slash:comments>1</slash:comments>
      <title>Data Binding a ComboBox to a child collection</title>
      <guid isPermaLink="false">http://www.softinsight.com/bnoyes/PermaLink,guid,54fc20d7-e1ad-407b-893b-11db0f3e7a2b.aspx</guid>
      <link>http://www.softinsight.com/bnoyes/2005/08/30/DataBindingAComboBoxToAChildCollection.aspx</link>
      <pubDate>Tue, 30 Aug 2005 17:22:36 GMT</pubDate>
      <description>&lt;p&gt;
One of the most frequent questions I get regarding data binding is how to hook up
a combo box with a data bound list of selections from a related table or collection,
and have selections in that combo box set a corresponding value in the related collection.
For example, in the following form, the main collection is the Products table from
Northwind. The textboxes are displaying a couple of the columns from that table, and
the combo box is displaying the supplier name from the related Suppliers table. Products
contains a foreign key column with a SupplierID that makes the link.
&lt;/p&gt;
&lt;p&gt;
&lt;img alt="Data bound form" hspace=0 src="C:\Documents and Settings\Brian Noyes\Desktop\ComboBoxBinding.gif" align=baseline border=0&gt;
&lt;/p&gt;
&lt;p&gt;
The code required to hook all this up in .NET 2.0 is very simple, although maybe slightly
difficult to discover on your own. The solution below binds the controls to two BindingSource
components, which is the new way of doing data binding in .NET 2.0. The BindingSource
component provides a layer of indirection between your bound controls and their data
sources that makes synchronizing bound controls easier, allows you to switch out the
data source without needing to re-initialize bindings, and exposes a number of useful
events to monitor what is going on in bound data sources in your code.
&lt;/p&gt;
&lt;p&gt;
Basically all you need to do is get your data and set that as the data source on the
two binding sources. Then set up a normal ComboBox data binding on the ComboBox with
the DataSource, DisplayMember, and ValueMember properties. You then add a simple binding
to the control's DataBindings collection (an instance of a Binding object) that ties
the SelectedValue property on the ComboBox to the corresponding foreign key property/column
in the parent collection:
&lt;/p&gt;
&lt;p class=MsoNormal&gt;
&lt;font face="Lucida Console" size=4&gt;&lt;span style="FONT-SIZE: 14pt; FONT-FAMILY: 'Lucida Console'"&gt;&lt;font color=green&gt;&lt;span style="BACKGROUND: silver; COLOR: green"&gt;//
Retrieve the data for products and suppliers into a data set or custom collections&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal&gt;
&lt;font face="Lucida Console" size=4&gt;&lt;span style="FONT-SIZE: 14pt; FONT-FAMILY: 'Lucida Console'"&gt;&lt;font color=green&gt;&lt;span style="BACKGROUND: silver; COLOR: green"&gt;//
Set up the data bindings for the textboxes on the form to their binding source&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal&gt;
&lt;font face="Lucida Console" size=4&gt;&lt;span style="FONT-SIZE: 14pt; FONT-FAMILY: 'Lucida Console'"&gt;&lt;font color=green&gt;&lt;span style="BACKGROUND: silver; COLOR: green"&gt;//
i.e. m_ProductNameTextBox.DataBindings.Add("Text", m_ProductsBindingSource, "ProductName",
true);&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal&gt;
&lt;font face="Lucida Console" size=4&gt;&lt;span style="FONT-SIZE: 14pt; FONT-FAMILY: 'Lucida Console'"&gt;&lt;font color=green&gt;&lt;span style="BACKGROUND: silver; COLOR: green"&gt;//
Set the BindingSource.DataSource property for the textboxes on the form&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal&gt;
&lt;font face="Lucida Console" size=4&gt;&lt;span style="FONT-SIZE: 14pt; FONT-FAMILY: 'Lucida Console'"&gt;&lt;font color=green&gt;&lt;span style="BACKGROUND: silver; COLOR: green"&gt;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;font face="Lucida Console" size=4&gt;&lt;span style="FONT-SIZE: 14pt; FONT-FAMILY: 'Lucida Console'"&gt;m_ProductsBindingSource.DataSource
= m_Products; // some collection of products&lt;/span&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;font face="Lucida Console" size=4&gt;&lt;span style="FONT-SIZE: 14pt; FONT-FAMILY: 'Lucida Console'"&gt;&lt;font face="Lucida Console" size=4&gt;&lt;span style="FONT-SIZE: 14pt; FONT-FAMILY: 'Lucida Console'"&gt; 
&lt;p class=MsoNormal&gt;
&lt;font face="Lucida Console" size=4&gt;&lt;span style="FONT-SIZE: 14pt; FONT-FAMILY: 'Lucida Console'"&gt;&lt;font color=green&gt;&lt;span style="BACKGROUND: silver; COLOR: green"&gt;//
Set the binding properties for the combo box&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal&gt;
m_SuppliersBindingSource.DataSource = m_Suppliers; // some collection of suppliers
&lt;/span&gt;&lt;/font&gt;&gt;
&lt;p class=MsoNormal&gt;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;
m_SuppliersCombo.DataSource = m_SuppliersBindingSource;&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;&lt;/font&gt;&gt;
&lt;p class=MsoNormal&gt;
&lt;font face="Lucida Console" size=4&gt;&lt;span style="FONT-SIZE: 14pt; FONT-FAMILY: 'Lucida Console'"&gt;m_SuppliersCombo.DisplayMember
= &lt;font color=maroon&gt;&lt;span style="BACKGROUND: aqua; COLOR: maroon"&gt;"CompanyName"&lt;/span&gt;&lt;/font&gt;;&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal&gt;
&lt;font face="Lucida Console" size=4&gt;&lt;span style="FONT-SIZE: 14pt; FONT-FAMILY: 'Lucida Console'"&gt;m_SuppliersCombo.ValueMember
= &lt;font color=maroon&gt;&lt;span style="BACKGROUND: aqua; COLOR: maroon"&gt;"SupplierID"&lt;/span&gt;&lt;/font&gt;;&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;font face="Lucida Console" size=4&gt;&lt;span style="FONT-SIZE: 14pt; FONT-FAMILY: 'Lucida Console'"&gt; 
&lt;p class=MsoNormal&gt;
&lt;font face="Lucida Console" size=4&gt;&lt;span style="FONT-SIZE: 14pt; FONT-FAMILY: 'Lucida Console'"&gt;&lt;font color=green&gt;&lt;span style="BACKGROUND: silver; COLOR: green"&gt;//&amp;nbsp;Add
a simple binding for the combo box SelectedValue property to the other collection&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal&gt;
m_SuppliersCombo.DataBindings.Add(&lt;font color=maroon&gt;&lt;span style="BACKGROUND: aqua; COLOR: maroon"&gt;"SelectedValue"&lt;/span&gt;&lt;/font&gt;,m_ProductsBindingSource,&lt;font color=maroon&gt;&lt;span style="BACKGROUND: aqua; COLOR: maroon"&gt;"SupplierID"&lt;/span&gt;&lt;/font&gt;);&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;&lt;/font&gt;&gt;
&lt;p class=MsoNormal&gt;
&lt;font face=Arial size=2&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;The ComboBox
databinding takes care of setting the SelectedValue property on the ComboBox whenever
the current item in the parent collection changes.&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal&gt;
&lt;font face=Arial size=2&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;
&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal&gt;
&lt;font face=Arial size=2&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;The steps
to regenerate the&amp;nbsp;displayed sample in the Visual Studio 2005 designer are as
follows:&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal&gt;
&lt;font face=Arial size=2&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;
&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;ul style="MARGIN-TOP: 0in" type=disc&gt;
&lt;li class=MsoNormal style="COLOR: navy; mso-list: l0 level1 lfo1"&gt;
&lt;font face=Arial color=navy size=2&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;Create
a Database Data Source (typed data set) through the Data Sources window to Northwind
with Products and Suppliers tables in it. 
&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;&lt;/font&gt; 
&lt;li class=MsoNormal style="COLOR: navy; mso-list: l0 level1 lfo1"&gt;
&lt;font face=Arial color=navy size=2&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;In
the Data Sources window, change the control mapping for the Products table to Details
(drop down the list of controls by selecting it and dropping it down) 
&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;&lt;/font&gt; 
&lt;li class=MsoNormal style="COLOR: navy; mso-list: l0 level1 lfo1"&gt;
&lt;font face=Arial color=navy size=2&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;Set
the control mapping for the SupplierID column of Products to ComboBox 
&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;&lt;/font&gt; 
&lt;li class=MsoNormal style="COLOR: navy; mso-list: l0 level1 lfo1"&gt;
&lt;font face=Arial color=navy size=2&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;Set
the control mapping of other columns you don’t want to display to None. 
&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;&lt;/font&gt; 
&lt;li class=MsoNormal style="COLOR: navy; mso-list: l0 level1 lfo1"&gt;
&lt;font face=Arial color=navy size=2&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;Drag
and drop the Products table onto a form. A binding source, binding navigator, the
textboxes and the combobox will be generated with their labels. 
&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;&lt;/font&gt; 
&lt;li class=MsoNormal style="COLOR: navy; mso-list: l0 level1 lfo1"&gt;
&lt;font face=Arial color=navy size=2&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;Select
the ComboBox in the designer. 
&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;&lt;/font&gt; 
&lt;li class=MsoNormal style="COLOR: navy; mso-list: l0 level1 lfo1"&gt;
&lt;font face=Arial color=navy size=2&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;Go
to the Properties grid and select the (DataBindings) property (Advanced) subproperty.
Select the ellipses (…) to get the dialog up. 
&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;&lt;/font&gt; 
&lt;li class=MsoNormal style="COLOR: navy; mso-list: l0 level1 lfo1"&gt;
&lt;font face=Arial color=navy size=2&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;The
Text property will have a Binding set up for it. Remove that by selecting the Binding
drop down and selecting None at the top of the list. 
&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;&lt;/font&gt; 
&lt;li class=MsoNormal style="COLOR: navy; mso-list: l0 level1 lfo1"&gt;
&lt;font face=Arial color=navy size=2&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;Select
the SelectedValue property in the Advanced Bindings window and select the productsBindingSource.SupplierID
as the bound column. OK out of there. 
&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;&lt;/font&gt; 
&lt;li class=MsoNormal style="COLOR: navy; mso-list: l0 level1 lfo1"&gt;
&lt;font face=Arial color=navy size=2&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;Go
back to the Data Sources window and drag the Suppliers table onto the ComboBox. This
will hook up the DataSource, DisplayMember, and ValueMember properties. &lt;/span&gt;&lt;/font&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p class=MsoNormal style="COLOR: navy; mso-list: l0 level1 lfo1"&gt;
&lt;font face=Arial color=navy size=2&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;Hope
that is helpful to those groping around with similar data binding scenarios out there.&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.softinsight.com/bnoyes/aggbug.ashx?id=54fc20d7-e1ad-407b-893b-11db0f3e7a2b" /&gt;</description>
      <comments>http://www.softinsight.com/bnoyes/CommentView,guid,54fc20d7-e1ad-407b-893b-11db0f3e7a2b.aspx</comments>
      <category>.NET</category>
      <category>Data Binding</category>
      <category>Languages and Tools</category>
    </item>
    <item>
      <trackback:ping>http://www.softinsight.com/bnoyes/Trackback.aspx?guid=a2f8e6ef-3932-4bb1-921b-d56dab48f21e</trackback:ping>
      <pingback:server>http://www.softinsight.com/bnoyes/pingback.aspx</pingback:server>
      <pingback:target>http://www.softinsight.com/bnoyes/PermaLink,guid,a2f8e6ef-3932-4bb1-921b-d56dab48f21e.aspx</pingback:target>
      <dc:creator />
      <wfw:comment>http://www.softinsight.com/bnoyes/CommentView,guid,a2f8e6ef-3932-4bb1-921b-d56dab48f21e.aspx</wfw:comment>
      <wfw:commentRss>http://www.softinsight.com/bnoyes/SyndicationService.asmx/GetEntryCommentsRss?guid=a2f8e6ef-3932-4bb1-921b-d56dab48f21e</wfw:commentRss>
      <slash:comments>2</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Phew! After a year and a half of trying to keep pace with the changing betas and writing
the book on top of a full schedule of consulting, training, and speaking at conferences
and user groups, I am finally done. I submitted the final manuscript to production
on Friday. Now I just have to respond to any questions and reviews during the production
phase, convert the code samples to VB for download, and I can call this one a
wrap.
</p>
        <p>
You can order the book here (available January 2006):
</p>
        <p>
          <a href="http://www.amazon.com/exec/obidos/ASIN/032126892X/qid=1124482085/sr=11-1/ref=sr_11_1/102-1031358-5664119">http://www.amazon.com/exec/obidos/ASIN/032126892X/qid=1124482085/sr=11-1/ref=sr_11_1/102-1031358-5664119</a>
        </p>
        <p>
We will have a teaser chapter out at PDC that will also be available for download
as a PDF containing part of the chapter on the DataGridView control. I'll put up a
link to that as soon as it is available.
</p>
        <p>
Now I am start devoting my attention to my next book, Smart Client Deployment with
ClickOnce, also part of the Addison Wesley .NET Development series. I hope to knock
this one out in the next 6 months, so it should hit the shelves mid 2006.
</p>
        <img width="0" height="0" src="http://www.softinsight.com/bnoyes/aggbug.ashx?id=a2f8e6ef-3932-4bb1-921b-d56dab48f21e" />
      </body>
      <title>Data Binding in Windows Forms 2.0 - Final Manuscript Done!</title>
      <guid isPermaLink="false">http://www.softinsight.com/bnoyes/PermaLink,guid,a2f8e6ef-3932-4bb1-921b-d56dab48f21e.aspx</guid>
      <link>http://www.softinsight.com/bnoyes/2005/08/30/DataBindingInWindowsForms20FinalManuscriptDone.aspx</link>
      <pubDate>Tue, 30 Aug 2005 16:50:53 GMT</pubDate>
      <description>&lt;p&gt;
Phew! After a year and a half of trying to keep pace with the changing betas and writing
the book on top of a full schedule of consulting, training, and speaking at conferences
and user groups, I am finally done. I submitted the final manuscript to production
on Friday. Now I just have to respond to any questions and reviews during the production
phase, convert the code samples to VB for download,&amp;nbsp;and I can call this one a
wrap.
&lt;/p&gt;
&lt;p&gt;
You can order the book here (available January 2006):
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.amazon.com/exec/obidos/ASIN/032126892X/qid=1124482085/sr=11-1/ref=sr_11_1/102-1031358-5664119"&gt;http://www.amazon.com/exec/obidos/ASIN/032126892X/qid=1124482085/sr=11-1/ref=sr_11_1/102-1031358-5664119&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
We will have a teaser chapter out at PDC that will also be available for download
as a PDF containing part of the chapter on the DataGridView control. I'll put up a
link to that as soon as it is available.
&lt;/p&gt;
&lt;p&gt;
Now I am start devoting my attention to my next book, Smart Client Deployment with
ClickOnce, also part of the Addison Wesley .NET Development series. I hope to knock
this one out in the next 6 months, so it should hit the shelves mid 2006.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.softinsight.com/bnoyes/aggbug.ashx?id=a2f8e6ef-3932-4bb1-921b-d56dab48f21e" /&gt;</description>
      <comments>http://www.softinsight.com/bnoyes/CommentView,guid,a2f8e6ef-3932-4bb1-921b-d56dab48f21e.aspx</comments>
      <category>.NET</category>
      <category>Languages and Tools</category>
      <category>Publishing</category>
      <category>Data Binding</category>
      <category>ClickOnce</category>
    </item>
  </channel>
</rss>