2013-02-25 2 views
0

Я хотел бы, чтобы включить все виды проверки от от DataGridView но установка DataGridview.CausesValidation=false не работает, он всегда бросать исключение «входные данные не распознаются»DataGridView CausesValidation не работает

DataGridView привязан к DataTable, который имеет столбец типа данных DateTime, но я хотел бы добавить ввести некоторые пользовательские форматы дат, которые недопустимы для некоторых культур, например 11.12.2013, 10-12-2013, 11/11/2013.

Так, мне нужно сортировать по этим столбцам, следовательно, я хотел бы, чтобы держать их дату и время вместо строкового/VARCHAR

Св приложением C# WinForm.

ответ

0

По умолчанию проверка не производится. Его не DataGridView, который проверяет данные, но базовый тип, в вашем случае DateTime.

Если вы действительно хотите сохранить столбец datetime типа DateTime, вы должны преобразовать все входные данные в один выбранный вами один формат. Вы по-прежнему можете показать (внутренне они останутся в культуре по умолчанию) по-другому, перейдя к определенной культуре во время выполнения (хотя для этого требуется дополнительный код и уход, если эти данные не доступны только для чтения)

Вот фрагмент кода, среднее значение - вы сохраняете данные как DateTime в культуре A (определяется Thread или самостоятельно) и показываете его как строку, преобразованную в определенную культуру B.

Когда пользователь пытается ввести дату в любом формате, он будет правильно разобран и сохранен в культуре B (однако пользователь увидит это в той конкретной культуре A).

Проблема здесь - если клиент вводит дату в любой другой культуре, чем B после сохранения он будет визуально преобразован в B.

Это свойство списка, который населяет DataGridView

 private DateTime _dt1; 
     public string dt1 { 
      get 
      { 
       return _dt1.ToString(new CultureInfo("nl-NL")); 
      } 
      set 
      { 
       _dt1 = DateTime.Parse(value); 
      } 
     } 

Что касается задачи сортировки - сравнительно легко реализовать пользовательский сортировку, которая будет сравнивать не отображаемые strings, но их базовые свойства DateTime

+0

Различные столбцы могут иметь разные форматы даты, которые m я не могу преобразовать их всех в общий, однако каждый столбец будет иметь одинаковый формат для всех строк. При условии, что мне нужно сохранить формат отображения для введенного пользователя. – Munawar

+0

'Мне нужно сохранить формат отображения для того, что пользователь ввел', заполнив предопределенный столбец DateTime этой культурой? Если это так, вам нужно скрыть все столбцы, кроме 1 для заполнения клиента. Если это так, проверьте мой отредактированный ответ – Nogard

Смежные вопросы