P: Estoy almacenando toda mi recurrencia de citas y datos de excepción en una base de datos SQl Server. ¿Hay una manera de crear manualmente las excepciones para mis recurrencias?
R: Las excepciones se pueden crear a partir de código usando el método Recurrence.MarkException(Item, bool). Usted debe proporcionar una referencia a la aparición del elemento, que se marca como una excepción. Con el fin de obtener una sola instancia de un elemento periódico, llamar al método Recurrence.GenerateItems.
P: Si creo una cita y establezco un objeto de recordatorio, ¡en una específica no funciona!
R: Los recordatorios en Planner.NET provocar un evento. Para ser notificado de un recordatorio, debe controlar Schedule.ItemReminderTriggered. Suponiendo que la variable 'calendar' hace refencia a un control de calendario Planner.NET, el código siguiente muestra cómo se podría manejar el evento:
calendar.Schedule.ItemReminderTriggered += new MindFusion.Scheduling.ItemEventHandler(OnItemReminder); // ... private void OnItemReminder(object sender, MindFusion.Scheduling.ItemEventArgs e) { MessageBox.Show(e.Item.Reminder.Message); }
P: ¿Cómo puedo añadir mi propiedad a la clase Apointment? Tengo que mantener dos valores de datos.
R: Para agregar datos personalizados a una cita, usted necesita crear su propia clase derivada de Appointment. Puede agregar las propiedades adicionales que necesite para la clase derivada.
El ejemplo siguiente muestra cómo hacer esto.
class MyAppointment : Appointment { public MyAppointment() { customData = 5; } public int CustomData { get { return customData; } set { customData = value; } } private int customData; }
Utilice la propiedad Calendar.InteractiveItemType para especificar que los elementos de la clase deben instanciarse cada vez que el usuario crea elementos interactivamente. En este caso, usted tiene que asegurarse de que su clase proporciona un constructor sin parámetros como se indica en la documentación Planner.NET.
Nota: Consulte Tutorial # 4 en la documentación para obtener más información sobre cómo crear clases de citas personalizadas que también soportan serialización, recurrencia y duplicación.
P: Tengo que configurar el color de relleno de un objeto a un color específico en función del estado del elemento dentro de un sólo mes y vistas de calendario. ¿Existe un atributo de nivel de calendario que puede ser utilizado para esto?
R: ¿Intentó establecer la propiedad Brush del objeto Style asociado con e elemento? Por ejemplo, si 'item' es una variable haciendo referencia al Elemento cuyo color de fondo le gustaría cambiar, aquí está un ejemplo de código que debería hacer esto:
item.Brush = MindFusion.Drawing.SolidBrush(Color.Green);Se debe utilizar la SelectedStyle.Brush para cambiar el color de relleno de los elementos seleccionados.
P: ¿Pueden por favor decirme cómo obtener el índice de un elemento en la vista Timetable?. Yo uso mis propios números ID y etiquetas desde una base de datos y necesito eliminar un elemento, la única manera que veo de hacer esto es con el número de índice. ¿Podrían decirme por favor cómo obtener el índice o cómo eliminar una elemento desde su ID o etiqueta?
R: Los elementos se almacenan en una colección, a la que se puede acceder desde la propiedad Calendar.Schedule.Items. Para encontrar el índice de un elemento concreto dentro de esa colección, basta con llamar al método IndexOf de la colección. También puede recorrer esta colección y eliminar de ella el elemento que cumple con ciertos criterios (como tener una etiqueta o id particular).
P: ¿Cómo se puede ajustar el color para las citas en la vista de recursos?
R: Los elementos en la vista de Recursos usan Style.HeaderBrush para llenar ss contenidos.
P: ¿Es posible hacer doble clic en un espacio abierto en la vista de calendario y abrir una ventana de Cita para crear un evento?
R: Usted puede manejar el evento DateClick y mostrar la ventana de creación de cita en él. Usted puede verificar la propiedad Clicks del objeto de datos del evento correspondiente para determinar el número de veces que el botón del ratón fue presionado. Un valor de 2 significa que el botón fue presionado en un doble clic.
P: ¿Cómo puedo fácilmente limitar el número de citas a la vez? Quiero crear un sistema automático para crear citas. Cuando el usuario empieza a arrastrar, quiero limitar el número de citas simultáneas.
R: El siguiente método evita que los usuarios arrastren más de 3 citas en un sólo día en una vista de Single Month, List o WeekRange. El método representa una manejador del evento Calendar.ItemModifying, que es disparado cuando el usuario mueve o cambia el tamano de las citas. Establecer la propiedad Confirm del objeto EventArgs prohíbe la operación.
private void calendar_ItemModifying(object sender, ItemModifyConfirmEventArgs e) { DateTime from = e.NewStartTime.Date; DateTime to = from + new TimeSpan(TimeSpan.TicksPerDay - 1); while (to < e.NewEndTime.Date) { if (calendar.Schedule.GetAllItems(from, to).Count > 2) { e.Confirm = false; return; } from += TimeSpan.FromDays(1); to = from + new TimeSpan(TimeSpan.TicksPerDay - 1); } }