Michael Maddison
michael at ddisolutions.com.au
Thu Mar 13 17:50:01 CDT 2008
Sorry guys, Wasn't complaining about not being answered. "doesn't Me.textbox.Value = "something" work? " No! Not for me. textBox.Text = "ABC"; Does not maketh the DS == Dirty. Or the BS or the CM. Or I could have completely lost the plot ;-) I usually use the NetTiers framework, where this sort of stuff is really straightforward. So I was surprised that values I was setting in code were not being sent to the db (Access). Google didn't help much, some mentions of adding custom attributes to the objects so that the binding would work. I wanted a drag n drop out of the box solution for this quick n dirty app. Anyhow, I tried adding a bindingNav control, it didn't help. I find it hard to believe that I didn't stuff up somewhere, but I didn't write much code, just dragged the objects onto the form and bound them really. I used the Update code straight out of MSDN. Deletes 1st, then updates, then addnews. Here is the code I ended up with... if ( cboSlaking.SelectedValue != null ) txtSlaking.Text = cboSlaking.SelectedValue.ToString( ); if ( cboDisperse.SelectedValue != null ) txtDispersability.Text = cboDisperse.SelectedValue.ToString( ); if ( cboVC.SelectedValue != null ) txtVCRating.Text = cboVC.SelectedValue.ToString( ); txtDepthQual.Text = cboDepthQual.SelectedValue.ToString( ); if ( !IsValid( ) ) return; if ( _isNew ) { DataRowView drv = ( DataRowView ) profilesBS.Current; //Binding updates work arround //Manually insert the row, cancel the edit for BS try { soilProfilesTA.Insert( _newProfileID, Convert.ToInt16( drv.Row.ItemArray.GetValue( 2 ) ), //Prof drv.Row.ItemArray.GetValue( 3 ).ToString( ), //GH Convert.ToInt32( drv.Row.ItemArray.GetValue( 4 ) ), //Hor sub drv.Row.ItemArray.GetValue( 5 ).ToString( ), //Hor Suff Convert.ToDouble( String.IsNullOrEmpty( drv.Row.ItemArray.GetValue( 6 ).ToString( ) ) ? 0 : drv.Row.ItemArray.GetValue( 6 ) ),//Depth S Convert.ToDouble( String.IsNullOrEmpty( drv.Row.ItemArray.GetValue( 7 ).ToString( ) ) ? 0 : drv.Row.ItemArray.GetValue( 7 ) ),//Depth fin String.IsNullOrEmpty( txtDepthQual.Text ) ? null : txtDepthQual.Text.ToString( ),//depth range Convert.ToInt32( drv.Row.ItemArray.GetValue( 9 ) ),//col L drv.Row.ItemArray.GetValue( 10 ).ToString( ),//col H Convert.ToInt32( drv.Row.ItemArray.GetValue( 11 ) ),//col s drv.Row.ItemArray.GetValue( 21 ).ToString( ),//mott % String.IsNullOrEmpty( txtMottlingComments.Text ) ? null : txtMottlingComments.Text.ToString( ), //Mott text drv.Row.ItemArray.GetValue( 13 ).ToString( ),//texture Convert.ToInt32( drv.Row.ItemArray.GetValue( 14 ) ),//ped Convert.ToInt32( drv.Row.ItemArray.GetValue( 15 ) ),//struct String.IsNullOrEmpty( txtComments.Text ) ? null : txtComments.Text.ToString( ), //other drv.Row.ItemArray.GetValue( 20 ).ToString( ),//stone Convert.ToInt32( txtSlaking.Text ), //slak Convert.ToInt32( txtDispersability.Text ),//disp Convert.ToInt32( txtVCRating.Text ) );//vc } catch ( Exception ex ) { MessageBox.Show( ex.Message ); return; //throw; } profilesBS.CancelEdit( ); } else { profilesBS.EndEdit( ); } Profiles.SoilProfilesDataTable newProfile = ( Profiles.SoilProfilesDataTable ) profiles1.SoilProfiles.GetChanges( DataRowState.Added ); Profiles.SoilProfilesDataTable editedProfile = ( Profiles.SoilProfilesDataTable ) profiles1.SoilProfiles.GetChanges( DataRowState.Modified ); try { if ( newProfile != null ) { soilProfilesTA.Update( newProfile ); } if ( editedProfile != null ) { soilProfilesTA.Update( editedProfile ); } profiles1.AcceptChanges( ); } catch ( DBConcurrencyException ex ) { string customErrorMessage; customErrorMessage = "Concurrency violation\n"; customErrorMessage += ex.Row[0].ToString( ); MessageBox.Show( customErrorMessage ); } catch ( Exception ex ) { MessageBox.Show( ex.Message ); } finally { if ( newProfile != null ) { newProfile.Dispose( ); } if ( editedProfile != null ) { editedProfile.Dispose( ); } this.Close( ); } if ( !_isNew ) { DataRowView drv = (DataRowView) profilesBS.Current; if ( drv["SiteID"] != null ) { int _siteID = (int) drv["SiteID"]; // Convert.ToInt32( txtSiteID.Text.ToString( ) ); OnNewHorizonEdit( new NewHorizonEventArgs( _siteID ) ); } } cheers Michael M By the way, doesn't Me.textbox.Value = "something" work? If the dataset is dirty, you update it. I feel somehow that I'm missing the point of the question. Are you using a bindingnavigation control or what? Charlotte Foust -----Original Message----- From: dba-vb-bounces at databaseadvisors.com [mailto:dba-vb-bounces at databaseadvisors.com] On Behalf Of Michael Maddison Sent: Wednesday, March 12, 2008 11:17 PM To: Discussion concerning Visual Basic and related programming issues. Subject: Re: [dba-VB] Data Binding values from code And the answer seems to be, if you use the built in stuff, you don't. You don't seem to be able to let the bindingsource know that the data has changed. I ended up doing a direct insert. cheers Michael M Hi, I've gone to databinding hell... How do I change a value IN CODE in a textbox on a form and get it to be written back to the db? Using Dataset, BindingSource and TableAdaptor. Typing in the textbox works just fine... cheers Michael M _______________________________________________ dba-VB mailing list dba-VB at databaseadvisors.com http://databaseadvisors.com/mailman/listinfo/dba-vb http://www.databaseadvisors.com _______________________________________________ dba-VB mailing list dba-VB at databaseadvisors.com http://databaseadvisors.com/mailman/listinfo/dba-vb http://www.databaseadvisors.com _______________________________________________ dba-VB mailing list dba-VB at databaseadvisors.com http://databaseadvisors.com/mailman/listinfo/dba-vb http://www.databaseadvisors.com _______________________________________________ dba-VB mailing list dba-VB at databaseadvisors.com http://databaseadvisors.com/mailman/listinfo/dba-vb http://www.databaseadvisors.com