如何给WPF中的DataGrid的ComBox编辑列添加数据

2024-12-13 04:46:51
推荐回答(1个)
回答1:

帮助别人就是帮助自己! 如果这里解决了您的问题,请您点一下推荐 × WPF项目中现有一个DataGrid,其中有一个名为“姓名”的模板列和名为“工号”的文本列,模板列在编辑时是一个ComBox,要实现的功能:ComBox的选项是从数据查询得到的姓名列表(如人员表中性别为女的人的清芹姓名列表),选择其中的某个姓名,TextBlock显示选择的该姓名,“工号”列显示该姓名的工号,如何实现数据的绑定及将记录保存到数据库中 �0�2 �0�2 �0�2 �0�2 �0�2 �0�2 �0�2 �0�2 �0�2 �0�2 �0�2 �0�2 �0�2 �0�2�0�2 �0�2 �0�2 �0�2 �0�2 例如:Datatable data=new Datatable(); 首先你需要给你的Combox绑定待选的数据 HTML code是用ObjectDataProvider来获取数据 C# codepublicclass _2011_12_28_01_Data { public IEnumerable GetEmployers() { returnnew Employer[]{ new Employer{ Name="A", Id=1}, new Employer{ Name="B", Id=2}, new Employer{ Name="C", Id=3}, new Employer{ Name="D", Id=4}, new Employer{ Name="E", Id=5} }; } } 然后需要给Combox添加SelectionChanged事件: C# codeprivatevoid OnChangeNameSelection(object sender, SelectionChangedEventArgs e) { var data =this.FindResource("employers") as ObjectDataProvider; var employers = data.Data as IEnumerable; var cmb = sender as ComboBox; var selectedItem =this.gridEmployers.SelectedItem as Employer; var employer = employers.FirstOrDefault(x => x.Name == (cmb.SelectedItem as Employer).Name); if (employer !=null) { selectedItem.Id = employer.Id; selectedItem.Name = employer.Name; } } 最后一点拍正厅就是给你的数据袭隐实现INotifyPropertyChanged接口,否则看不到效果 C# codepublicclass Employer : INotifyPropertyChanged { publicstring Name { get { return name; } set { name = value; if (PropertyChanged !=null) { PropertyChanged(this, new PropertyChangedEventArgs("Name")); } } } publicstring name; publicint Id { get { return id; } set { id = value; if (PropertyChanged !=null) { PropertyChanged(this, new PropertyChangedEventArgs("Id")); } } } publicint id; publicevent PropertyChangedEventHandler PropertyChanged; }注意,DataGrid和Combox绑定的不一样 给DataGrid绑定是在初始化随便加一个作为示例 C# codepublic _2011_12_28_01() { InitializeComponent(); this.DataContext =new Employer[] { new Employer { Name ="A", Id =1 } }; } 2011-12-28 20:48 推荐: 0 次 有帮助? 请推荐 怎么木有人回答啊