Schedule |
| Exception | Condition |
|---|---|
| ArgumentException | The field ID is not the ID of a field in this ScheduleDefinition. -or- The field and filter type cannot be used to filter this ScheduleDefinition. -or- The filter value is not valid for the field and filter type. |
| ArgumentNullException | A non-optional argument was null |
| InvalidOperationException | This ScheduleDefinition does not support filters. -or- The resulting filter count would be greater than 8. |
public static void AddFilterToSchedule(ViewSchedule schedule, ElementId levelId) { // Find level field ScheduleDefinition definition = schedule.Definition; ScheduleField levelField = FindField(schedule, BuiltInParameter.ROOM_LEVEL_ID); // Add filter using (Transaction t = new Transaction(schedule.Document, "Add filter")) { t.Start(); // If field not present, add it if (levelField == null) { levelField = definition.AddField(ScheduleFieldType.Instance, new ElementId(BuiltInParameter.ROOM_LEVEL_ID)); } // Set field to hidden levelField.IsHidden = true; ScheduleFilter filter = new ScheduleFilter(levelField.FieldId, ScheduleFilterType.Equal, levelId); definition.AddFilter(filter); t.Commit(); } } /// <summary> /// Finds an existing ScheduleField matching the given parameter /// </summary> /// <param name="schedule"></param> /// <param name="paramEnum"></param> /// <returns></returns> public static ScheduleField FindField(ViewSchedule schedule, BuiltInParameter paramEnum) { ScheduleDefinition definition = schedule.Definition; ScheduleField foundField = null; ElementId paramId = new ElementId(paramEnum); foreach (ScheduleFieldId fieldId in definition.GetFieldOrder()) { foundField = definition.GetField(fieldId); if (foundField.ParameterId == paramId) { return foundField; } } return null; }