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");
|
|
}
|
|
}
|
|
} |