我有两张桌子:
Person:
p_id
p_name
c_id
Car:
c_id
c_name
这是我的XAML标签:
<DataGrid Name="dataGrid1"
ItemsSource="{Binding Path=myPath}"
AutoGenerateColumns="True" />
这是C#:
a = new SqlDataAdapter("SELECT p.p_name AS Person, c.c_name AS Car FROM Person AS p, Car AS c WHERE p.c_id = c.c_id", c);
d = new DataSet();
a.Fill(d, "myPath");
dataGrid.DataContext = d;
当然我可以查看,但我无法编辑数据。我希望通过一些“魔术”我可以将Car-TextColumn转换为ComboBox
,并使用Car
表中的Item列表。
很抱歉,如果有人问这个问题,这是我第一次尝试使用C#和WPF,不确定要搜索哪些关键字!
答案 0 :(得分:1)
好像你需要使用DataTemplates
。你可以挂钩AutoGeneratingColumn
并提供你的逻辑。此外,您可能必须分开加载Cars
以在ComboBox
中显示它们,因为在执行查询后可能无法加载所有可能的汽车。
我强烈建议您查看MVVM
模式。
有几个类似的问题可能对您有所帮助:
答案 1 :(得分:1)
您可以处理AutoGeneratingColumn
事件并添加DataGridComboBoxColumn
这样的内容 -
private void DataGrid_AutoGeneratingColumn(object sender, DataGridAutoGeneratingColumnEventArgs e)
{
if (e.PropertyName == "CustomerID")
{
DataGridComboBoxColumn column = new DataGridComboBoxColumn();
column.DataFieldBinding = new Binding("CustomerID");
column.DataFieldTarget = ComboBoxDataFieldTarget.SelectedValue;
column.ItemsSource = DBAccess.GetCustomers().Tables["Customers"].DefaultView;
column.EditingElementStyle = (Style)this.RootGrid.FindResource("CustomerFKStyle");
e.Column = column;
}
}
请参阅此文章了解详情和示例 - WPF DataGrid: Working with DataGridComboBoxColumn CTP