从数据库填充DataGridComboBoxColumn [英] Populating a DataGridComboBoxColumn from a Database
问题描述
Hi Folks,
我的DataGrid中有一个DataGridComboBoxColumn,我想用数据库中的vaules填充:
there is a DataGridComboBoxColumn in my DataGrid, which I want to populate with vaules from a database:
< DataGridComboBoxColumn Header =" Subst" x:Name =" BrandSubstituteCombo"
&NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP;的DisplayMemberPath = QUOT; OriginText" SelectedValuePath = QUOT; OriginID" />
<DataGridComboBoxColumn Header="Subst" x:Name="BrandSubstituteCombo"
DisplayMemberPath="OriginText" SelectedValuePath="OriginID" />
正如我对普通ComboBox所做的那样,我会这样做:
As I would do with a normal ComboBox I try it this way:
...
...
DataView dataView = new DataView(objectClassEditor.BrandsTable);
  ; dataView.RowFilter =" OriginText like'" + objectClassEditor.TextBrand.Text +"%'" ;;
objectClassEditor.BrandSubstituteCombo.ItemsSource = dataView;
DataView dataView = new DataView(objectClassEditor.BrandsTable);
dataView.RowFilter = "OriginText like '" + objectClassEditor.TextBrand.Text + "%'";
objectClassEditor.BrandSubstituteCombo.ItemsSource = dataView;
这不起作用 - 什么我做错了吗?
This doesn't work - what am I doing wrong?
非常感谢爸爸!
Carsten
推荐答案
Hi Carsten,
Hi Carsten,
如果你想为组合框绑定数据表,我建议你可以使用 DataGridTemplateColumn,它可以直接绑定数据,请带上 看下面的代码:
If you want to bind datatable for combobox, I suggest you can use DataGridTemplateColumn, It can bind datable directly, please take a look the following code:
<DataGrid
x:Name="datagrid1"
AutoGenerateColumns="False"
ItemsSource="{Binding personinfos}">
<DataGrid.Columns>
<DataGridTextColumn
Width="50"
Binding="{Binding Id}"
Header="Id" />
<DataGridTextColumn
Width="100"
Binding="{Binding Name}"
Header="Name" />
<DataGridTemplateColumn Width="100">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<ComboBox
DisplayMemberPath="Sex"
ItemsSource="{Binding DataContext.dt, RelativeSource={RelativeSource AncestorType=local:Window20}}"
SelectedValuePath="personId" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
public partial class Window20 : Window
{
public ObservableCollection<personinfo> personinfos { get; set; }
public DataTable dt { get; set; }
public Window20()
{
InitializeComponent();
personinfos = new ObservableCollection<personinfo>()
{
new personinfo(){Id=1,Name="cherry"},
new personinfo(){Id=2,Name="wendy"},
new personinfo(){Id=3,Name="mattew"},
new personinfo(){Id=4,Name="barry"},
new personinfo(){Id=5,Name="cherry"},
};
dt = new DataTable();
dt.Columns.Add("personId", typeof(Int32));
dt.Columns.Add("Sex", typeof(string));
dt.Rows.Add(1,"Woman");
dt.Rows.Add(2,"Man");
this.DataContext = this;
}
}
public class personinfo
{
public Int32 Id { get; set; }
public string Name { get; set; }
}
最好的问候,
Cherry
这篇关于从数据库填充DataGridComboBoxColumn的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!