using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using VEPROMS.CSLA.Library; namespace WinApp { public partial class frmMembership : Form { public frmMembership() { InitializeComponent(); } Membership _mem; private void frmMembership_Load(object sender, EventArgs e) { membershipInfoListBindingSource.DataSource = MembershipInfoList.Get(); SetupDetail(); SetupButtons(); } private DialogResult SaveAsNeeded() { if (_mem != null && _mem.IsSavable) { DialogResult dr = MessageBox.Show("Do you want to save changes", "Save Changes", MessageBoxButtons.YesNo, MessageBoxIcon.Question); if (dr == DialogResult.Yes) Save(); if (dr == DialogResult.No) Cancel(); // TODO: Need a Cancel return dr; } return DialogResult.Yes; } private void SetupDetail() { if (lbMembers.SelectedIndex != -1) { int ugid = (int)lbMembers.SelectedValue; if (_mem == null || _mem.UGID != ugid) { if (SaveAsNeeded() != DialogResult.Cancel) { _mem = Membership.Get(ugid); membershipBindingSource.DataSource = _mem; } } } } private void lbMembers_SelectedValueChanged(object sender, EventArgs e) { SetupDetail(); } private void SetupButtons() { if (_mem != null) { btnSave.Enabled = _mem.IsSavable; btnCancel.Enabled = _mem.IsDirty; btnNew.Enabled = _mem.IsValid; } else { btnSave.Enabled = false; btnCancel.Enabled = false; btnNew.Enabled = true; } } private void CurrentItemChanged(object sender, EventArgs e) { SetupButtons(); } private void btnCancel_Click(object sender, EventArgs e) { Cancel(); } private void btnSave_Click(object sender, EventArgs e) { Save(); } private void btnNew_Click(object sender, EventArgs e) { New(); } private void Cancel() { _mem.CancelEdit(); _mem.BeginEdit(); } private void Save() { membershipBindingSource.RaiseListChangedEvents = false; membershipBindingSource.EndEdit(); try { Membership temp = _mem.Clone(); _mem = temp.Save(); _mem.BeginEdit(); membershipBindingSource.DataSource = null; int ugid = _mem.UID; if (lbMembers.SelectedIndex == -1) lbMembers.SelectedValue = ugid; membershipBindingSource.DataSource = _mem; } 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 { membershipBindingSource.RaiseListChangedEvents = true; membershipBindingSource.ResetBindings(false); } SetupButtons(); } public void New() { if (SaveAsNeeded() != DialogResult.Cancel) { _mem = Membership.New(); membershipBindingSource.DataSource = _mem; lbMembers.SelectedIndex = -1; } } } }