Добавление строки в DataGrid Silverlight - PullRequest
1 голос
/ 01 марта 2011

У меня есть Datagrid, который показывает данные из базы данных. каждый раз, когда я загружаю данные из моей вазы данных, старые данные считываются и заменяются новыми данными.

Я хочу, чтобы предыдущая строка осталась, а новые данные были добавлены в конец таблицы данных.

мой код, как показано ниже:

public MainPage()
    {


        InitializeComponent();
       dataGrid1.Columns.Add(new DataGridTextColumn { Header = "Year", Binding = new System.Windows.Data.Binding("year") });
        dataGrid1.Columns.Add(new DataGridTextColumn { Header = "One", Binding = new System.Windows.Data.Binding("One") });
        dataGrid1.Columns.Add(new DataGridTextColumn { Header = "Two", Binding = new System.Windows.Data.Binding("Two") });
        dataGrid1.Columns.Add(new DataGridTextColumn { Header = "Three", Binding = new System.Windows.Data.Binding("Three") });


    }

void client_DoWorkCompleted(object sender, DoWorkCompletedEventArgs e)
    {            
        dataGrid1.ItemsSource = e.Result;
    }

как добавить новые данные из базы данных, а не перезаписать их? .

1 Ответ

0 голосов
/ 01 марта 2011

Один очень простой и простой способ сделать это (потому что вы, кажется, не используете обычный подход MVVM), это создать новый список (IEnumerable), который объединяет как старый список, так и новый список,затем присвойте его обратно свойству ItemsSource:

List<MyObjects> abc = new List<MyObjects>(dataGrid2.ItemsSource).Union(e.Result);
dataGrid2.ItemsSource = abc;

Я разбил это на две строки, чтобы было легче понять.Если бы вы использовали ViewModel, то свойство, связанное с DataGrid, было бы List<>, и тогда вы можете просто сделать AddRange(e.Result) для этого свойства, и из-за красоты привязки данных (и уведомления) егоавтоматически появится в вашей таблице данных.

...