Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people, just like you, are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
Solved

How to correctly synchronize updates between forms?

Posted on 2006-06-29
7
269 Views
Last Modified: 2010-04-16
I have a Windows application with a MainForm that has a menue and a DataGridView with two columns on it. The first column is read-only and contains Roles the current Windows user can have. The second column contains a CheckBox indicating whether the current Windows user actively participates in the Role or not. The user can edit this CheckBox.

The idea is to provide a tool for testers that allows them to switch roles for testing in a easy and fast manner by just check marking the roles they need. So far any thing works fine and as expected.

The MainForm provides a menue to let developers and administrators access forms, opend as dialogs, for further role managment and assignment. This is where the problem starts.

As an example I take the situation where a developer clicks on the menue to "Assign Roles to Users". In this case a Form is opened as a dialog. The Form contains a DataGridView similar to that on the MainForm but showing all users data and therefore having one more column with the Username.

Now the problem is, that if I mark/unmark the active flag for a role on the MainForm before opening the "Assign Roles to Users" form, that change is not contained in the data after opening the "Assign Roles to Users" form.

The DataGridViews on the two forms are based on the same DataSet and TableAdapter. However, they differ in the query. The difference in the queries is the WHERE clause (WHERE UserID = @CurrentUser).

The main problem I see is that the data do not get updated before the user actively switches the row. If the user switches the row before opening the other form, I can get the updates from the MainForm to the assignment form.

How can I get the updates and properly synchronize them between forms?

The following links includes screenshots.
1. MainForm after application has been started
http://img50.imageshack.us/img50/1876/aclmanager14ri.png

2. Select Manager role
http://img105.imageshack.us/img105/5401/aclmanager24pj.png

3. Open the form for further Role to User assignment
http://img113.imageshack.us/img113/663/aclmanager30fa.png

4. After the form has been opened, the value previousely changed in MainForm is not there
http://img50.imageshack.us/img50/5972/aclmanager48oq.png

You might also take a look at my previous question releted to the same issue:
http://www.experts-exchange.com/Programming/Programming_Languages/C_Sharp/Q_21884549.html
0
Comment
Question by:pgloor
  • 3
  • 2
  • 2
7 Comments
 
LVL 13

Assisted Solution

by:devsolns
devsolns earned 250 total points
ID: 17009127
Model-View-Controller MVC design pattern.
0
 
LVL 12

Assisted Solution

by:topdog770
topdog770 earned 250 total points
ID: 17009833
To further expound on devsolns comment..

The idea is to make your data..( the model ) separate from your user interface( the view ) so that when you switch from form to form and make changes ( routed through the controller ) all of the forms 'see' the same information.

0
 
LVL 5

Author Comment

by:pgloor
ID: 17010067
@devsolns: Actually I already thought about MVC with an observer as an option.

However, Microsoft provides such nice tools to reduce development time and get things done faster than ever, so I almost can't believe it can't be done with what they have given to us.

@topdog779: I appreciate your answer. However, I know the basics of the MVC pattern.

Has any of you implemented the MVC pattern in a .NET application?
If yes, then I'm interested in the architecture f your implementation.

I'm also interested in thoughts about the extra effort needed.
0
Free Tool: Path Explorer

An intuitive utility to help find the CSS path to UI elements on a webpage. These paths are used frequently in a variety of front-end development and QA automation tasks.

One of a set of tools we're offering as a way of saying thank you for being a part of the community.

 
LVL 12

Accepted Solution

by:
topdog770 earned 250 total points
ID: 17010142
lol... sorry..

I typically cheat.. for smaller projects where I want to share common data, I'll create a singleton class that maintains the data and then have the GUI components read and write to the singleton class.

I then put as much of the logic into the singleton class as I can easily do, with the remaining logic being handled in the GUI.

I agree with you that we have these great tools for quick development, and not as much built-in support for patterns, and the MVC pattern can easily become cumbersome ( imho )

0
 
LVL 5

Author Comment

by:pgloor
ID: 17018140
Ok, after spending a couple of hours implementing MVC I'm on the right track towards a working solution that solves the actual problem but raises several new questions.

Even its implementation differs from mine, taking a closer look at the standard .NET implementation I can clearly see the MVC pattern as well. Isn't the DataSet the Model, the BindingManager the Controller and the DataGridView the View?
0
 
LVL 13

Expert Comment

by:devsolns
ID: 17018237
0
 
LVL 12

Expert Comment

by:topdog770
ID: 17018250
Implementing 'official' patterns is still very new to me.. although, we've pretty much been using the principles for years.

I think that's the key with patterns, though--using the pattern to help complete (our) designs and programs and not work so hard at making (our) ideas fit into a specific pattern!
0

Featured Post

Free Tool: Subnet Calculator

The subnet calculator helps you design networks by taking an IP address and network mask and returning information such as network, broadcast address, and host range.

One of a set of tools we're offering as a way of saying thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Extention Methods in C# 3.0 by Ivo Stoykov C# 3.0 offers extension methods. They allow extending existing classes without changing the class's source code or relying on inheritance. These are static methods invoked as instance method. This…
Introduction Hi all and welcome to my first article on Experts Exchange. A while ago, someone asked me if i could do some tutorials on object oriented programming. I decided to do them on C#. Now you may ask me, why's that? Well, one of the re…
This video shows how to quickly and easily add an email signature for all users on Exchange 2016. The resulting signature is applied on a server level by Exchange Online. The email signature template has been downloaded from: www.mail-signatures…
With Secure Portal Encryption, the recipient is sent a link to their email address directing them to the email laundry delivery page. From there, the recipient will be required to enter a user name and password to enter the page. Once the recipient …

808 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question