2012-05-04 2 views
0

У меня проблема с значениями, возвращаемыми из хранимой процедуры. У меня есть раскрывающийся список, из которого я хочу быть изначально пустым, но затем содержать уникальные типы улиц. Таким образом, пользователь может либо оставить поле пустым, чтобы вернуть все результаты, либо начать вводить текст и получать предложения от возможных записей, которые существуют.Обработка NULL в раскрывающемся списке из Entity Framework Stored Proc

Список - это уникальные типы улиц, которые извлекаются из хранимой процедуры, которая просто выполняет запрос DISTINCT в главной таблице всех адресов. Однако я получаю NULL в результате, и мой выпадающий список, кажется, прекращает показывать результаты, когда он ударяет по этому нулю.

Я использую структуру Entity и добавил хранимую процедуру, которая возвращает набор строк, а затем использовал следующий код для заполнения поля со списком. Если я не оставлю упорядочение в хранимой процедуре, нуль будет где-то посередине, и я получу половину результатов, если я его закажу, так что сначала нуль я не получаю никаких результатов в своем поле со списком.

SideSewerDAL.SideSewerEntities entities = new SideSewerDAL.SideSewerEntities(); 
comboType.DataSource = entities.GetUniqueStreetTypes(); 

Так я собираюсь об этом не так? Должен ли я избавиться от NULL в моем storeproc и как-то исправить combobox, чтобы добавить «пустую» запись? Или сохраните NULL, но каким-то образом сделайте combobox обработать нули, а не задохнуться! Вот код хранимого прока

public ObjectResult<global::System.String> GetUniqueStreetTypes() 
    { 
     return base.ExecuteFunction<global::System.String>("GetUniqueStreetTypes"); 
    } 
+1

Если вы вернетесь «» из вашего sproc вместо NULL это работает? –

+0

Как только вы получите результат из базы данных, просто добавьте туда новый пустой элемент. Удостоверьтесь, что вы исключали NULL из sproc. –

+0

Это Майк. Я должен был повторить хранимую процедуру следующим образом: \t SELECT DISTINCT ISNULL (stType, ''), как stType \t ОТ SideSewer.dbo.SSCard \t \t ORDER BY stType –

ответ

0

Если хранимая процедура возвращает список строк, вы можете создать список строк, добавьте «» значение, а затем добавить диапазон возвращенного sproc.

List<string> values = new List<string>(); 
values.Add(""); 
values.AddRange(entities.GetUniqueStreetTypes()); 
comboType.DataSource = values; 

Что касается борьбы с нулям, лучшим решением было бы лучше включить «WHERE stType IS NOT NULL»

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