2015-09-17 4 views
2

У меня есть два DataTable с точно такой же структурой, схемой и ограничениями, но с разными строками.Связывание DataGrid с двумя данными DataTable

Мне нужно отображать эти таблицы в конкатенации DataGrid, то есть сначала строки первого DataTable, а затем строки второго.

Я не хочу присоединяться, объединять или любую операцию, которая создает новый объект DataTable, так как мне нужны, чтобы изменения на двух оригиналах были показаны в DataGrid (а также в другом направлении: если пользователь изменяет что-то в DataGrid, я хочу, чтобы обновлялись два оригинала DataTable).

Так что я думаю, что мне нужен «прокси», как DataView на двух DataTable, но я понятия не имею, возможно ли это.

+0

Вам по-прежнему необходимо объединить их в один объект (другая таблица, представление и т. Д.), Который затем устанавливается как «DataGrid.ItemsSource». Отношения не имеют значения. – Sinatr

+0

@Sinatr, но таким образом изменения в двух исходных DataTable не влияют на DataGrid и наоборот. – WoDoSc

ответ

0

прокси», как DataView на двух DataTable,

Я рекомендовал бы, чтобы вектор класса объект будет создан, который имеет все свойства столбцов для показа. Но этот класс сущностей будет сохранить ссылку на возникая данные. перегоняют два DataTables в один список этого нового объекта и привязки к этому списку.

для обработки изменений, имеет класса придерживаться INotifyPropertyChange и создать менеджерданных, который будет подписываться на свойство каждого экземпляра ch Анж. Когда менеджер обнаруживает изменение, он возвращает изменения в исходную строку DataTable.

public class DataVector : INotifyPropertyChange 
{ 
    public DataTable OriginationDataTable { get; set; } 
    public int OrininationRow { get; set; } 

    // Mirror the properties 
    public string Name { get {} { _Name = value; NotifyChange("Name"); } 


    // CTORs which help create this object 
    public DataVector(DataTable dt, int originatingRow) { ... } 

    .... 
} 
+0

Это может сработать, но не подходит, если имена столбцов известны только во время выполнения, если вы не используете отражение. Правильно ли это? – WoDoSc

+0

@WoDoSc Конечно, нужно знать столбцы, но, честно говоря, почему бы и нет? Кто получает неизвестные интерфейсы от вызовов базы данных? Сценарий является ИМХО одноразовым. – OmegaMan

+0

Фактически в моем случае число (и имена) столбцов изменяется динамически, в зависимости от «экземпляра проблемы», которую я пытаюсь обработать. Например, каждый столбец моей таблицы является компанией, а каждая строка - продуктом (или наоборот), а ячейка содержит стоимость этого продукта в этой компании (это всего лишь пример, моя ситуация несколько отличается, но я не могу здесь упомянуть). – WoDoSc

Смежные вопросы