Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Фильтр по DataTable, можно ли? 
V
    Опции темы
Banderos
Дата 6.5.2011, 15:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 52
Регистрация: 21.3.2011

Репутация: нет
Всего: нет



Добрый день всем.

Вопрос вот в чем:

есть у меня DataSet, в него я загрузил из БД необходимые таблицы-справочники, создав для каждой соответственно свой DataTable.
Так вот теперь нужно, когда в 1 КомбоБоксе выбирается значение во 2-й КомбоБокс подгружаются данные из DataTable, соответствующие выбранному значению.
Можно ли как то на DataTable наложить что то типо условия выборки??? Чтобы когда я этот DataTable сделаю источником данных для КомбоБокс_2 там были не все значения, а только те, параметр выбора которых, был выбран в КомбоБокс_1.

Заранее спасибо.
PM MAIL   Вверх
-Mikle-
Дата 6.5.2011, 15:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Невидимка Vingrad'а
***


Профиль
Группа: Экс. модератор
Сообщений: 1672
Регистрация: 22.6.2003
Где: Казахстан, Астана

Репутация: 4
Всего: 59



Можно. Для этого создайте в вашем DataSet соответствующий Relation, а во втором комбо боксе пропишите в качестве источникаэтот релейшн, а не таблицу. Если я ничего не напутал (уже давненько не связывался с DataSet'ами), то эта связка именно так и работает.


--------------------
Если тебе плюют в спину, значит ты впереди...
PM   Вверх
Banderos
Дата 10.5.2011, 14:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 52
Регистрация: 21.3.2011

Репутация: нет
Всего: нет



-Mikle-, что то я попробовал вот так:

табл. А 
id
value

табл. Б
id
value
id_A

делаю:
Код

DataRelation DR = new DataRelation("Имя_связи", DataSet.Tables["A"].Columns["id"], DataSet.Tables["B"].Columns["id_A"]);
DataSet.Relations.Add(DR);


не работает, в чем прикол? 
(или я что-то неверно делаю)

Заранее спасибо!
PM MAIL   Вверх
jonie
Дата 10.5.2011, 15:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

Репутация: 6
Всего: 118



тут я даже видео выкладывал http://forum.vingrad.ru/forum/topic-302591.html


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
Banderos
Дата 10.5.2011, 16:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 52
Регистрация: 21.3.2011

Репутация: нет
Всего: нет



jonie, спасибо, познавательное видео.
Только я привык все делать вручную, без участия мастера, потому что потом появляются невероятные глюки в самых неожиданных местах.
PM MAIL   Вверх
-Mikle-
Дата 10.5.2011, 20:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Невидимка Vingrad'а
***


Профиль
Группа: Экс. модератор
Сообщений: 1672
Регистрация: 22.6.2003
Где: Казахстан, Астана

Репутация: 4
Всего: 59



Вот пример:
Код

        public Form1()
        {
            InitializeComponent();

            DataSet dataSet = new DataSet();

            DataTable tableA = dataSet.Tables.Add("A");
            DataColumn colA_Id = tableA.Columns.Add("ID", typeof(int));
            colA_Id.AllowDBNull = false;
            tableA.Columns.Add("Name", typeof(string));

            DataTable tableB = dataSet.Tables.Add("B");
            DataColumn colB_Id = tableB.Columns.Add("ID", typeof(int));
            colB_Id.AutoIncrement = true;
            colB_Id.AllowDBNull = false;
            DataColumn colB_AId = tableB.Columns.Add("AID", typeof(int));
            colB_AId.AllowDBNull = false;
            tableB.Columns.Add("Name", typeof(string));

            tableA.Rows.Add(1, "str1");
            tableA.Rows.Add(2, "str2");
            tableA.Rows.Add(3, "str3");

            tableB.Rows.Add(null, 1, "str1-1");
            tableB.Rows.Add(null, 1, "str1-2");
            tableB.Rows.Add(null, 1, "str1-3");
            tableB.Rows.Add(null, 2, "str2-1");
            tableB.Rows.Add(null, 2, "str2-2");
            tableB.Rows.Add(null, 3, "str3-1");

            dataSet.Relations.Add("A2B", colA_Id, colB_AId);

            // вариант 1
            BindingSource sourceTableA = new BindingSource();
            sourceTableA.DataSource = dataSet;
            sourceTableA.DataMember = "A";

            BindingSource sourceChild = new BindingSource();
            sourceChild.DataSource = sourceTableA;
            sourceChild.DataMember = "A2B";

            dataGridView1.DataSource = sourceTableA;
            dataGridView2.DataSource = sourceChild;
            // вариант 1 //

            // вариант 2 (без BindingSource)
            // dataGridView1.DataSource = tableA.DefaultView;
            // dataGridView2.DataSource = tableA.DefaultView;
            // dataGridView2.DataMember = "A2B";
            // вариант 2 //
        }



--------------------
Если тебе плюют в спину, значит ты впереди...
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Partizan
PashaPash

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, Partizan, PashaPash.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | .NET для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0492 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.