2013-03-15 79 views
0
DataTable dt1 = new DataTable(); 
      dt1.Columns.Add("studid",typeof(int)); 
      dt1.Columns.Add("rollno", typeof(int)); 
      dt1.Columns.Add("date", typeof(DateTime)); 
      dt1.Columns.Add("starttime", typeof(string)); 
      dt1.Columns.Add("class", typeof(string)); 
      dt1.Columns.Add("section", typeof(string)); 
      dt1.Columns.Add("subject", typeof(string)); 

      for (int i = 0; i < dt.Rows.Count; i++) 
      {    
       dt1.Rows.Add(Convert.ToInt32(dt.Rows[i]["id"]), Convert.ToInt32(dt.Rows[i]["rollno"]), Convert.ToDateTime(txtdate.Text),time.SelectedItem.ToString(), drpclass.SelectedItem.ToString(), drpsection.ToString(), drpsubject.SelectedItem.ToString()); 
      } 

我得到錯誤"String was not recognized as a valid DateTime"time.SelectedItem.ToString()即使DataTable的列的數據類型爲字符串。 我申請斷點和09:30:00是我收到的time.SelectedItem.ToString()字符串未被識別爲有效的DateTime錯誤

+6

它更可能是Convert.ToDateTime拋出異常。 – 2013-03-15 10:47:33

+0

我會避免這樣的一行。在for循環中使用變量,這將使代碼更具可讀性並簡化調試。 – 2013-03-15 10:50:56

+0

我在 time.SelectedItem.ToString得到錯誤() – Arbaaz 2013-03-15 10:50:59

回答

0

你有什麼樣的價值在這個領域txtdate.Text可能是它導致問題的值。

你如果文本框包含超過日期格式不同的值,所以這樣做

Convert.ToDateTime(txtdate.Text) 

。那麼它會拋出一個錯誤。

+0

「2013年3月15日」的值是值id txtdate.Text是的,這是罪魁禍首。我如何解決這個問題?我使用的日曆在文本框 – Arbaaz 2013-03-15 11:05:25

1

錯誤消息似乎表明了string值轉換爲Datetime的問題。

,該轉換髮生的唯一位置是

Convert.ToDateTime(txtdate.Text) 

線。您可以仔細檢查txtdate的值,並確保它是有效的日期。

+0

「2013年3月15日」選擇日期的值id txtdate.Text是的,這是罪魁禍首。我如何解決這個問題?我使用日曆在該文本框中選擇日期 – Arbaaz 2013-03-15 11:05:10

+1

@Arbaaz默認情況下,轉換格式爲美國,相當於dd/mm/yyyy。由於15月份無效,因此出現錯誤。要麼改變日曆控件輸出日期在美國格式或包括在轉換函數的'IFormatProvider' - 見http://msdn.microsoft.com/en-us/library/9xk1h71t.aspx更多這方面的信息。例如'Convert.ToDateTime(txtdate.Text,new CultureInfo(「en-gb」))''。 – Kami 2013-03-15 11:26:20

+0

謝謝...... +1 – Arbaaz 2013-03-15 11:47:59

3

您輸入09:30:00' 僅提到的時間,而你在相應的列數據類型爲datetime,其輸入包括日,月和年。

(假設它是下拉列表下降) 因此,爲了獲得時間字符串執行以下操作:

string mytime= DateTime.Parse(DropDownlist.SelectedItem.Text.ToString()).ToShortTimeString(); 
相關問題