Hi!
I'm trying to change property caption based on current object's values.
I've found this ticket: http://www.devexpress.com/Support/Center/Question/Details/Q407697
Older tickets seems to be out-dated since they use View.SyncronizeWithInfo() which doesn't seems exists any more.
Here is my controller that should change caption and AllowEdit:
C#private DetailView detailView
{
get { return View as DetailView; }
}
public SkriptaStavka_Controller()
{
InitializeComponent();
RegisterActions(components);
TargetObjectType = typeof(SkriptaStavka);
}
protected override void OnActivated()
{
base.OnActivated();
if (detailView != null && detailView.ViewEditMode == ViewEditMode.Edit)
{
SkriptaStavka ss = detailView.CurrentObject as SkriptaStavka;
ss.Changed += ss_Changed;
}
}
void ss_Changed(object sender, DevExpress.Xpo.ObjectChangeEventArgs e)
{
if (e.PropertyName == "TipStavke")
{
SkriptaStavka ss = e.Object as SkriptaStavka;
PropertyEditor v1 = detailView.FindItem("Vrijednost") as PropertyEditor;
PropertyEditor v2 = detailView.FindItem("Vrijednost2") as PropertyEditor;
PropertyEditor v3 = detailView.FindItem("VrijednostS") as PropertyEditor;
if (ss.TipStavke != null)
{
v1.Caption = String.IsNullOrWhiteSpace(ss.TipStavke.NaslovVrijednost1) ? "Vrijednost 1" : ss.TipStavke.NaslovVrijednost1;
v1.AllowEdit["Naslov"] = !String.IsNullOrWhiteSpace(ss.TipStavke.NaslovVrijednost1);
v2.Caption = String.IsNullOrWhiteSpace(ss.TipStavke.NaslovVrijednost2) ? "Vrijednost 2" : ss.TipStavke.NaslovVrijednost2;
v2.AllowEdit["Naslov"] = !String.IsNullOrWhiteSpace(ss.TipStavke.NaslovVrijednost2);
v3.Caption = String.IsNullOrWhiteSpace(ss.TipStavke.NaslovVrijednost3) ? "Vrijednost 3" : ss.TipStavke.NaslovVrijednost3;
v3.AllowEdit["Naslov"] = !String.IsNullOrWhiteSpace(ss.TipStavke.NaslovVrijednost3);
}
else
{
v1.Caption = "Vrijednost 1";
v1.AllowEdit["Naslov"] = false;
v2.Caption = "Vrijednost 2";
v2.AllowEdit["Naslov"] = false;
v3.Caption = "Vrijednost 3";
v3.AllowEdit["Naslov"] = false;
}
}
}
protected override void OnViewControlsCreated()
{
base.OnViewControlsCreated();
}
protected override void OnDeactivated()
{
if (detailView != null && detailView.ViewEditMode == ViewEditMode.Edit)
{
SkriptaStavka ss = detailView.CurrentObject as SkriptaStavka;
ss.Changed -= ss_Changed;
}
base.OnDeactivated();
}
Also, SkriptaStavke.TipStavke has ImmediatePostData attribute.
But Caption nor AllowEdit doesn't change. It seems it's changed inside model and it's visible if I close and reopen DetailView.
What am I doing wrong?
Thanks,
Mario