MichelVanderbeke
Programmer
Hello,
I am not able to fill up a combobox in a datagrid with data from a dataTable. What am I doing wrong?
XAML:
<DataGrid x:Name="dgContactgegevens" Grid.Column="0" Grid.Row="0" Grid.ColumnSpan="2" Grid.RowSpan="2" Margin="10,10,10,10" RowBackground="LightYellow" AlternatingRowBackground="LightBlue" ItemsSource="{Binding dtContactgegevens}" AutoGenerateColumns="False" IsReadOnly="True" SelectionMode="Single">
<DataGrid.Columns>
<DataGridTextColumn Header="ContactgegevenID"
Binding="{Binding ContactgegevenID}">
</DataGridTextColumn>
<DataGridTextColumn Header="Contact"
Binding="{Binding ContactgegevenContact}">
</DataGridTextColumn>
<DataGridTemplateColumn Header="Contactsoort">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<ComboBox
ItemsSource="{Binding dtContactsoorten}"
DisplayMemberPath="Contactsoortnaam"
SelectedValuePath="ContactsoortID"
SelectedValue="{Binding Contactgegevencontactsoort, Mode=TwoWay}"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTextColumn Header="Contactlijn"
Binding="{Binding ContactgegevenContactlijn}">
</DataGridTextColumn>
</DataGrid.Columns>
</DataGrid>
Code behind:
private void Window_Loaded(object sender, RoutedEventArgs e)
{
MaakTabellen();
VulTabellen();
ToonGegevens();
}
private void MaakTabellen()
{
dtContacten = new DataTable("Contacten");
dtContactsoorten = new DataTable("Contactsoorten");
dtContactgegevens = new DataTable("Contactgegevens");
dsContacten.Tables.Add(dtContacten);
dsContacten.Tables.Add(dtContactsoorten);
dsContacten.Tables.Add(dtContactgegevens);
DataColumn ContactID = new DataColumn("ContactID");
ContactID.AllowDBNull = false;
ContactID.AutoIncrement = true;
ContactID.AutoIncrementSeed = 1;
ContactID.AutoIncrementStep = 1;
ContactID.DataType = typeof(int);
ContactID.Unique = true;
dtContacten.Columns.Add(ContactID);
dtContacten.PrimaryKey = new DataColumn[] { dtContacten.Columns["ContactID"] };
DataColumn Naam = new DataColumn("Naam");
Naam.DataType = typeof(string);
dtContacten.Columns.Add(Naam);
DataColumn ContactsoortID = new DataColumn("ContactsoortID");
ContactsoortID.AllowDBNull = false;
ContactsoortID.AutoIncrement = true;
ContactsoortID.AutoIncrementSeed = 1;
ContactsoortID.AutoIncrementStep = 1;
ContactsoortID.DataType = typeof(int);
ContactsoortID.Unique = true;
dtContactsoorten.Columns.Add(ContactsoortID);
dtContactsoorten.PrimaryKey = new DataColumn[] { dtContactsoorten.Columns["ContactsoortID"] };
DataColumn ContactsoortNaam = new DataColumn("ContactsoortNaam");
ContactsoortNaam.DataType = typeof(string);
dtContactsoorten.Columns.Add(ContactsoortNaam);
DataColumn ContactgegevenID = new DataColumn("ContactgegevenID");
ContactgegevenID.AllowDBNull = false;
ContactgegevenID.AutoIncrement = true;
ContactgegevenID.AutoIncrementSeed = 1;
ContactgegevenID.AutoIncrementStep = 1;
ContactgegevenID.DataType = typeof(int);
ContactgegevenID.Unique = true;
dtContactgegevens.Columns.Add(ContactgegevenID);
dtContactgegevens.PrimaryKey = new DataColumn[] { dtContactgegevens.Columns["ContactgegevenID"] };
DataColumn ContactgegevensContact = new DataColumn("ContactgegevenContact");
ContactgegevensContact.DataType = typeof(int);
dtContactgegevens.Columns.Add(ContactgegevensContact);
DataColumn ContactgegevensContactsoort = new DataColumn("ContactgegevenContactsoort");
ContactgegevensContactsoort.DataType = typeof(int);
dtContactgegevens.Columns.Add(ContactgegevensContactsoort);
DataColumn ContactgegevensContactlijn = new DataColumn("ContactgegevenContactlijn");
ContactgegevensContactlijn.DataType = typeof(string);
dtContactgegevens.Columns.Add(ContactgegevensContactlijn);
}
private void VulTabellen()
{
ToevoegenDataContact("Vanderbeke", "Michel", "Carmersstraat", "103", "8000", "Brugge", "België", "1950/11/28");
ToevoegenDataContactgegeven(1, 1, "050334089");
ToevoegenDataContactgegeven(1, 2, "0476395012");
ToevoegenDataContactgegeven(1, 3, "michel.vanderbeke@outlook.com");
ToevoegenDataContactgegeven(1, 4, "
ToevoegenDataContactsoort("Vaste telefoon");
ToevoegenDataContactsoort("Mobiele telefoon");
ToevoegenDataContactsoort("E-mail adres");
ToevoegenDataContactsoort("Website");
dsContacten.Relations.Add(dsContacten.Tables["Contactsoorten"].Columns["ContactsoortID"], dsContacten.Tables["Contactgegevens"].Columns["ContactgegevenContactsoort"]);
DataColumn dataColumnParent = dsContacten.Tables["Contacten"].Columns["ContactID"];
DataColumn dataColumnChild = dsContacten.Tables["Contactgegevens"].Columns["ContactgegevenContact"];
DataRelation datarelatieContacten = new DataRelation("relatieContacten_Contactgegevens", dataColumnParent, dataColumnChild);
dsContacten.Relations.Add(datarelatieContacten);
}
private void ToevoegenDataContact(string naam, string voornaam, string straat, string huisnummer, string postcode, string plaats, string land, string geboortedatum)
{
DataRow nieuwContact = dsContacten.Tables["Contacten"].NewRow();
nieuwContact["Naam"] = naam;
dtContacten.Rows.Add(nieuwContact);
}
private void ToevoegenDataContactsoort(string contactsoortNaam)
{
DataRow nieuweContactsoortNaam = dsContacten.Tables["Contactsoorten"].NewRow();
nieuweContactsoortNaam["ContactsoortNaam"] = contactsoortNaam;
dtContactsoorten.Rows.Add(nieuweContactsoortNaam);
}
private void ToevoegenDataContactgegeven(int contact, int contactsoort, string contactlijn)
{
DataRow nieuwContactgegeven = dsContacten.Tables["Contactgegevens"].NewRow();
nieuwContactgegeven["ContactgegevenContact"] = contact;
nieuwContactgegeven["ContactgegevenContactsoort"] = contactsoort;
nieuwContactgegeven["ContactgegevenContactlijn"] = contactlijn;
dtContactgegevens.Rows.Add(nieuwContactgegeven);
}
private void ToonGegevens()
{
dgContactgegevens.ItemsSource = dtContactgegevens.DefaultView;
}
}
Can someone help Me?
Thank you
Michel
I am not able to fill up a combobox in a datagrid with data from a dataTable. What am I doing wrong?
XAML:
<DataGrid x:Name="dgContactgegevens" Grid.Column="0" Grid.Row="0" Grid.ColumnSpan="2" Grid.RowSpan="2" Margin="10,10,10,10" RowBackground="LightYellow" AlternatingRowBackground="LightBlue" ItemsSource="{Binding dtContactgegevens}" AutoGenerateColumns="False" IsReadOnly="True" SelectionMode="Single">
<DataGrid.Columns>
<DataGridTextColumn Header="ContactgegevenID"
Binding="{Binding ContactgegevenID}">
</DataGridTextColumn>
<DataGridTextColumn Header="Contact"
Binding="{Binding ContactgegevenContact}">
</DataGridTextColumn>
<DataGridTemplateColumn Header="Contactsoort">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<ComboBox
ItemsSource="{Binding dtContactsoorten}"
DisplayMemberPath="Contactsoortnaam"
SelectedValuePath="ContactsoortID"
SelectedValue="{Binding Contactgegevencontactsoort, Mode=TwoWay}"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTextColumn Header="Contactlijn"
Binding="{Binding ContactgegevenContactlijn}">
</DataGridTextColumn>
</DataGrid.Columns>
</DataGrid>
Code behind:
private void Window_Loaded(object sender, RoutedEventArgs e)
{
MaakTabellen();
VulTabellen();
ToonGegevens();
}
private void MaakTabellen()
{
dtContacten = new DataTable("Contacten");
dtContactsoorten = new DataTable("Contactsoorten");
dtContactgegevens = new DataTable("Contactgegevens");
dsContacten.Tables.Add(dtContacten);
dsContacten.Tables.Add(dtContactsoorten);
dsContacten.Tables.Add(dtContactgegevens);
DataColumn ContactID = new DataColumn("ContactID");
ContactID.AllowDBNull = false;
ContactID.AutoIncrement = true;
ContactID.AutoIncrementSeed = 1;
ContactID.AutoIncrementStep = 1;
ContactID.DataType = typeof(int);
ContactID.Unique = true;
dtContacten.Columns.Add(ContactID);
dtContacten.PrimaryKey = new DataColumn[] { dtContacten.Columns["ContactID"] };
DataColumn Naam = new DataColumn("Naam");
Naam.DataType = typeof(string);
dtContacten.Columns.Add(Naam);
DataColumn ContactsoortID = new DataColumn("ContactsoortID");
ContactsoortID.AllowDBNull = false;
ContactsoortID.AutoIncrement = true;
ContactsoortID.AutoIncrementSeed = 1;
ContactsoortID.AutoIncrementStep = 1;
ContactsoortID.DataType = typeof(int);
ContactsoortID.Unique = true;
dtContactsoorten.Columns.Add(ContactsoortID);
dtContactsoorten.PrimaryKey = new DataColumn[] { dtContactsoorten.Columns["ContactsoortID"] };
DataColumn ContactsoortNaam = new DataColumn("ContactsoortNaam");
ContactsoortNaam.DataType = typeof(string);
dtContactsoorten.Columns.Add(ContactsoortNaam);
DataColumn ContactgegevenID = new DataColumn("ContactgegevenID");
ContactgegevenID.AllowDBNull = false;
ContactgegevenID.AutoIncrement = true;
ContactgegevenID.AutoIncrementSeed = 1;
ContactgegevenID.AutoIncrementStep = 1;
ContactgegevenID.DataType = typeof(int);
ContactgegevenID.Unique = true;
dtContactgegevens.Columns.Add(ContactgegevenID);
dtContactgegevens.PrimaryKey = new DataColumn[] { dtContactgegevens.Columns["ContactgegevenID"] };
DataColumn ContactgegevensContact = new DataColumn("ContactgegevenContact");
ContactgegevensContact.DataType = typeof(int);
dtContactgegevens.Columns.Add(ContactgegevensContact);
DataColumn ContactgegevensContactsoort = new DataColumn("ContactgegevenContactsoort");
ContactgegevensContactsoort.DataType = typeof(int);
dtContactgegevens.Columns.Add(ContactgegevensContactsoort);
DataColumn ContactgegevensContactlijn = new DataColumn("ContactgegevenContactlijn");
ContactgegevensContactlijn.DataType = typeof(string);
dtContactgegevens.Columns.Add(ContactgegevensContactlijn);
}
private void VulTabellen()
{
ToevoegenDataContact("Vanderbeke", "Michel", "Carmersstraat", "103", "8000", "Brugge", "België", "1950/11/28");
ToevoegenDataContactgegeven(1, 1, "050334089");
ToevoegenDataContactgegeven(1, 2, "0476395012");
ToevoegenDataContactgegeven(1, 3, "michel.vanderbeke@outlook.com");
ToevoegenDataContactgegeven(1, 4, "
ToevoegenDataContactsoort("Vaste telefoon");
ToevoegenDataContactsoort("Mobiele telefoon");
ToevoegenDataContactsoort("E-mail adres");
ToevoegenDataContactsoort("Website");
dsContacten.Relations.Add(dsContacten.Tables["Contactsoorten"].Columns["ContactsoortID"], dsContacten.Tables["Contactgegevens"].Columns["ContactgegevenContactsoort"]);
DataColumn dataColumnParent = dsContacten.Tables["Contacten"].Columns["ContactID"];
DataColumn dataColumnChild = dsContacten.Tables["Contactgegevens"].Columns["ContactgegevenContact"];
DataRelation datarelatieContacten = new DataRelation("relatieContacten_Contactgegevens", dataColumnParent, dataColumnChild);
dsContacten.Relations.Add(datarelatieContacten);
}
private void ToevoegenDataContact(string naam, string voornaam, string straat, string huisnummer, string postcode, string plaats, string land, string geboortedatum)
{
DataRow nieuwContact = dsContacten.Tables["Contacten"].NewRow();
nieuwContact["Naam"] = naam;
dtContacten.Rows.Add(nieuwContact);
}
private void ToevoegenDataContactsoort(string contactsoortNaam)
{
DataRow nieuweContactsoortNaam = dsContacten.Tables["Contactsoorten"].NewRow();
nieuweContactsoortNaam["ContactsoortNaam"] = contactsoortNaam;
dtContactsoorten.Rows.Add(nieuweContactsoortNaam);
}
private void ToevoegenDataContactgegeven(int contact, int contactsoort, string contactlijn)
{
DataRow nieuwContactgegeven = dsContacten.Tables["Contactgegevens"].NewRow();
nieuwContactgegeven["ContactgegevenContact"] = contact;
nieuwContactgegeven["ContactgegevenContactsoort"] = contactsoort;
nieuwContactgegeven["ContactgegevenContactlijn"] = contactlijn;
dtContactgegevens.Rows.Add(nieuwContactgegeven);
}
private void ToonGegevens()
{
dgContactgegevens.ItemsSource = dtContactgegevens.DefaultView;
}
}
Can someone help Me?
Thank you
Michel