2013-02-27 187 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