Лучший способ связать с данными управление Winforms к nullable типу?

19
задан Jon Seigel 7 April 2010 в 02:39
поделиться

3 ответа

В разделе комментариев к статье, на которую дана ссылка выше, один из авторов предлагает простое решение.

Вместо привязки с:

textBox1.DataBindings.Add("Text", myClass, "MyTextProperty");

Bind with:

textBox1.DataBindings.Add("Text", myClass, "MyTextProperty", true, DataSourceUpdateMode.OnPropertyChanged, string.Empty); 
44
ответ дан 30 November 2019 в 02:36
поделиться

Я только что споткнулся через эту проблему сам, и это - реальная головная боль.

забавная вещь о привязке nullable типов состоит в том, что DataGridView обрабатывает их без любых проблем - это - просто текстовые поля та причина проблемы.

Это довольно противно - это даже, кажется, предотвращает закрытие формы, когда у Вас есть пустое значение в текстовом поле, и кажется, что Вы не можете снабдить вкладками далеко от него также.

Так, это не большой ответ, но мое предложение состоит в том, чтобы попытаться придерживаться datagridviews для nullable типов на форме.

Другое предложение состоит в том, чтобы использовать 'поставщика расширителя', как предложено здесь, хотя я еще не протестировал его:

РЕДАКТИРОВАНИЕ: теперь загрузили пример кода на этой странице, и это работает БЛЕСТЯЩЕ.

http://www.thejoyofcode.com/Databinding_and_Nullable_types_in_WinForms.NET.aspx

6
ответ дан 30 November 2019 в 02:36
поделиться

Ох, противный... Я могу только думать о нескольких способах достигнуть, это и ни один из них - то, что я назвал бы идеалом.

  • первое должно записать обертку для Вашего объекта данных, который содержит nullables, который преобразовывает весь nullables в пустые строки. Свяжите со своим интерфейсным объектом.

  • второе должно удостовериться, что все значения в Вашей базе данных не являются нулевыми... снова, не идеальный

  • третье, которое Вы уже решили, не жизнеспособно в этой ситуации, то, что Вы создаете пользовательский объект, который расширяет текстовое поле для добавления свойства, которое может связать с nullable.

  • четвертый самый идеальный способ, которым я мог думать, кажется, не возможен. Создайте дополнительное свойство, которое позволило бы Вам расширять все объекты текстового поля и связывать с тем - но не кажется, что дополнительные свойства возможны в это время. Действительно кажется, что это - ситуация, где этот тип функции был бы особенно полезен в платформе.NET.

1
ответ дан 30 November 2019 в 02:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: