Filter Lookup Editor Data Source
- Set the Many-to-Many relationship between the Position and Department classes.
[DefaultClassOptions]
[System.ComponentModel.DefaultProperty("Title")]
public class Department : BaseObject {
//...
[Association("Departments-Positions", typeof(Position))]
public XPCollection Positions {
get { return GetCollection("Positions"); }
}
}
[DefaultClassOptions]
[System.ComponentModel.DefaultProperty("Title")]
public class Position : BaseObject {
//...
[Association("Departments-Positions", typeof(Department))]
public XPCollection Departments {
get { return GetCollection("Departments"); }
}
}
-
Set the DataSourceProperty property to "Department.Positions". As the result, the Position lookup editor will actually display the Department.Positions collection.
-
Set the DataSourcePropertyIsNullMode property to "SelectAll", to display all existing objects in the Contact.Position editor when the Department.Positions property is not specified.
-
The data source for the Position property is changed each time the Department property is changed. So, the Position property value should be set to null (Nothing in VB) after its data source has changed. To set a new value from the recreated data source, replace the Department property declaration with the following code.
[Association("Department-Contacts", typeof(Department)), ImmediatePostData]
public Department Department {
get {return department;}
set {
SetPropertyValue("Department", ref department, value);
if(!IsLoading) {
Position = null;
if(Manager != null && Manager.Department != value) {
Manager = null;
}
}
}
}