Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.05.2012, 23:17   #1
Blondy
Участник клуба
 
Аватар для Blondy
 
Регистрация: 07.07.2009
Сообщений: 1,385
По умолчанию C#: возвращение результатов запроса в элемент коллекции

Добрый вечер!

Не могли бы Вы меня проконсультировать: у меня создан метод (в отдельном файле, из которого я потом буду создавать библиотеку), возвращающий в коллекцию List результат выполнения запроса.

В другом файле, где созданы формы, мне надо эту коллекцию List вытянуть на компонент формы. И что-то я сообразить не могу - как это сделать правильно. И все попадаются примеры, где запрос прописывается сразу как cmd1.CommandText = "Select......" и сразу возвращается в компонент формы. А у меня другая ситуация

Вот метод для получения данных запросом в отдельном файле KidsDB в классе Data.cs
Код:
public static List<KidsName> GetAllNames()
        {
            List<KidsName> list = new List<KidsName>();
            OleDbConnection conn = new OleDbConnection(ConnectionDB.connection);
            conn.Open();
            OleDbCommand cmd = new OleDbCommand("SELECT * FROM tKids",conn);
            OleDbDataReader reader = cmd.ExecuteReader();
            while (reader.Read())
            {
                KidsName kidsname = new KidsName(reader[1].ToString());//в первой колонке таблицы у нас имена детей
                list.Add(kidsname);
            }
            return list;
        }
Дальше в другом файле с формами мне надо этот list вывести в компонент формы

Код:
/////подключаем файл, где есть класс  с запросом Data.cs
using KidsDB;


/// <summary>
    /// Interaction logic for GroupMembers.xaml
    /// </summary>
    public partial class GroupMembers : Window //форма
    {
        public GroupMembers()
        {
           InitializeComponent();

           ConnectionDB.connection = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Kids2003.mdb;Persist Security Info=True";  //соединяемся с базой

/////а как дальше писать, я не знаю  Компонент формы - ComboBox_kidsName
ComboBox_kidsName.ItemsSource = Data.GetAllNames().  
ComboBox_kidsName.Text =
 ........
Я прошу прощения за возможно слишком путанное объяснение, но с коллекциями и библиотеками я никогда не сталкивалась, обходилась всегда обычными запросами, а тут надо.....

И скажите пожалуйста, тут еще возник спорный вопрос по поводу компонентов формы: мне казалось, что имена детей лучше выводить в ComboBox и потом, выбрав имя, уже можно получить данные о ребенке. Но мне почему-то говорят - лучше, чтобы это был ListBox.....
"Все мы жаждем чудес. Чисто человеческое свойство." Carl Sagan

Последний раз редактировалось Blondy; 22.05.2012 в 23:20.
Blondy вне форума Ответить с цитированием
Старый 23.05.2012, 00:04   #2
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

ItemsSource не пользовался, обычно делал типа такого:

Код:
            foreach (KidsName kn in Data.GetAllNames())
                ComboBox_kidsName.Items.Add(kn.ToString());
> имена детей лучше выводить в ComboBox и потом, выбрав имя, уже можно получить данные о ребенке

у вас каждый ребёнок с уникальным именем? Или имя в смысле ФИО?

> лучше, чтобы это был ListBox.....

если детей сотни тысяч, то лучше вобще ListView. А если десяток, то пофиг )
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
veniside вне форума Ответить с цитированием
Старый 23.05.2012, 00:26   #3
Blondy
Участник клуба
 
Аватар для Blondy
 
Регистрация: 07.07.2009
Сообщений: 1,385
По умолчанию

Имя - это я не совсем так выразилась. Конечно это будут уникальные записи))
Я тоже про foreach думала - первое, что пришло в голову. Ведь это самый простой способ работы с коллекциями. Но у меня ItemsSource, так как у меня идет работа с WPF

А почему именно ListBox лучше?
Детей не сотни тысяч, иначе воспитатели бы все разбежались ...
"Все мы жаждем чудес. Чисто человеческое свойство." Carl Sagan

Последний раз редактировалось Blondy; 23.05.2012 в 00:30.
Blondy вне форума Ответить с цитированием
Старый 23.05.2012, 00:56   #4
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

> так как у меня идет работа с WPF

хм.. ну вот щас попробовал:

Код:
            List<string> l = new List<string>();
            l.Add("kid1");
            l.Add("kid2");
            l.Add("kid3");
            //
            comboBox1.ItemsSource = l;
вроде работает. Точно так же, как и foreach. Или проблема в том, что KidsName не просто строка, а ваш хитрый объект? Тут вот есть почитать, как сделать класс, подходящий для биндинга:

http://msdn.microsoft.com/en-us/libr...3.aspx#classes

> А почему именно ListBox лучше?

ну типа меньше движений, чтобы выбрать нужное. Вобще, я говорил про ListView, это ещё лучше ) Можно табличкой показать, с сортировкой по полям. Или иконками или списком.
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
veniside вне форума Ответить с цитированием
Старый 23.05.2012, 01:42   #5
=master=
Форумчанин
 
Регистрация: 26.03.2012
Сообщений: 665
По умолчанию

Цитата:
KidsName
Это что?
Цитата:
ComboBox_kidsName.Text =
Это длячего?

Где ксамл комбобокса?
=master= вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обновление результатов запроса varyat Microsoft Office Access 24 02.09.2011 19:06
Нулевой элемент вынести вверх запроса dan-leech SQL, базы данных 6 10.08.2011 10:57
Как сделать Элемент "список" на основе запроса вертикальным? d_adilet Microsoft Office Access 3 13.05.2011 07:25
Вывод результатов sql-запроса в textbox r00tready Базы данных (ADO.NET, LinqToSql, ORM Entity Framework, NHibernate) 3 04.12.2010 19:58
Элемент формы <input type="image"... не находится в коллекции элементов формы? euroflock Работа с сетью в Delphi 1 01.09.2009 16:17