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

내 시스템에서 실행할 때 잘 작동하지만 eTime.Date를 datetime.now로 바 꾸었습니다. – 1Mayur

+0

도 교체하지만 작동하지 않습니다. –

+0

무엇이 잘못 되었습니까? –

답변

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(); 
); 

: 당신이 사용할 수 있습니다 실제 값에 기초한 필터.

물론 Date가 null 일 수 있으면 처리해야합니다. 필요한 경우이 코드를 편집하여 알려 드리겠습니다.

+0

linq을 사용하여 다음 작업을 수행하려면 어떻게해야합니까? DataView view = socialEvents.DefaultView; view.RowFilter = String.Format ( "날짜> = # {0} # 및 날짜 <# {1} #", Calendar1.SelectedDate.ToShortDateString(), Calendar1.SelectedDate.AddDays (1) .ToShortDateString) ); –

+0

var filteredRows = socialEvents.Rows.Cast () .Where (r => (DateTime) r [ "Date"]> = Calendar1.SelectedDate && (DateTime) r [ "Date"] Larry

관련 문제