2013-02-27 278 views
0

FormatException未被用戶代碼處理。
該字符串未被識別爲有效的DateTime。DateTime無法識別

protected void Page_Load(object sender, EventArgs e) 
    { 

     // to simulate a database query 
     socialEvents = new DataTable(); 
     socialEvents.Columns.Add(new DataColumn("Date", typeof(DateTime))); 
     socialEvents.Columns.Add(new DataColumn("Description", typeof(string))); 
     socialEvents.Columns.Add(new DataColumn("Url", typeof(string))); 

     DataRow row; 
     row = socialEvents.NewRow(); 
     row["Date"] = DateTime.Now.AddDays(-5); 
     row["Description"] = "Work"; 
     row["Url"] = "http://www.url.cz"; 
     socialEvents.Rows.Add(row); 
    } 

錯誤在以下梅索德:

protected void Calendar1_DayRender(object sender, DayRenderEventArgs e) 
     { 
      **DataRow[] rows = socialEvents.Select(
      String.Format(
       "Date >= #{0}# AND Date < #{1}#", 
       e.Day.Date.ToShortDateString(), 
       e.Day.Date.AddDays(1).ToShortDateString()** 
      ) 
     ); 
+0

工作正常,當我在我的系統上運行它,但我用datetime.now替換e.Day.Date – 1Mayur 2013-02-27 08:26:19

+0

我也替換它,但它不工作 – 2013-02-27 08:29:58

+0

你有什麼想法出了什麼問題? – 2013-02-27 08:34:48

回答

1

我建議使用LINQ來做到這一點:

protected void Calendar1_DayRender(object sender, DayRenderEventArgs e) 
{ 
    var rows = socialEvents.Rows.Cast<DataRow> 
       .Where(r => (DateTime)r["Date"] >= e.Day.Date 
          && (DateTime)r["Date"] <= e.Day.Date.AddDays(1)) 
       .ToArray(); 
); 

沒有更多的麻煩與格式字符串查詢:您可以使用基於真實值進行過濾。

當然,如果日期可以爲空,你將不得不處理這個。請告訴我,如果需要,我會編輯此代碼。

+0

linq如何處理以下內容? DataView view = socialEvents.DefaultView; (1).ToShortDateString() view.RowFilter = String.Format ) ); – 2013-02-27 09:18:03

+0

var filteredRows = socialEvents.Rows.Cast ().Where(r =>(DateTime)r [「Date」]> = Calendar1.SelectedDate &&(DateTime)r [「Date」] Larry 2013-02-27 22:28:06