[Last Call] Learn how to a build a cloud-first strategyRegister Now

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 732
  • Last Modified:

How to pass a Dataset to a custom UserControl and back again to the parent, persisting changes.

Hello Experts:

I am using C#, VS 2010 and ADO.Net developing a data base application.

I am struggling with making changes to my dataset.

I populate the dataset from my SQL server db with a table adapter, to get my strongly type dataset we'll call myDataSet

I have a TabControl which acts as a container for a series of custom Usercontrols.

In the constructor of the myTabControl, I populate myDataset using a data access layer.  myDataSet is now populated and ready for consumption by the custom user controls.

When the user selects a tab, I Add() myCustomUserControl to the tabPage.

What I want to do is to pass myDataset to myCustomUserControl in some way so that the user can perform CRUD operations on the dataset in myUsercontrol and keep myDataSet in sync as changes are made.  Right now, I am using a new Table Adapter to update the BD from myUserControl but then I get unexpected behaviour on myDataSet when switching to another tab etc. - espicially when I perform Delete operations on the datarows in myUsercontrol dataset.   (DataRowNotInTable exceptions and myDataset not in sync.)

Is there a slick way of doing this??

Thanks
RW
0
cmh_rwhelan
Asked:
cmh_rwhelan
  • 2
1 Solution
 
anarki_jimbelCommented:
Not 100% sure I understand the problem properly but it seems that your current problem is that you have multiple datasets and they are not in sync.

OK, I believe you need just one DataSet and probably one DataAdapter that is shared by your Tab control and other User controls. In this case you do all operation on the same object using same dataadapter.

You may pass instances from your Tab control to user controls using constructors or, e.g. special Set methods like:

SetDataAdapterAndDataSet
0
 
cmh_rwhelanAuthor Commented:
I am using the model you suggest - I pass the dataset to the constructor of myUsercontrol, but I get a RowNotInTable exception after i have deleted a row in myUserControl dataset  and have returned to another tab and try to access myDataset.
0
 
hackpinCommented:
i think you can close your dataset from tab1 because your user control on tab2 is using the same dataset as tab1 using.
0
 
cmh_rwhelanAuthor Commented:
Passing the dataset to the constructor of the child usercontrol works.  Keeping track of the state of the dataset is a challenge as I navigate the tabs of the tabcontrol and make changes to the dataset.

I suspect my model for handling the UI is not very sound.
0

Featured Post

Configuration Guide and Best Practices

Read the guide to learn how to orchestrate Data ONTAP, create application-consistent backups and enable fast recovery from NetApp storage snapshots. Version 9.5 also contains performance and scalability enhancements to meet the needs of the largest enterprise environments.

  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now