2013-04-13 119 views
0

想法 是我從哪裏可以選擇不同日期的日曆控件。基於選擇的日期,我做了一個Ajax調用WCF服務(GetDealData())來獲取一些數據集。 請問你們有什麼人請看看這裏有什麼錯?兩天來,我有點瘋狂,試圖找出爲什麼我的GetRemoteData()方法每次執行OnDateChange方法時都會傳遞相同的日期(即25-10-2012),即使我在日曆控件上選擇了不同的日期。這與json數據沒有正確分配有關嗎?通過Kendo UI將日期傳遞給WCF REST服務(Javascript/jquery)

$('#calendarContainer').kendoCalendar({ 
     format: "dd/MM/yyyy", 
     culture: "en-GB", 
     change: onDateChange 
}); 

function onDateChange() { 
     var date = kendo.toString(this.value(), 'dd/MM/yyyy'); 
     var bob = GetRemoteData(date); 
     $("#grid").data("kendoGrid").dataSource.data(bob); 
     $("#grid").data("kendoGrid").dataSource.read();   
    } 

功能GetRemoteData(日期){

 var chosenDate; 

     if (typeof date=="undefined") 
     { 
      alert("it is null " + date); 
      chosenDate = "25-10-2012"; 
     } 
     else { 
      alert("it is not null " + date);    
      chosenDate = date; 
     } 

     source = new kendo.data.DataSource({ 
     // autoSync:true, 
      transport: { 
       read: { 
        type: "GET", 
        url: "http://localhost:35798/RestServiceImpl.svc/GetDealData", 
        dataType: "jsonp", 
        contentType: "application/json; charset=utf-8", 
        cache: false, 
        data: { 
         startDate:chosenDate 
        } 
       } 

      }, 
      schema: { 
       model: { 
        fields: { 
         DealNumber: { type: "string" }, 
         DealIssuer: { type: "string" }, 
         Ticker: { type: "string" }, 
         DealType: { type: "string" }, 
         DealValue: { type: "number" }, 
         DealStatus: { type: "string" }, 
         DealPricingCompletionDate: { type: "date" } 
        } 
       } 
      }, 
      pageSize: 16 
     }); 
     return source; 
    } 





    WCF Methods 
    [OperationContract] 
    [WebInvoke(Method = "GET", ResponseFormat = WebMessageFormat.Json, 
     BodyStyle = WebMessageBodyStyle.WrappedRequest, 
     UriTemplate = "GetDealData?startDate={startDate}")] 
    List<DealData> GetDealData(string startDate); 


    public List<DealData> GetDealData(string startDate) 
    { 
     CultureInfo culture = new CultureInfo("en-GB");         
     List<DealData> model =      Service.GetDealData(Convert.ToDateTime(startDate,culture));   
     return model; 
    }  

回答

0

從你的代碼,似乎這個問題並不涉及到WCF - 它只是一個JavaScript的問題。 看來,你的日期總是未定義的。

我試圖找出this.value()的值是什麼,在此之後 - kendo.toString(this.value(), 'dd/MM/yyyy')的值。

對我來說,它的聲音可能像某些格式問題。

您可以使用瀏覽器的控制檯來調試JavaScript

+0

嗨evgenyl!感謝您的答覆。是的,this.value()顯示我在日曆控件中選擇的確切值。這從警報語句中得到確認,看看實際值是多少。問題出在我指定數據屬性的傳輸部分。由於一些奇怪的原因,即使日期變量已經獲得了一些其他值,它始終會將「25-10-2012」作爲值發送給WCF Rest服務。 – Sike12

+0

你調試過嗎?在if(typeof date == ...)之後chooseDate的值是多少?此外,我會嘗試更改日期字符串日期repsresentation日期() – evgenyl

+0

是的,我得到的實際值時調試後,如果(typeof日期== ...)? ...這意味着變量「chosenDate」自動獲得從「date」變量傳入的選定值。只是當我調用read方法時,它將傳遞null。我無法將其更改爲Date對象,因爲WCF服務器期望帶有字符串參數的日期。我正在盡力將它作爲字符串日期發送。 – Sike12