Witam,
Mam sobie Obiekt DataGrid, który powinien wyświetlać(po kliknięciu menu) zbiór danych wybranych z danej tabeli(baza danych to plik MS Access). Jednak jedyne co się dzieje to błąd: Kolekcja elementów musi być pusta zanim zostanie użyte źródło ItemsSource
w System.Windows.Controls.ItemCollection.SetItemsSource(IEnumerable value, Func`2 GetSourceItem)
w System.Windows.Controls.ItemsControl.OnItemsSourceChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
w System.Windows.DependencyObject.OnPropertyChanged(DependencyPropertyChangedEventArgs e)
w System.Windows.FrameworkElement.OnPropertyChanged(DependencyPropertyChangedEventArgs e)
w System.Windows.DependencyObject.NotifyPropertyChange(DependencyPropertyChangedEventArgs args)
w System.Windows.DependencyObject.UpdateEffectiveValue(EntryIndex entryIndex, DependencyProperty dp, PropertyMetadata metadata, EffectiveValueEntry oldEntry, EffectiveValueEntry& newEntry, Boolean coerceWithDeferredReference, Boolean coerceWithCurrentValue, OperationType operationType)
w System.Windows.DependencyObject.SetValueCommon(DependencyProperty dp, Object value, PropertyMetadata metadata, Boolean coerceWithDeferredReference, Boolean coerceWithCurrentValue, OperationType operationType, Boolean isInternal)
w System.Windows.Controls.ItemsControl.set_ItemsSource(IEnumerable value)
w plan.MainWindow.ShowPlan(Object sender, MouseButtonEventArgs e) w wiersz 62
Część kody w pliku xaml
<DataGrid Name="plan" IsReadOnly="True" AutoGenerateColumns="False" CellStyle="{StaticResource CellStyleWithPadding}">
<DataGrid.Columns>
<DataGridTextColumn Header="Lp"></DataGridTextColumn>
<DataGridTextColumn Header="Godziny"></DataGridTextColumn>
<DataGridTextColumn Header="Poniedziałek"></DataGridTextColumn>
<DataGridTextColumn Header="Wtorek"></DataGridTextColumn>
<DataGridTextColumn Header="Środa"></DataGridTextColumn>
<DataGridTextColumn Header="Czwartek"></DataGridTextColumn>
<DataGridTextColumn Header="Piątek"></DataGridTextColumn>
</DataGrid.Columns>
</DataGrid>
Metoda służąca do wybrania danych z bazy:
public void ShowPlan(object sender, MouseButtonEventArgs e)
{
string connectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=...";
try
{
OleDbConnection connection = new OleDbConnection(connectionString);
connection.ConnectionString = ConfigurationManager.ConnectionStrings["Connection"].ToString();
connection.Open();
OleDbCommand cmd = new OleDbCommand();
cmd.CommandText = "SELECT * FROM [template]";
cmd.Connection = connection;
OleDbDataReader dr = cmd.ExecuteReader();
tree.ItemsSource = null;
tree.ItemsSource = dr; <- to jest ta 62.linia
connection.Close();
}
catch(Exception ex)
{
...
}
}
miałby ktoś jakiś pomysł na pozbycie się tego?