2014-05-19 28 views
0

我想解析重複規則字符串到telerik對象,但它根本不適用於我。即使字符串模式似乎是正確的(從Kendo遞歸控制傳遞),結果始終爲空。感謝您對此的任何想法。Telerik - RecurrenceRule - TryParse不能正常工作

enter image description here

更新:我嘗試另一種情況,以證明如果解析是否工作,這裏是結果:

enter image description here

回答

1

按照這個帖子http://www.telerik.com/forums/parsing-recurrencerule-server-side復發規則的作品時,間隔指定。

至於由RecurrenceRule.TryParse拋出的異常,我注意到, 是間隔規則缺失時造成的。如果您想使用 RecurrenceRule.TryParse方法,則需要手動添加它。

這裏是最初由jonno上傳修改後的代碼

var today = DateTime.Now.Date; 
var start = today.AddDays(-14).AddHours(19); 
var end = start.AddHours(2.5); 

// Create a few recurring events using Kendo Web Scheduler and use the recurrence rules 
var patterns = new[] 
{ 
    "FREQ=DAILY;UNTIL=20140227T130000Z", 
    "FREQ=DAILY;INTERVAL=3;UNTIL=20140227T130000Z", 
    "FREQ=DAILY;INTERVAL=3;COUNT=4", 
    "FREQ=DAILY;INTERVAL=5", 
    "FREQ=WEEKLY;BYDAY=WE;INTERVAL=1", 
    "FREQ=WEEKLY;COUNT=5;BYDAY=TU,WE;INTERVAL=1", 
    "FREQ=WEEKLY;INTERVAL=4;COUNT=5;BYDAY=WE,TH,SA", 
    "FREQ=WEEKLY;INTERVAL=3;UNTIL=20140331T090000Z;BYDAY=WE,TH,SA", 
    "FREQ=MONTHLY;BYMONTHDAY=13;INTERVAL=1", 
    "FREQ=MONTHLY;COUNT=7;BYDAY=1FR;INTERVAL=1", 
    "FREQ=MONTHLY;UNTIL=20150212T130000Z;BYDAY=SU,SA;BYSETPOS=-1;INTERVAL=1", 
    "FREQ=YEARLY;BYMONTH=12;BYMONTHDAY=25", 
    "FREQ=YEARLY;COUNT=3;BYMONTH=2;BYMONTHDAY=28", 
    "FREQ=YEARLY;UNTIL=20200306T130000Z;BYMONTH=8;BYDAY=3WE", 
    "FREQ=WEEKLY;COUNT=5;BYDAY=MO;INTERVAL=4", 
    "FREQ=WEEKLY;COUNT=2;BYDAY=MO;INTERVAL=1", 
}; 

// Now figure out which events will trigger in the next week - server side only - using Telerik.Web.UI.dll RecurrenceRule class. 
foreach (var expr in patterns) 
{ 
    var rrule = string.Format("DTSTART:{0:yyyyMMddTHHmmssZ}\r\nDTEND:{1:yyyyMMddTHHmmssZ}\r\nRRULE:{2}", start, end, expr); 
    try 
    { 
     RecurrenceRule recRule = null; 
     var b = RecurrenceRule.TryParse(rrule, out recRule); 
     if (recRule == null) 
     { 
      Console.WriteLine("PARSE ERROR: " + expr); 
      continue; 
     } 
    } 
    catch (Exception) 
    { 
     Console.WriteLine("PARSE ERROR: " + expr); 
    } 
}