Форум программистов, компьютерный форум, киберфорум
C#: WPF, UWP и Silverlight
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.64/22: Рейтинг темы: голосов - 22, средняя оценка - 4.64
71 / 69 / 19
Регистрация: 13.12.2011
Сообщений: 274

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

08.10.2013, 11:14. Показов 4170. Ответов 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
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru