71 / 69 / 19
Регистрация: 13.12.2011
Сообщений: 274

dataGrid binding связанные таблицы RowDetailsTemplate

08.10.2013, 11:14. Показов 4218. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Приветствую!
Помогите, пожалуйста, выйти из тупика:
Есть 2 таблицы, логически связанный по GUID:
1.
guid field11 field12 ... field1N
00-11-22-33 масло соль ... петрушка
0a-1b-2c-3d оливки маслины ... кофе
1b-a1-b2-c3 вода сок ... молоко

2.
guid field21 field22 field23 ... field2N
00-11-22-33 данные11 данные12 данные13 ... данныеN
00-11-22-33 данные21 данные22 данные23 ... данныеN
0a-1b-2c-3d данные31 данные32 данные33 ... данныеN

Есть 2 класса (для первой таблицы - MainClass, для второй - SecondClass).

Создаются листы:
C#
1
2
List<MainClass> mainlist = new List<MainClass>();
List<SecondClass> secondlist = new List<SecondClass>();
в которые загружаются данные из первой и второй таблиц.

Все это биндится в dataGrid с вложенной таблицей:
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<DataGrid AutoGenerateColumns="False" ItemsSource="{Binding}" >
 <DataGrid.RowDetailsTemplate>
   <DataTemplate>
     <DataGrid AutoGenerateColumns="False" ItemsSource="{Binding Source={StaticResource ckc_details}}">
       <DataGrid.Columns>
          <DataGridTextColumn Binding="{Binding Path=field11}" Header="header1" MaxWidth="2000" Width="35" />
          <DataGridTextColumn Binding="{Binding Path=field12 }" Header="header2" MaxWidth="2000" Width="80" />
            ...
        </DataGrid.Columns>
     </DataGrid>
    </DataTemplate>
   </DataGrid.RowDetailsTemplate>
<DataGrid.Columns>
  <DataGridTextColumn Binding="{Binding Path=field21}" Header="header1" MaxWidth="2000" Width="35" />
  <DataGridTextColumn Binding="{Binding Path=field22 }" Header="header2" MaxWidth="2000" Width="80" />
    ...
</DataGrid.Columns>

Но когда я "раскрываю" каждую строку, то вложенный dataGrid показывает все данные SecondClass.
Как сделать, чтобы вложенный dataGrid показывал только те строки SecondClass guid которых соответствует "раскрывшейся" строке MainClass?

Как есть:


Как должно быть:


Вопросы, уточнения? Я готов на все ответить.

З.Ы. Из-за того, что код громоздкий - я привел на примерах. Скриншоты реальные.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
08.10.2013, 11:14
Ответы с готовыми решениями:

Привязка данных к DataGrid внутри DataGrid.RowDetailsTemplate
Это может показаться запутанным,но постарайтесь понять. У меня есть List в котором хранятся объекты в которых тоже есть...

Как получить имя объекта находящегося в DataGrid.RowDetailsTemplate
Как получить имя объекта находящегося в DataGrid.RowDetailsTemplate? это описано в xaml &lt;data:dataGrid x:Name=&quot;dg1&quot;&gt;...

Как при использовании свойства DataGrid.RowDetailsTemplate вызвать команду? MVVM
Есть таблица с определенными данными допустим пусть в каждой строке будут два значения a и b надо чтобы в RowDetailsTemplate выводился...

2
71 / 69 / 19
Регистрация: 13.12.2011
Сообщений: 274
08.10.2013, 11:43  [ТС]
Решил задачу путем передачи параметра GUID в функцию загрузки данных в класс и фильтрации на уровне SQL-запроса...
А как можно решить средствами WPF?
0
 Аватар для Konctantin
970 / 773 / 171
Регистрация: 12.04.2009
Сообщений: 1,700
08.10.2013, 16:05
А если хранить дочерние данные в основном классе?
как-то так:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public class ChildData
{
    public int Num { get; set; }
    public string Text { get; set; }
}
 
public class MainData
{
    public int Num { get; set; }
    public string Text { get; set; }
 
    public ObservableCollection<ChildData> Cildren { get; set; }
 
    public MainData()
    {
        Cildren = new ObservableCollection<ChildData>();
    }
}
и сделать соответственно привязки:
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<Grid Name="main">
    <DataGrid AutoGenerateColumns="False" ItemsSource="{Binding}" >
        <DataGrid.RowDetailsTemplate>
            <DataTemplate>
                <DataGrid AutoGenerateColumns="False" ItemsSource="{Binding Cildren}">
                    <DataGrid.Columns>
                        <DataGridTextColumn Binding="{Binding Num}" Header="header1" MaxWidth="2000" Width="35" />
                        <DataGridTextColumn Binding="{Binding Text }" Header="header2" MaxWidth="2000" Width="80" />
                    </DataGrid.Columns>
                </DataGrid>
            </DataTemplate>
        </DataGrid.RowDetailsTemplate>
        <DataGrid.Columns>
            <DataGridTextColumn Binding="{Binding Num}" Header="header1" MaxWidth="2000" Width="35" />
            <DataGridTextColumn Binding="{Binding Text}" Header="header2" MaxWidth="2000" Width="80" />
        </DataGrid.Columns>
    </DataGrid>
</Grid>
3
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
08.10.2013, 16:05
Помогаю со студенческими работами здесь

Binding данных в Datagrid внутри Datagrid
Приветствую! Есть у меня такая модель данных: public class Group { public int Id { set; get; } ...

DataGrid Binding
Вот такая штука &lt;DataGrid IsReadOnly=&quot;True&quot; ItemsSource=&quot;{Binding Cilents}&quot; Style=&quot;{StaticResource...

Binding DataGrid
Добрый день, форумчане! Может задам глупый вопрос, но тем не менее. Как забандить событие в xaml: нажатие по какой-либо строке в...

Binding в DataGrid
Подскажите пожалуйста как прибиндить bool переменную ВыборВсехЗаявок &lt;DataGrid ItemsSource=&quot;{Binding...

Datagrid binding
Доброго дня. Помогите пойти по правильному пути. Есть класс. public class VievModel { public String pnum; ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

Новые блоги и статьи
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
Запрет удаления строк ТЧ документа при определенном условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru