Форум программистов, компьютерный форум, киберфорум
C#: WPF, UWP и Silverlight
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.68/75: Рейтинг темы: голосов - 75, средняя оценка - 4.68
0 / 0 / 0
Регистрация: 25.03.2019
Сообщений: 4
1

Двумерный массив в DataGrid, WPF

25.03.2019, 17:32. Показов 13737. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Пишу курсач. Не вдаваясь в подробности, мне нужно только вывести массив в грид. Просмотрела кучу вариантов, там либо через классы, либо через коллекцию, либо кастомный датагрид2д. Я бы хотела сама понять, как вообще это делать стандартными средствами впф, но информации в интернете слишком мало...

Это то, что я пыталась сделать сама, исходя из прочитанного

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
private void button1_Click(object sender, RoutedEventArgs e)
        {
            Dan.FormA();
            List<double[]> data = new List<double[]>();
            for (int i = 0; i < Dan.m; i++)
            {
                double[] p = new double[Dan.m];
                for (int j = 0; j < Dan.m; j++)
                {
                    p[j] = Dan.A[i, j];
                }
                data.Add(p);
            }
            dataA.ItemsSource = data;
        }
И в итоге получаю это:

Двумерный массив в DataGrid, WPF


Для заполнения вводила, размер 6x6, рандом заполнение - границы 5 и 10
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.03.2019, 17:32
Ответы с готовыми решениями:

Как вывести двумерный массив в DataGrid
Допустим у меня есть форма. open System open System.Windows open System.Windows.Controls...

[WPF] Добавить двумерный массив в DataGrid
Здравствуйте! Не могу добавить двумерный массив в DataGrid, как быть? В C# все идеально работает, а...

DataGrid в WPF C#
У меня есть вот такая DataGrid,и есть переменные которым заполнять ее,как мне реализовать...

DataGrid в WPF
У меня восьмая студия, framework 4, но в студии нет datagrid, как его установить? ps не...

6
879 / 558 / 291
Регистрация: 21.11.2012
Сообщений: 1,553
25.03.2019, 19:32 2
Лучший ответ Сообщение было отмечено Chiyuyu как решение

Решение

добавь в проект класс:
Кликните здесь для просмотра всего текста
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
public static class ArrExtension
{
        public static List<object> AsTupleList<T>(this T[,] matrix)
        {
            var col = matrix.GetLength(1);
            var result = new List<object>();
 
            for (int i = 0; i < matrix.GetLength(0); i++)
            {
                T[] values = new T[col];
 
                for (int j = 0; j < matrix.GetLength(1); j++)
                {
                    values[j] = matrix[i, j];
                }
 
                result.Add(GetTuple(values));
            }
 
            return result;
        }
 
        private static object GetTuple<T>(params T[] values)
        {
            Type genericType = Type.GetType("System.Tuple`" + values.Length);
            Type[] typeArgs = values.Select(_ => typeof(T)).ToArray();
            Type specificType = genericType.MakeGenericType(typeArgs);
            object[] constructorArguments = values.Cast<object>().ToArray();
            return Activator.CreateInstance(specificType, constructorArguments);
        }
}


и попробуй так:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
private void button1_Click(object sender, RoutedEventArgs e)
        {
            Dan.FormA();
            var data = new double[Dan.m, Dan.m];
            for (int i = 0; i < Dan.m; i++)
            {
                for (int j = 0; j < Dan.m; j++)
                {
                    data [i,j] = Dan.A[i, j];
                }
            }
            dataA.ItemsSource = data.AsTupleList();
        }
2
0 / 0 / 0
Регистрация: 25.03.2019
Сообщений: 4
25.03.2019, 19:40  [ТС] 3
Спасибо огромное, работает!
А возможно как-то сделать то же самое с одномерным массивом?
0
879 / 558 / 291
Регистрация: 21.11.2012
Сообщений: 1,553
25.03.2019, 19:48 4
Лучший ответ Сообщение было отмечено Chiyuyu как решение

Решение

а можно еще проще.. сделать через datatable:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
public static DataTable ToDataTable<T>(this T[,] matrix)
        {
            var res = new DataTable();
 
            for (int i = 0; i < matrix.GetLength(1); i++)
            {
                res.Columns.Add("col" + i, typeof(T));
            }
 
            for (int i = 0; i < matrix.GetLength(0); i++)
            {
                var row = res.NewRow();
 
                for (int j = 0; j < matrix.GetLength(1); j++)
                {
                    row[j] = matrix[i, j];
                }
 
                res.Rows.Add(row);
            }
 
            return res;
        }
//использование
dg.ItemsSource = arr.ToDataTable().DefaultView;
Добавлено через 6 минут
А возможно как-то сделать то же самое с одномерным массивом?
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public static DataTable ToDataTable<T>(this T[] arr)
        {
            var res = new DataTable();
 
            for (int i = 0; i < arr.Length; i++)
            {
                res.Columns.Add("col" + i, typeof(T));
            }
            var row = res.NewRow();
 
            for (int i = 0; i < arr.Length; i++)
            {
                row[i] = arr[i];
            }
            res.Rows.Add(row);
 
            return res;
        }
3
0 / 0 / 0
Регистрация: 25.03.2019
Сообщений: 4
25.03.2019, 19:58  [ТС] 5
Двумерный массив в DataGrid, WPF


Добавила оба метода, выдал такую ошибку
0
Модератор
Эксперт .NET
15466 / 10712 / 2786
Регистрация: 21.04.2018
Сообщений: 31,536
Записей в блоге: 2
26.03.2019, 02:40 6
Цитата Сообщение от Chiyuyu Посмотреть сообщение
нужно только вывести массив в грид
Есть удобное расширение для этого - DataGrid2D.
В разделе есть несколько тем с его использованием.
1
0 / 0 / 0
Регистрация: 25.03.2019
Сообщений: 4
26.03.2019, 09:41  [ТС] 7
Я пофиксила ошибку. Просто вынесла эти два метода в отдельный класс. Всем спасибо.
0
26.03.2019, 09:41
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.03.2019, 09:41
Помогаю со студенческими работами здесь

DataGrid в WPF
Здравствуйте, возник ряд вопросов связанный с DataGrid в WPF, а именно: 1. Как создать таблицу с...

DataGrid WPF
Привет ребята! кто-нибудь подскажите как получить доступ к отдельной ячейке в DataGrid(е). ...

DataGrid WPF и местоположение
Доброго времени суток! Будьте добры, подскажите аналог функции FirstDisplayedScrollingRowIndex и...

WPF, работа с DataGrid
Есть приложение WPF. Нужно ввести некоторые параметры в таблицу. 1) Как настроить DataGrid так,...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru