2013-03-15 2 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 бросает исключение. –

+0

Я бы избегал таких однострочных. Используйте переменные в for-loop, что сделает код более читаемым и упростит отладку. –

+0

Я получаю ошибку на time.SelectedItem.ToString() – Arbaaz

ответ

0

какое значение вы имеете в этой области txtdate.Text Может быть, это вызывает проблемы.

Вы делаете это

Convert.ToDateTime(txtdate.Text) 

Так что, если TextBox содержит другое значение, кроме формата даты. то он выдаст ошибку.

+0

«3/15/2013» - это значение id txtdate.Text и да, это преступник. Как я могу это решить? Я использую Календарь для выбора даты в этом текстовом поле. – Arbaaz

1

Сообщение об ошибке, похоже, указывает на проблему с преобразованием значения string в Datetime.

Единственное место, что это происходит преобразование является

Convert.ToDateTime(txtdate.Text) 

линия. Можете ли вы дважды проверить значение txtdate и убедиться, что это действительная дата.

+0

«3/15/2013» - это значение id txtdate.Text и да, это преступник. Как я могу это решить? Я использую Календарь для выбора даты в этом текстовом поле – Arbaaz

+1

@Arbaaz по умолчанию формат преобразования является американом, что соответствует дд/мм/гггг. Поскольку 15 недействительно в течение месяца, это ошибки. Либо измените элемент управления календарем для вывода даты в американском формате, либо включите функцию IFormatProvider в функцию преобразования - см. Http://msdn.microsoft.com/en-us/library/9xk1h71t.aspx для получения дополнительной информации об этом. например, 'Convert.ToDateTime (txtdate.Text, новый CultureInfo (« en-gb »)). – Kami

+0

спасибо ...... +1 – Arbaaz

3

Ваш ввод '09: 30: 00 'упоминает только время, в то время как ваш тип данных для соответствующего столбца - это DateTime, из которого вход включает в себя День, Месяц и Год.

(при условии, что это выпадающий список) Итак, для того, чтобы получить время в строке необходимо выполнить следующие действия:

string mytime= DateTime.Parse(DropDownlist.SelectedItem.Text.ToString()).ToShortTimeString(); 
Смежные вопросы