powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / DataView
6 сообщений из 6, страница 1 из 1
DataView
    #32565430
chess
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день!
Помогите разобраться со следующем вопросом.
Есть DataSet с двумя с двумя связанными таблицами ("Сотрудники" "Имя сотрудника").
Я создал DataView dv=new DataView("Сотрудники"), произвел неободимую фильтрацию и теперь мне надо обратиться к полям из таблицы "Имя сотрудника" через dv.
Как это сделать?
...
Рейтинг: 0 / 0
DataView
    #32565486
Sa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chess
Есть DataSet с двумя с двумя связанными таблицами ("Сотрудники" "Имя сотрудника").
Я создал DataView dv=new DataView("Сотрудники"), произвел неободимую фильтрацию и теперь мне надо обратиться к полям из таблицы "Имя сотрудника" через dv.


Обратиться к полям DataView:
Код: plaintext
1.
2.
Console.WrilteLine(dv[index]["fieldName1"]);  где index - индекс записи
Console.WrilteLine(dv[index]["fieldName2"]);  
Но это я подозреваю не то что вы хотите.

Что конкретно хотите вы получить?
Что обозначает глагол "обратиться" в данном контексте?
...
Рейтинг: 0 / 0
DataView
    #32565585
Ustazz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если нужно пройти по релейшену к другой таблице и вывести ее поле в DataView думаю что никак. Можно конечно создать новую таблицу со всеми необходимыми данными, собранными на основе информации о связях, и уже на ней делать DataView.
...
Рейтинг: 0 / 0
DataView
    #32565625
chess
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Обратиться к полям DataView:

Console.WrilteLine(dv[index]["fieldName1"]); где index - индекс записи
Console.WrilteLine(dv[index]["fieldName2"]);

Но это я подозреваю не то что вы хотите.

Это не то что мне надо.

Попробую описать более подробно что мне на самом деле нужно.

Имеется завод. На заводе существует куча всяких установок. На каждой установке имеется вредные вещества (может присуствовать как одно вещество, так и пять, а может и савсем не быть).

Для этого мной было создано три таблицы в DataSet (Установка, Вредные вещества, Справочник вредных веществ)

Столбцы Установка:
IdPlant
NamePlant

Столбцы Вредные вещества:
IdPlant
IdHarmfulSubstances

Столбцы Справочник вредных веществ:
IdHarmfulSubstances
NameHarmfulSubstances
Note

Для фильрации установок был создан DataView dv("Установка")

Данные отображаются на форме.
Установки фильтруютсяс в DataView dv("Установка")
Когда пользователь выбирает установку в таблице "Установка" Sourse=dv, то в ListBox'e, который так же размещается на форме, должны оттобразиться все вредные вещества которые присуствуют на данной установке. Для этого мне необходимо знать следующее:
Эаполнение ListBox решил сделать следующем образом.
Перебирать все записи в таб. "Вредные вещества" который принадлежат данной устаноке. По каждой отобранной записи брать IdHarmfulSubstances и
искать его значение в таб. "Справочник вредных веществ" после чего, добавлять в ListBox нашедщие записи NameHarmfulSubstances.
Вот я и хотел бы знать,Возможно ля из dv "достучаться" до значений строк в табл."Справочник вредных веществ".??
...
Рейтинг: 0 / 0
DataView
    #32566463
Sa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Данные отображаются на форме.
Установки фильтруютсяс в DataView dv("Установка")
Когда пользователь выбирает установку в таблице "Установка" Sourse=dv, то в ListBox'e, который так же размещается на форме, должны оттобразиться все вредные вещества которые присуствуют на данной установке. Для этого мне необходимо знать следующее:
Эаполнение ListBox решил сделать следующем образом.
Перебирать все записи в таб. "Вредные вещества" который принадлежат данной устаноке. По каждой отобранной записи брать IdHarmfulSubstances и
искать его значение в таб. "Справочник вредных веществ" после чего, добавлять в ListBox нашедщие записи NameHarmfulSubstances.


Конечно можно вручную определить дочерние записи и "пробежаться" по ним и заполнить listbox (несколько вложенных циклов).

Но я бы стал бы копать в сторону DataRowView.CreateChildView . Тем более что там делать то на мой взгляд нечего.

Итак:
Определяем DataRelation между нашими DataTable. Все таблицы находятся в одном DataSet (m_dataSet). + Плюс еще "вытащим" name вредного вещества из справочника вредных веществ в таблицу "вредные вещества"

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
DataSet ds = this.m_dataSet;
DataTable parent;
DataTable child;

// Связь между установка и вредные вещества
parent = ds.Tables["Plant"];  // Установка
child = ds.Tables["Harmful"]; // Вредные вещества
ds.Relations.Add("Plant2Harmful", parent.Columns["IdPlant"], child.Columns["IdPlant"]);

parent = null;
child = null;

// Связь между справочник вредных веществ и вредные вещества
parent = ds.Tables["HarmfulDic"]; // справочник вредные вещества
child = ds.Tables["Harmful"]; // вредные вещества

ds.Relations.Add("HarmfulDic2Harmful", parent.Columns["IdHarmfulSubstances"], child.Columns["IdHarmfulSubstances"]);

// Добавим dataxppression column в таблицу вредные вещества
child.Columns.Add("HarmfulName", typeof(string), "Parent(HarmfulDic2Harmful).NameHarmfulSubstances");

Остается заполнить listbox:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
// Процедура заполнения listbox, нам сюда необходимо просто передать current DataRowView таблицы Plant. Вычислить можно через CurrencyManager dataGrid в котором отображаются данные из таблицы Plant.
private void FillListBox(DataRowView row)
{
  if (row == null)
  {
     return;
  }
  this.listBox1.DataSource = row.CreateChildView("Plant2Harmful");
  this.listBox1.DisplayMember  = "HarmfulName";
  this.listBox1.ValueMember  = "IdHarmfulSubstances";
}


В принципе при первом приближении этого должно хватить. Все сделано через DataRelation и DataView.

Код: plaintext
 uid  =  S a
...
Рейтинг: 0 / 0
DataView
    #32566990
chess
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Большое спасибо!
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / DataView
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]