ASP.NET С# Фильтр DropDownList на основе определенной категории элементов из службы Soap

Хорошо... Я застрял здесь. Что-то вроде новичка в C# и использовании веб-сервисов. Я успешно заполнил DropDownList из службы SOAP, но мне действительно нужно отфильтровать этот список на основе определенной категории.

Вот что у меня есть до сих пор:

problemReporting.soapClient s = new problemReporting.soapClient();
problemReporting.NullRequest nr = new NullRequest();
problemReporting.ProblemDescription[] getDescList = s.getProblemDescriptionList(nr);

ddlProblem.DataSource = getDescList;
ddlProblem.DataTextField = "description";
ddlProblem.DataValueField = "code";
ddlProblem.DataBind();

ProblemReporting.ProblemDescription содержит «категорию», «описание» и «код». Как установить DataSource равным getDescList, где категория = Категория1? (Есть 4 категории элементов. Категория будет установлена ​​пользователем, выбирающим категорию на предыдущей странице, и это значение извлекается из URL-адреса с помощью HttpUtility.UrlDecode.)

Спасибо заранее за помощь.


person Psykopup    schedule 28.11.2011    source источник
comment
Если я правильно понимаю задачу. Источник данных будет просто назначен вашей коллекции/массиву, независимо от того, что он содержит. Вам нужно будет снова вызвать s.getProblemDescriptionList() с вашей новой категорией из события Drop downs OnChange. Затем dropdown.DataBind(), чтобы он вступил в силу.   -  person user1231231412    schedule 28.11.2011
comment
Спасибо за ответ. Я добавил немного больше информации о том, как устанавливается категория. Я надеюсь, что это поможет прояснить ситуацию.   -  person Psykopup    schedule 28.11.2011
comment
Вы на правильном пути. Вы можете изменить дизайн и использовать 2 метода веб-сервиса. 1, который получит все ваши категории, а другой получит все предметы для этой категории. Итак, при запуске/инициализации/загрузке/и т. д. вы можете вызвать wsclient.GetCategories() и после этого вызвать wsclient.GetItemsForCategory(category1)   -  person user1231231412    schedule 28.11.2011


Ответы (2)


Есть ли причина, по которой вы не делаете этого на своем SQL (если вы вообще используете SQL). Если вы не можете, я бы посоветовал вам взглянуть на LinQ2Entities. Удачи!

person Hanlet Escaño    schedule 28.11.2011
comment
Мой единственный источник данных — мыльный сервис. - person Psykopup; 28.11.2011
comment
Я проверил пример запроса LINQ to Entities. Это сработало. Спасибо Ханлет. - person Psykopup; 28.11.2011

Попробуйте это, вы можете отфильтровать после вызова с помощью Linq, но я рекомендую вам изменить веб-службу, чтобы взять параметр для фильтрации результатов:

problemReporting.soapClient s = new problemReporting.soapClient();
problemReporting.NullRequest nr = new NullRequest();
problemReporting.ProblemDescription[] getDescList = s.getProblemDescriptionList(nr);

var cats = from desc in getDescList 
  where desc.category == "Category1"
  select desc;

ddlProblem.DataSource = cats;
ddlProblem.DataTextField = "description";
ddlProblem.DataValueField = "code";
ddlProblem.DataBind();
person rick schott    schedule 28.11.2011
comment
Пришлось немного изменить это: var catList = from desc в getDescList, где desc.category == Category1 select desc; Однако это сработало. Спасибо, Рик. - person Psykopup; 28.11.2011