Returning Extra Data from the Web Service
The Web Service methods normally return only a list with the current appointments. For example, this is the signature of the GetAppointments method:
public IEnumerable<AppointmentData> GetAppointments(SchedulerInfo schedulerInfo)
You might want to extend this result with information that concerns your application, such as status codes and additional metadata. For such scenarios RadScheduler recognizes a second return type: ISchedulerOperationResult. This interface is defined as:
public interface ISchedulerOperationResult<T> where T : IAppointmentData
{
IEnumerable<T> Appointments { get; set; }
}
Implementers of this interface can define their own properties, as long as they are serializable.
A default implementation of this interface is included for convenience - SchedulerOperationResult.
Example
For this example we are going to return an extra Code value (int) along with the result from GetAppointments.
We start by implementing ISchedulerOperationResult:
public class SchedulerResult : SchedulerOperationResult<AppointmentData>
{
private int _code;
public int Code
{
get { return _code; }
set { _code = value; }
}
}
Then we can define the GetAppointments method:
public SchedulerResult GetAppointments(SchedulerInfo schedulerInfo)
{
SchedulerResult result = new SchedulerResult();
result.Appointments = Controller.GetAppointments<AppointmentData>(schedulerInfo);
result.Code = 1;
return result;
}
You can then access the Code from the client-side requestSuccess event:
<script type="text/javascript">
function requestSuccess(s, e)
{
alert("Code: " + e.get_result().Code);
}
</script>
<telerik:RadScheduler RenderMode="Lightweight" runat="server" ID="RadScheduler1" ...
OnClientRequestSuccess="requestSuccess">
<WebServiceSettings Path="~/SchedulerDataService.asmx" />
</telerik:RadScheduler>