Ok, I must be missing something. Why is getting WinSchedule to work with a MySQL backend so difficult?
Setup: Development Platform - Visual Studio 2008. MySQL Connector - 6.0.5. WinSchedule version - 8.1
I have a MySQL table set up for Appointments. I've added on appointment to it manually. All I want is to display that one appointment on a MonthViewSingle calendar. On the form I have UltraCalendarInfo1, UltraMonthViewMulti1 and UltraMonthViewSingle1. Everything is set up. Everything is ready to go. Problem - I can't connect to the database via Bind. So, I create an Appointment class and try to bind the CalendarInfo to it. When I run it I get "Object reference not set to an instance of an object". Absolutely nothing I've tried has worked, and there's no documentation whatsoever for the WinSchedule control. I've been trying to figure this out with a Trial-And-Error approach (apparently my only option) for 3 solid work days and I'm about over it. I'm giving this 8 more hours and I'm scrapping Infragistics and finding something else.
Does ANYONE have ANY idea who to make this work? I'm not trying to split an atom or anything. I just want a @#$% appointment to show up on the calendar!
You are right... it is not rock science to get this working. But I dispute the fact that there is no documentation. Document is very good and quiet extensive.
Also use the samples provided. The WinSchedule Database Sample is VERY VERY GOOD.
Here is an example from the DOCUMENTATION. In this example the datasource (a DataTable) is created MANUALLY. Take note of the data Types of each MANDATORY Appointment DataBinding Object.
Of course this example won't help you if you can't even read from the database but I am going to assume this is not where your problem lies. I suspect you can atleast get this far. Most likely your data types don't match those of the properties you are trying to bind to, OR you are not binding the UltraCalendarInfo object.
GOod Luck.
#Region " CreateAppointmentsDataTable " 'Create the structure of the Appointments Table Private Function CreateAppointmentsDataTable() As DataTable Dim newTable As DataTable = New DataTable() 'Basic Appointment properties ' In order to function properly, the table must contain data for ' Subject, StartDateTime, and EndDateTime. These three fields are ' required for an appointment. So all of these will have DefaultValues. newTable.Columns.Add("Subject", GetType(String)) newTable.Columns("Subject").DefaultValue = "New Appointment" newTable.Columns.Add("StartDateTime", GetType(DateTime)) newTable.Columns("StartDateTime").DefaultValue = DateTime.Now newTable.Columns.Add("EndDateTime", GetType(DateTime)) newTable.Columns("EndDateTime").DefaultValue = DateTime.Now.AddHours(1) newTable.Columns.Add("Description", GetType(String)) ' All other fields are Optional. 'Properties for AllDayEvents newTable.Columns.Add("AllDayEvent", GetType(Boolean)) newTable.Columns("AllDayEvent").DefaultValue = False 'Properties for Reminders newTable.Columns.Add("ReminderEnabled", GetType(Boolean)) newTable.Columns("ReminderEnabled").DefaultValue = False newTable.Columns.Add("ReminderInterval", GetType(Integer)) newTable.Columns.Add("ReminderUnits", GetType(Integer)) 'Properties when imports owners newTable.Columns.Add("OwnerKey", GetType(String)) 'Properties when imports recurring appointments. newTable.Columns.Add("RecurrenceId", GetType(System.Guid)) newTable.Columns.Add("Recurrence", GetType(Byte())) newTable.Columns.Add("OriginalStartDateTime", GetType(DateTime)) 'DataKey is an extra field that can be used to link the appointment to some external data. newTable.Columns.Add("DataKey", GetType(String)) 'All properties ' Any other Appointment properties not covered above are stored as ' Binary data in the AllProperties field. This includes properties like ' BarColor, Location, etc. newTable.Columns.Add("AllProperties", GetType(Byte())) Return newTable End Function#End Region#Region " SetAppointmentBindings" 'Set the Data Bindings for Appointments Private Sub SetAppointmentBindings() ' Get the data Me.scheduleData.Tables.Add( Me.CreateAppointmentsDataTable() ) ' Set the BindingContextControl so the component will use the same context ' that the grid and any other controls on the form are using. Me.ultraCalendarInfo1.DataBindingsForAppointments.BindingContextControl = Me ' Basic Appointment properties Me.ultraCalendarInfo1.DataBindingsForAppointments.SubjectMember = "Subject" Me.ultraCalendarInfo1.DataBindingsForAppointments.DescriptionMember = "Description" Me.ultraCalendarInfo1.DataBindingsForAppointments.StartDateTimeMember = "StartDateTime" Me.ultraCalendarInfo1.DataBindingsForAppointments.EndDateTimeMember = "EndDateTime" Me.ultraCalendarInfo1.DataBindingsForAppointments.AllDayEventMember = "AllDayEvent" Me.ultraCalendarInfo1.DataBindingsForAppointments.ReminderEnabledMember = "ReminderEnabled" Me.ultraCalendarInfo1.DataBindingsForAppointments.ReminderIntervalMember = "ReminderInterval" Me.ultraCalendarInfo1.DataBindingsForAppointments.ReminderUnitsMember = "ReminderUnits" 'Properties when imports owners Me.ultraCalendarInfo1.DataBindingsForAppointments.OwnerKeyMember = "OwnerKey" 'Properties when imports recurring appointments. Me.ultraCalendarInfo1.DataBindingsForAppointments.RecurrenceIdMember = "RecurrenceId" Me.ultraCalendarInfo1.DataBindingsForAppointments.RecurrenceMember = "Recurrence" Me.ultraCalendarInfo1.DataBindingsForAppointments.OriginalStartDateTimeMember = "OriginalStartDateTime" ' All other properties Me.ultraCalendarInfo1.DataBindingsForAppointments.AllPropertiesMember = "AllProperties" 'DataKey is an extra field that can be used to link the appointment to some external data. Me.ultraCalendarInfo1.DataBindingsForAppointments.DataKeyMember = "DataKey" ' DataSource & DataMember Me.ultraCalendarInfo1.DataBindingsForAppointments.SetDataBinding(Me.scheduleData, string.Empty) End Sub#End Region
Thank you for your informative (all be it slightly condescending) response. I'm going to give it a try here in a moment.
I will dispute one thing with you. There's a big difference between documentation and code samples. Pouring through provided samples, each with multiple forms and classes, written by another programmer is extremely labor intensive, and if you're completely familiar with the control and how it all goes together, code samples can be invaluable.
Yes, Infragistics provides documentation - the problem with the documentation is that it's extremely low level. If you've used the controls for years and are completely familiar with how they all work, the documentation is very detailed and, I'm sure, invaluable. If, on the other hand, you're like me and are new to Infragistics, the documentation is completely inadequate. The steps for setting up what you described are pretty basic and generic. Show me documentation (not code samples) explaining how to do it, similar to what you described. You can't because it doesn't exist in any clear, concise location, and it should because that's the basic functionality of the control. Show me documentation saying that in order to use the month view you need the calendar info control. Show me the documentation that explains the structure of the database tables and what fields you'll need, or how to map those fields to the Calender Info control. If you pull up the online documentation there's a ton of information, but it's only useful if you've used and are familiar with the controls and how they all work together. I have no doubts that it's there, but it's spread out over countless pages of documentation that you can really only find if you know what you're looking for in the first place. Contrary to what you may think, I'm actually pretty smart, but what I need is an explanation of how the engine of the car works, not the parts I'll need to rebuild the transmission. That information will absolutely be useful once I know where the transmission is.
All I'm asking for is a 2-3 page summary of each of the controls, what it does and how it works. Once I've gotten the basic steps down I can then get into the low level documentation to tweak it to suit my exact needs.