Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Последние темы форума

Показать новые сообщения »

Почтовая рассылка

Подписчиков: 11775
Последний выпуск: 19.06.2015

Заполнение DataGrid.

98K
28 марта
Алексей Бородин
1 / / 28.03.2017
Здравствуйте. Помогите разобраться. Есть таблица с данными привязанная к DataGrid. Необходимо было преобразовать столбец в строку вот так:Это я сделал через Pivot. Но ячейки value не заполняются. В консоли все нормально а тут проблема:Вот код:
Код:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows;
using System.Data;
using OpcHda2Tcp.Common;
using OpcHda2Tcp.Client;
using System.Threading;
using System.Linq.Expressions;

namespace TestHDA
{


    public static class PivotClass
    {
        public static DataTable ToPivotTable<T, TColumn, TRow, TData>(this IEnumerable<T> source, Func<T, TColumn> columnSelector, Expression<Func<T, TRow>> rowSelector, Func<IEnumerable<T>, TData> dataSelector)
        {
            DataTable table = new DataTable();
            var rowName = ((MemberExpression)rowSelector.Body).Member.Name;
            table.Columns.Add(new DataColumn(rowName));
            var columns = source.Select(columnSelector).Distinct();

            foreach (var column in columns)
                table.Columns.Add(new DataColumn(column.ToString()));

            var rows = source.GroupBy(rowSelector.Compile())
                             .Select(rowGroup => new
                             {
                                 Key = rowGroup.Key,
                                 Values = columns.GroupJoin(
                                     rowGroup,
                                     c => c,
                                     r => columnSelector(r),
                                     (c, columnGroup) => dataSelector(columnGroup))
                             });
            foreach (var row in rows)
            {
                var dataRow = table.NewRow();
                var items = row.Values.Cast<object>().ToList();
                items.Insert(0, row.Key);
                dataRow.ItemArray = items.ToArray();
                table.Rows.Add(dataRow);
            }
            return table;
        }
    }

    public partial class MainWindow : Window
    {
       
        public MainWindow()
        {
            InitializeComponent();
            {
            }
            Opc2TCPClient myClient = new Opc2TCPClient("127.0.0.1", 3000, 64 * 1024);
            bool isConnected = myClient.Connect();
            if (isConnected)
            {
                string message = @"2017-03-28 20:56:00%2017-03-28 20:57:00%5%Random.Int1,Random.Int2,Random.Int4";
                byte[] data = Util.MakeMessage(message);
                myClient.SyncSend(data);
                myClient.AsyncRead();
                while (true)
                {
                    if (myClient.RecivedAll)
                    {
                        string msg = "";
                        bool b = Util.VeryfyMessage(myClient.RecivedData.ToArray(), out msg);
                        if (!b)
                        {
                        }
                        else
                        {
                            DataTable dt = Util.JsonToDataTable(msg);
                            DataTable myDataTable = dt;
                            var data2 = myDataTable.AsEnumerable().Select(x => new { Timestamp = x.Field<string>("Timestamp"), TagName = x.Field<string>("TagName"), Value = x.Field<string>("Value") });
                            DataTable dt1 = data2.ToPivotTable(item => item.TagName, item => item.Timestamp, items => items.Any() ? items.Sum(x => double.Parse(x.Value)) : 0);
                            MyDataGrid.ItemsSource = dt1.DefaultView;
                        }
                        break;
                    }
                    Thread.Sleep(100);
                }
            }
            myClient.Close();
        }
    }
}
443
29 марта
cronya
417 / / 03.01.2009
что вам отладчик говорит? пройдитесь пошагово, сразу найдете ошибку.

Знаете кого-то, кто может ответить? Поделитесь с ним ссылкой.

Ваш ответ

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог