从组合框 C# WPF 中的选定项填充数据网格
Populating datagrid from selected items in a combobox C# WPF
我正在尝试将数据从 ComboBox 插入到 DataGrid。
现在,使用下面的代码片段,我已经可以在我的数据网格中插入一行,但由于某种原因,该行完全显示为空。
private void cmbAddExtras_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
using (DataEntities DE = new DataEntities())
{
tblExtra E = (tblExtra)cmbAddExtras.SelectedItem;
List<string> items = new List<string> { E.ItemCode };
items.Where(item => item.ToString() != null).ToList().ForEach(i =>
{
dgAddExtras.Items.Add(i);
});
}
}
我也尝试通过 XAML 绑定我的列,但它有同样的问题,它仍然在我的数据网格中显示一个空行。
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding ItemID}" Header="id" MinWidth="20" MaxWidth="100"/>
<DataGridTextColumn Binding="{Binding ItemCode}" Header="Code" MinWidth="80" MaxWidth="100"/>
<DataGridTextColumn Binding="{Binding ItemDescription}" Header="Description" MinWidth="80" MaxWidth="100"/>
<DataGridTextColumn Binding="{Binding ItemPrice}" Header="Price" MinWidth="80" MaxWidth="100"/>
<DataGridTextColumn Binding="{Binding ItemSellingPrice}" Header="QTY" MinWidth="80" MaxWidth="100"/>
</DataGrid.Columns>
我给class的列名和我的table里的列名一模一样,以防万一有人想知道。
我不知道为什么要这样做。这可能是我遗漏的非常简单的事情,如果是这样,抱歉 :P 并提前感谢您的帮助!
您的代码有误:
在下一行中,您只在 List
'items
'
中添加了一个 string
List<string> items = new List<string> { E.ItemCode.ToString() };
那么你怎么能期望一个字符串具有你在 DataGrid
列中引用的所有这些属性呢?
这样写:
private void cmbAddExtras_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
using (DataEntities DE = new DataEntities())
{
tblExtra E = (tblExtra)cmbAddExtras.SelectedItem;
List<tblExtra> items = new List<tblExtra> { E };
items.Where(item => item != null).ToList().ForEach(i =>
{
dgAddExtras.Items.Add(i);
});
}
}
我正在尝试将数据从 ComboBox 插入到 DataGrid。
现在,使用下面的代码片段,我已经可以在我的数据网格中插入一行,但由于某种原因,该行完全显示为空。
private void cmbAddExtras_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
using (DataEntities DE = new DataEntities())
{
tblExtra E = (tblExtra)cmbAddExtras.SelectedItem;
List<string> items = new List<string> { E.ItemCode };
items.Where(item => item.ToString() != null).ToList().ForEach(i =>
{
dgAddExtras.Items.Add(i);
});
}
}
我也尝试通过 XAML 绑定我的列,但它有同样的问题,它仍然在我的数据网格中显示一个空行。
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding ItemID}" Header="id" MinWidth="20" MaxWidth="100"/>
<DataGridTextColumn Binding="{Binding ItemCode}" Header="Code" MinWidth="80" MaxWidth="100"/>
<DataGridTextColumn Binding="{Binding ItemDescription}" Header="Description" MinWidth="80" MaxWidth="100"/>
<DataGridTextColumn Binding="{Binding ItemPrice}" Header="Price" MinWidth="80" MaxWidth="100"/>
<DataGridTextColumn Binding="{Binding ItemSellingPrice}" Header="QTY" MinWidth="80" MaxWidth="100"/>
</DataGrid.Columns>
我给class的列名和我的table里的列名一模一样,以防万一有人想知道。
我不知道为什么要这样做。这可能是我遗漏的非常简单的事情,如果是这样,抱歉 :P 并提前感谢您的帮助!
您的代码有误:
在下一行中,您只在 List
'items
'
string
List<string> items = new List<string> { E.ItemCode.ToString() };
那么你怎么能期望一个字符串具有你在 DataGrid
列中引用的所有这些属性呢?
这样写:
private void cmbAddExtras_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
using (DataEntities DE = new DataEntities())
{
tblExtra E = (tblExtra)cmbAddExtras.SelectedItem;
List<tblExtra> items = new List<tblExtra> { E };
items.Where(item => item != null).ToList().ForEach(i =>
{
dgAddExtras.Items.Add(i);
});
}
}