0

Web サービス バインディングで Telerik RadScheduler を使用しています。

予定を別のタイムスロットにドラッグすると、 でクライアント側の検証を行いOnClientAppointmentMoveEnd、それが成功した場合に設定しますargs.set_cancel(true);

次に、Web サービス メソッドにヒットしますUpdateAppointment

次に、この Web サービス呼び出し内のサーバー側コードが、データベース クエリに基づいて追加の検証を行います。

私の質問は、このサーバー側の検証が失敗した場合、クライアント側の予定を元の場所に戻すにはどうすればよいですか? ステータスまたはメッセージをキャッチできますOnClientRequestFailedが、Web サービスの呼び出し後に移動イベントをキャンセルしたり、予定を元に戻したりする方法はありますか?

4

1 に答える 1

0

私は自分の答えを見つけましたUpdateAppointment.Webメソッドが呼び出された後、スケジューラが再度呼び出さGetAppointmentsれるため、クライアントに正しいデータをリロードする必要があります。

これが役立つと思われる他の人のために:

  1. 検証エラーのために UpdateAppointment で例外をスローしないでください。セッションにエラー メッセージを設定しました (プロバイダーから Web メソッドに戻す方法が見つかりませんでした)
  2. プロパティを持つ をMySchedulerResult継承するクラスを作成しました。SchedulerOperationResult<AppointmentData>ErrorMessage
  3. My UpdateAppointmentWeb Method はこの MySchedulerResult を返し、返された AppointmentsProvider.UpdateAppointmentをそれに割り当てます。セッションをチェックして検証エラーが発生したかどうかを確認し、ErrorMessage見つかった場合はプロパティをこの値に設定します。
  4. クライアント側の私のOnClientRequestSuccessメソッドは、この結果をアンパックし、見つかった場合はエラー メッセージを表示します。その間、予定データが再ロードされ、変更された予定が元のタイムスロットに戻るはずです。

ここでスケジューラの結果クラスに関する詳細情報を見つけました: http://docs.telerik.com/devtools/aspnet-ajax/controls/scheduler/web-service-binding/returning-extra-data-from-the-web-service

于 2016-02-02T01:57:12.847 に答える