Некоторые опции:
Учитывая коллекцию объектов myPrinter, например List или связанный DataTable, вы можете просто вставить значение по умолчанию в качестве первого элемента коллекции. Затем при DataBind все текущие элементы удаляются, а новые перезагружаются с пустым элементом сверху.
Вы также можете настроить привязку данных, переопределив OnDataBound. После того, как все элементы DataTable будут добавлены, войдите и вставьте значение по умолчанию вручную.
Вы также можете отказаться от поведения DataBind по умолчанию и заполнить ComboBox самостоятельно. Я делал это много раз в случае со списком «отложенной загрузки» (где я сначала устанавливаю один элемент, который является текущим значением для записи, затем, когда они хотят опустить список, я иду, чтобы получить значения и заполнить их полностью). список). Это немного сложнее; вам нужно в основном свернуть свое собственное поведение привязки данных, используя Items.Add (). Но это не так сложно и дает вам больше гибкости, включая возможность добавлять элементы, которых нет в источнике данных.
РЕДАКТИРОВАТЬ: В этом случае (пустая строка пишется, когда вы хотите NULL), я бросил бы следующее в библиотеку методов расширения, а затем прикрепить вызов к нему в конце comboBox. SelectedValue (), когда вы извлекаете его для вставки в объект вашего домена:
public static string NullIfEmpty(this string input)
{
return String.IsNullOrEmpty(input) ? null : input;
}
По сути, веб-элементы управления преобразуют ноль в пустую строку при настройке текста, значений или других отображаемых свойств данных, чтобы упростить их внутреннюю работу. Но они не конвертируются обратно в ноль, поэтому, если вы хотите пустую строку вместо пустой, вы должны выполнить преобразование самостоятельно. Как показывает вышеприведенный метод, это довольно просто.