2016-05-10 10 views
2

剣道データソースを使用して、KendoUISchedulerをSignalR経由でバインドしています。 signalRバインディングを使用してdatasourceの読み取り操作にパラメータを渡す方法SignalRにパラメータを渡す方法剣道データソースの一部を読み取る

私は次のコードを使用しています:

するvarハブ= $ .connection.schedulerHubを。
var hubStart = $ .connection.hub.start();

$('#scheduler').kendoScheduler({ 
     mobile: true, 
     height: 600, 

     views: [ 
      'day', 
      'week', 
      'month', 
      'agenda', 
      { type: 'timeline', selected: true } 
     ], 

     timezone: 'Etc/UTC', 
     dataSource: { 
      type: "signalr", 
      push: function (e) { 
       alert(e.type); 
      }, 
      autoSync: true, 
      transport: { 
       signalr: { 
        promise: hubStart, 
        hub: hub, 
        server: { 
         read:"read", 
         update: "update", 
         destroy: "destroy", 
         create: "create"       

        }, 
        client: { 
         read:"read", 
         update: "update", 
         destroy: "destroy", 
         create: "create" 

        } 
       } 
      }, 

      schema: { 
       model: { 
        id: 'SchedulerID', 
        fields: { 
         SchedulerID: { type: 'number', from: 'SchedulerID' }, 
         start: { type: 'date', from: 'Start' }, 
         end: { type: 'date', from: 'End' },       
         startTimezone: { from: "StartTimezone" }, 
         endTimezone: { from: "EndTimezone" }, 
         Title: { from: 'Title' }, 
         isAllDay: { type: 'boolean', from: 'IsAllDay' }, 
         recurrenceId: { from: "RecurrenceId" }, 
         recurrenceException: { from: "RecurrenceException" }, 
         recurrenceRule: { from: "RecurrenceRule" },       
         Users: { nullable: true, from: 'Users' }, 

        }, 
       } 
      } 

     }, 


     group: { 
      resources: ['Users'], 
      orientation: 'vertical' 
     }, 
     resources: [ 
      { 
       field: 'Users', 
       name: 'Users', 
       dataSource: Users, 
       multiple: false, 
       title: 'Users' 
      } 

     ] 
    }); 

答えて

1

私はこの質問が古いことを認識していますが、私はこの同じ答えを見つけようとしていましたが、明確な解決策は見つかりませんでした。私は他のスレッドでいくつかのヒントを見つけましたが、解決策を導いてくれましたが、もっと良いものがあると確信しています(パラメータを個別に送信する方法を理解できませんでした。

データソースで、parameterMap関数を使用して、必要なカスタムパラメータを入力します。 WCF(コメント付きコード)にバインドする場合、コールのパラメータを区切ることはできますが、SignalRの実装で動作させることはできません。 「データ」変数は、フィルタ、ページング、グループ化、などを(私がグリッドに結合していますが、私はそれがスケジューラに同じだと思うだろう)が含まれていることを

type: "signalr", 
      transport: { 
       parameterMap: function (data, type) { 

        switch (type) { 
         case "read": 
          { 
           // this works 
           var request = {}; 
           var chkunsub = $('#chkunsubscribed').is(':checked'); 
           request.unsubscribed = chkunsub; 
           request.oKendo = data; 
           return request; 
           // Does not work (separating parameters) 
           //return { 
           // unsubscribed: chkunsub, 
           // oKendo: data 
           //}; 
          } 
          // Does not work either (separating parameters) 
          //return kendo.stringify({ 
          // unsubscribed: chkunsub ? 1 : 0, 
          // oKendo: data 
          //}); 
        } 
       }, 

注意。

ハブのサーバー側では、このようなクラス構造をミラーリングするだけです(私のCKendoGridOptionsクラスには、ページ、スキップ、フィルターなどのAPIのすべてのプロパティがあります)。

Public Class EventRequestData 
    Public Property unsubscribed As Boolean 
    Public Property oKendo As CKendoGridOptions 
End Class 

' This works 
Public Function read(data As EventRequestData) As OrmedReturnData 
    Dim oReturn As New OrmedReturnData 

    If IsLoggingEnabled() Then 
     WriteToEventLog("Hub getevent_item called") 
    End If 

    Dim oToken As TokenHelper.TokenData = TokenHelper.ValidateToken(New Guid(Context.Request.Cookies("token").Value)) 
    If oToken.TokenOK = False Then 
     oReturn.Success = False 
     oReturn.ErrorMessage = ERROR_INVALID_TOKEN 
    Else 
     Dim oData As New EventItems 
     oReturn = oData.Getevent_items(data.unsubscribed, data.oKendo) 
    End If 

    Return oReturn 

End Function 

私は、これはjQueryとSignalRに剣道を使用して、読み取り関数にパラメータを渡すしようとしている他の誰かに役立ちます願っています。

関連する問題