Hi,
Before I stop work and use the modules provided by Dennis as part of K18163 can you tell me why my DetailView controller doesn't work reliably. It seems to work sometimes but not others, the code is shown below and i'm trying to make the "ExpiryDate" readonly when "Enabled" is false.
Thanks
Glynn
public partial class DocumentDetailViewController : ViewController
{
private DetailView detailViewCore = null;
private Dictionary<string,PropertyEditor> editorsHolder = new Dictionary<string,PropertyEditor>();
public DocumentDetailViewController()
{
TargetViewType = ViewType.DetailView;
TargetObjectType = typeof(Document);
InitializeComponent();
RegisterActions(components);
}
protected override void OnActivated()
{
base.OnActivated();
View.ControlsCreated += new EventHandler(View_ControlsCreated);
View.CurrentObjectChanged += new EventHandler(View_CurrentObjectChanged);
View.ObjectSpace.ObjectChanged += new EventHandler<ObjectChangedEventArgs>(ObjectSpace_ObjectChanged);
detailViewCore = (DetailView)View;
}
protected override void OnDeactivating()
{
base.OnDeactivating();
View.ControlsCreated -= new EventHandler(View_ControlsCreated);
View.CurrentObjectChanged -= new EventHandler(View_CurrentObjectChanged);
View.ObjectSpace.ObjectChanged -= new EventHandler<ObjectChangedEventArgs>(ObjectSpace_ObjectChanged);
}
private PropertyEditor Initialise(string name)
{
PropertyEditor editor = null;
try
{
editor = editorsHolder[name];
}
catch (KeyNotFoundException)
{
editor = (PropertyEditor)detailViewCore.FindItem(name);
if (editor != null)
{
editorsHolder.Add(name, editor);
}
else
{
throw new Exception(string.Format("Cannot find property editor for the following property: {0}", name));
}
}
return editor;
}
void ObjectSpace_ObjectChanged(object sender, ObjectChangedEventArgs e)
{
if(e.PropertyName=="Enabled")
{
UICustomisation();
}
}
void View_CurrentObjectChanged(object sender, EventArgs e)
{
UICustomisation();
}
void View_ControlsCreated(object sender, EventArgs e)
{
UICustomisation();
}
private void UICustomisation()
{
Document obj = (Document)View.CurrentObject;
PropertyEditor editor = Initialise("ExpiryDate");
editor.ReadOnly.SetItemValue("Expiry read only", !obj.Enabled);
}
}