从数据库填充DataGridComboBoxColumn [英] Populating a DataGridComboBoxColumn from a Database

查看:70
本文介绍了从数据库填充DataGridComboBoxColumn的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆