This is a migrated thread and some comments may be shown as answers.

Problem with DataSource

5 Answers 251 Views
Scheduler and Reminder
This is a migrated thread and some comments may be shown as answers.
Sophie
Top achievements
Rank 1
Sophie asked on 25 Nov 2008, 03:21 PM

Hi,
I used your class MyAppointment in your trial example...

This is my code : 

String query;

query ="Select * from myTable";
SqlConnection myConn = new SqlConnection("Data Source=MyServer;Initial Catalog=MyCatalog;User Id=MyUser;Password=MyPassword;");
SqlCommand cmd = new SqlCommand(query, myConn);
SqlDataReader read; 
myConn.Open();
read = cmd.ExecuteReader();
while (read.Read())
{
MyAppointment app = new MyAppointment(Convert.ToDateTime(read.GetString(2)), Convert.ToDateTime(read.GetString(3)), Convert.ToString(read.GetInt32(0)), read.GetString(1), read.GetString(4));

appointments.Add(app);
}
myConn.Close();

SchedulerBindingDataSource dataSource = new SchedulerBindingDataSource(); 
AppointmentMappingInfo appointmentMappingInfo = new AppointmentMappingInfo();
appointmentMappingInfo.Start =
"Start";
appointmentMappingInfo.End =
"End";
appointmentMappingInfo.Summary =
"Subject";
appointmentMappingInfo.Description =
"Description";
appointmentMappingInfo.Location =
"Location";
appointmentMappingInfo.UniqueId =
"Id";
SchedulerMapping idMapping = appointmentMappingInfo.FindByDataSourceProperty("Id");  
dataSource.EventProvider.Mapping = appointmentMappingInfo;
dataSource.EventProvider.DataSource = appointments;

this
.ux_cedule.DataSource = dataSource;

But I have error message : impossible to convert object 'System.GUID to 'Telerik.WinControls.UI.EventId' type. Do you understand wath is my problem?

Thanks a lot again
Sophie

5 Answers, 1 is accepted

Sort by
0
Jordan
Telerik team
answered on 26 Nov 2008, 08:37 AM
Hello Sophie,

In the same example, please note how convert callbacks are assigned for the id mapping:
 
SchedulerMapping idMapping = appointmentMappingInfo.FindByDataSourceProperty("Id"); 
            idMapping.ConvertToDataSource = new ConvertCallback(this.ConvertIdToDataSource); 
            idMapping.ConvertToScheduler = new ConvertCallback(this.ConvertIdToScheduler); 

 private object ConvertIdToScheduler(object id) 
        { 
            return new EventId(id); 
        } 
 
        private object ConvertIdToDataSource(object id) 
        { 
            return (id != null) ? (id as EventId).KeyValue : Guid.NewGuid(); 
        } 


These callbacks solve that problem.

 
All the best,
Jordan
the Telerik team

Check out Telerik Trainer, the state of the art learning tool for Telerik products.
0
Derek
Top achievements
Rank 1
answered on 10 Dec 2008, 02:13 PM
Hi I get the following error with your example:

Error 1 Delegate 'Telerik.WinControls.UI.ConvertCallback' requires an 'AddressOf' expression or lambda expression as the only argument to its constructor. C:\development\CRM\CRM\Classes\SchedulerEvents.vb 67 61 CRM

I put 'addressof' in, but now how to i convert the following to VB ? 

return (id != null) ? (id as EventId).KeyValue : Guid.NewGuid(); 

Thanks.

0
Jordan
Telerik team
answered on 12 Dec 2008, 09:57 AM
Hello Derek,

The same example has a VB version. Here is some code from it:
 
Private Sub btnBind_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btnBind.Click 
                  Dim dataSource As New SchedulerBindingDataSource() 
                  Dim appointmentMappingInfo As New AppointmentMappingInfo() 
                  appointmentMappingInfo.Start = "Start" 
                  appointmentMappingInfo.End = "End" 
                  appointmentMappingInfo.Summary = "Subject" 
                  appointmentMappingInfo.Description = "Description" 
                  appointmentMappingInfo.Location = "Location" 
                  appointmentMappingInfo.UniqueId = "Id" 
                  Dim idMapping As SchedulerMapping = appointmentMappingInfo.FindByDataSourceProperty("Id"
            idMapping.ConvertToDataSource = New ConvertCallback(AddressOf Me.ConvertIdToDataSource) 
            idMapping.ConvertToScheduler = New ConvertCallback(AddressOf Me.ConvertIdToScheduler) 
                  dataSource.EventProvider.Mapping = appointmentMappingInfo 
                  dataSource.EventProvider.DataSource = appointments 
 
                  Me.radScheduler1.DataSource = dataSource 
            End Sub 
 
            Private Function ConvertIdToScheduler(ByVal id As Object) As Object 
                  Return New EventId(id) 
            End Function 
 
            Private Function ConvertIdToDataSource(ByVal id As Object) As Object 
            If (Not id Is Nothing) Then 
                Return (TryCast(id, EventId)).KeyValue 
            Else 
                Return Guid.NewGuid() 
            End If 
            End Function 
 


You can also use our code converter at http://codechanger.com/ to change between C# and VB and vice versa.

Hope this helps.

Kind regards,
Jordan
the Telerik team

Check out Telerik Trainer, the state of the art learning tool for Telerik products.
0
Diego
Top achievements
Rank 1
answered on 02 May 2010, 02:24 AM
Hi I have this similar error.
Unable to cast object of type 'System.Guid' to type 'System.IConvertible'.Couldn't store <80dcdba4-c699-41c5-b39b-53072a01554d> in ID Column.  Expected type is Int32.

Database is Access DB(With ID fields as Integer Autonumeric Increment)

I'm Binding from/to Dataset (The error appears when i try create a new appointment), the error is in dataset level I guess, because i never  call the commit method.

How to avoid that  the id arrive as GUID in ConvertIdToDataSource(object id) method..

When I loading appoinments for first time. in ConvertIdToScheduler(object id) the values arrive as iinteger(the same values in database), but I guess that creating a new value create a guid and that will trigger that error)




0
Dobry Zranchev
Telerik team
answered on 03 May 2010, 05:25 PM
Hello Diego,

Before getting to your question, we would like to remind you to ask the person who has purchased our controls in your company to add you as a License Developer to the purchase. This will give you full access to the products your company has purchased, to our downloads section, and to our support ticketing system. Additionally, all your questions will be reviewed according to the license you have. More information on License Developers you can find here: www.telerik.com/account/faqs.aspx.

As to your question, please verify the differences between your dataset and the example dataset.

There are a few problems that we are aware of with working with Access: when you create your dataset from an access database the Id of the appointment is not read only, and also AutoincrementSeed and AutoincrementStep have values -1, but the value should be 1.

If you have additional questions feel free to ask.

All the best,
Dobry Zranchev
the Telerik team

Do you want to have your say when we set our development plans? Do you want to know when a feature you care about is added or when a bug fixed? Explore the Telerik Public Issue Tracking system and vote to affect the priority of the items.
Tags
Scheduler and Reminder
Asked by
Sophie
Top achievements
Rank 1
Answers by
Jordan
Telerik team
Derek
Top achievements
Rank 1
Diego
Top achievements
Rank 1
Dobry Zranchev
Telerik team
Share this question
or