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