137 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 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;
}
}
}
}