108 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			108 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
using System;
 | 
						|
using System.Collections.Generic;
 | 
						|
using System.ComponentModel;
 | 
						|
using System.Data;
 | 
						|
using System.Drawing;
 | 
						|
using System.Text;
 | 
						|
using System.Windows.Forms;
 | 
						|
using Csla;
 | 
						|
using Volian.Object.Library;
 | 
						|
 | 
						|
namespace SimpleTest
 | 
						|
{
 | 
						|
	public partial class frmUser : Form
 | 
						|
	{
 | 
						|
		User _user;
 | 
						|
		public User User
 | 
						|
		{
 | 
						|
			get { return _user; }
 | 
						|
		}
 | 
						|
		private static readonly log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
 | 
						|
		public frmUser(int uid)
 | 
						|
		{
 | 
						|
			InitializeComponent();
 | 
						|
			_user = User.Get(uid);
 | 
						|
			_user.BeginEdit();
 | 
						|
			//_user.PropertyChanged += new PropertyChangedEventHandler(_user_PropertyChanged);
 | 
						|
			//_user.UserMemberships.ListChanged += new ListChangedEventHandler(UserMemberships_ListChanged);
 | 
						|
			userBindingSource.DataSource = _user;
 | 
						|
		}
 | 
						|
 | 
						|
		void UserMemberships_ListChanged(object sender, ListChangedEventArgs e)
 | 
						|
		{
 | 
						|
			LogDirtyStatus("List Changed - " + e.ListChangedType.ToString());
 | 
						|
		}
 | 
						|
 | 
						|
		void _user_PropertyChanged(object sender, PropertyChangedEventArgs e)
 | 
						|
		{
 | 
						|
			LogDirtyStatus("Property Changed - " + e.PropertyName);
 | 
						|
		}
 | 
						|
		private void LogDirtyStatus(string s)
 | 
						|
		{
 | 
						|
			log.InfoFormat("--------{0}-------",s);
 | 
						|
			log.InfoFormat("IsDirty = {0}",_user.IsDirty);
 | 
						|
			foreach(UserMembership um in _user.UserMemberships){
 | 
						|
				log.InfoFormat("{0} IsDirty = {1}",um.Group_GroupName,um.IsDirty);
 | 
						|
			}
 | 
						|
		}
 | 
						|
		private void Save(bool rebind)
 | 
						|
		{
 | 
						|
			this.userBindingSource.RaiseListChangedEvents = false;
 | 
						|
			this.userMembershipsBindingSource.RaiseListChangedEvents = false;
 | 
						|
			// do the save
 | 
						|
			this.userBindingSource.EndEdit();
 | 
						|
			this.userMembershipsBindingSource.EndEdit();
 | 
						|
			try
 | 
						|
			{
 | 
						|
				User temp = _user.Clone();
 | 
						|
				_user = temp.Save();
 | 
						|
				_user.BeginEdit();
 | 
						|
				if (rebind)
 | 
						|
				{
 | 
						|
					// rebind the UI
 | 
						|
					this.userBindingSource.DataSource = null;
 | 
						|
					this.userMembershipsBindingSource.DataSource = this.userBindingSource;
 | 
						|
					this.userBindingSource.DataSource = _user;
 | 
						|
//					ApplyAuthorizationRules();
 | 
						|
				}
 | 
						|
			}
 | 
						|
			catch (Csla.DataPortalException ex)
 | 
						|
			{
 | 
						|
				MessageBox.Show(ex.BusinessException.ToString(),
 | 
						|
					"Error saving", MessageBoxButtons.OK,
 | 
						|
					MessageBoxIcon.Exclamation);
 | 
						|
			}
 | 
						|
			catch (Exception ex)
 | 
						|
			{
 | 
						|
				MessageBox.Show(ex.ToString(),
 | 
						|
					"Error Saving", MessageBoxButtons.OK,
 | 
						|
					MessageBoxIcon.Exclamation);
 | 
						|
			}
 | 
						|
			finally
 | 
						|
			{
 | 
						|
				this.userBindingSource.RaiseListChangedEvents = true;
 | 
						|
				this.userMembershipsBindingSource.RaiseListChangedEvents = true;
 | 
						|
				this.userBindingSource.ResetBindings(false);
 | 
						|
				this.userMembershipsBindingSource.ResetBindings(false);
 | 
						|
			}
 | 
						|
		}
 | 
						|
 | 
						|
		private void btnSave_Click(object sender, EventArgs e)
 | 
						|
		{
 | 
						|
			LogDirtyStatus("Before Save");
 | 
						|
			Save(true);
 | 
						|
			LogDirtyStatus("After Save");
 | 
						|
		}
 | 
						|
 | 
						|
		private void btnCancel_Click(object sender, EventArgs e)
 | 
						|
		{
 | 
						|
			LogDirtyStatus("Before Cancel");
 | 
						|
			userBindingSource.RaiseListChangedEvents=false;
 | 
						|
			userBindingSource.CancelEdit();
 | 
						|
			userBindingSource.RaiseListChangedEvents = true;
 | 
						|
//			_user.CancelEdit();
 | 
						|
			_user.BeginEdit();
 | 
						|
			LogDirtyStatus("After Cancel");
 | 
						|
		}
 | 
						|
	}
 | 
						|
} |