帮助别人就是帮助自己! 如果这里解决了您的问题,请您点一下推荐 × WPF项目中现有一个DataGrid,其中有一个名为“姓名”的模板列和名为“工号”的文本列,模板列在编辑时是一个ComBox,要实现的功能:ComBox的选项是从数据查询得到的姓名列表(如人员表中性别为女的人的姓名列表),选择其中的某个姓名,TextBlock显示选择的该姓名,“工号”列显示该姓名的工号,如何实现数据的绑定及将记录保存到数据库中<DataGrid AutoGenerateColumns="False" Height="200" HorizontalAlignment="Left" Margin="12,200,0,130" Name="dataGrid1" ItemsSource="{Binding}" Width="613">�0�2<DataGrid.Columns>�0�2<DataGridTemplateColumn x:Name="selectxmCol" Header="姓名" Width="100">�0�2<DataGridTemplateColumn.CellTemplate>�0�2<DataTemplate>�0�2<TextBlock Name="selectXm" Text="{Binding Path=xm}" ></TextBlock>�0�2</DataTemplate>�0�2</DataGridTemplateColumn.CellTemplate>�0�2<DataGridTemplateColumn.CellEditingTemplate>�0�2<DataTemplate>�0�2<Grid Name="selectxmGrid" FocusManager.FocusedElement="{Binding ElementName=xmComb}">�0�2<ComboBox Name="xmComb" DisplayMemberPath="xm" SelectedValuePath="gh" IsEditable="True" IsSynchronizedWithCurrentItem="True"></ComboBox>�0�2</Grid>�0�2</DataTemplate>�0�2</DataGridTemplateColumn.CellEditingTemplate>�0�2�0�2</DataGridTemplateColumn> �0�2�0�2<DataGridTextColumn Header="工号" Binding="{Binding Path=gh}" Width="100"/>�0�2</DataGrid.Columns>例如:Datatable data=new Datatable();首先你需要给你的Combox绑定待选的数据HTML code<DataGrid x:Name="gridEmployers" AutoGenerateColumns="False" ItemsSource="{Binding}" DataContext="{Binding}"><DataGridTemplateColumn.CellEditingTemplate><DataTemplate><ComboBox Text="{Binding Name}" IsEditable="True" DisplayMemberPath="Name" ItemsSource="{Binding Source={StaticResource employers}}" SelectionChanged="OnChangeNameSelection"/></DataTemplate></DataGridTemplateColumn.CellEditingTemplate><Window.Resources><ObjectDataProvider x:Key="employers" ObjectType="{x:Type local:_2011_12_28_01_Data}" MethodName="GetEmployers"/></Window.Resources>是用ObjectDataProvider来获取数据C# codepublicclass _2011_12_28_01_Data { public IEnumerable<Employer> 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<Employer>; 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 次 有帮助? 请推荐 怎么木有人回答啊
温馨提示:内容为网友见解,仅供参考
如何给WPF中的DataGrid的ComBox编辑列添加数据
如果这里解决了您的问题,请您点一下推荐 × WPF项目中现有一个DataGrid,其中有一个名为“姓名”的模板列和名为“工号”的文本列,模板列在编辑时是一个ComBox,要实现的功能:ComBox的选项是从数据查询得到的姓名列表(如人员表中性别为女的人的姓名列表),选择其中的某个姓名,TextBlock显示选择的...
DataGridViewComboBoxColumn选择一个项第二列自动填入数据库中信息
做DataGridView的事件:CellEditEnd(在这前后发生的事件,比如CellEditVailded都可以)。在其中读取ComboBox的选项值。然后读数据库去,得到的名字赋值到第二个格中。在CellEditEnd事件中,有一个参数e,e中有ColIndex和RowIndex,记得要判断列的Index = 0再执行。否则会死循环。另外,可以通过e.RowIn...
c#中combox里绑定datagridview中的某一列的值,并显示在combox的下拉框中...
combox也有DataSource属性,直接把dataGridView1第一列的集合赋给combox就可以了,然后给combox的comboBoxGroup.ValueMember = "列名";属性赋值,两行代码就能搞定,不需要循环!
C#的DataGridView中怎么为一列加一个Combox的控件效果如图
一般用在相关联的表,假定表A和表B,表A是销售订单,如产品单价订单日期等,表B是下订单的客户资料,如电话姓名地址等。这两个表相关联的外键列是客户ID。DataGridView显示订单表A,在表A的客户ID列加一个ComboBox,显示这个产品的几个客户的姓名。用拖动绑定数据源,表A用默认的网格控件即DataGridVie...
C#中如何将datagridview中某一列的值不重复的显示到一个combobox中
以下方法是实现将界面上的dataGridView1控件中第一列的值填充到界面上的comboBox控件中的,,重复的值是不会添加的。在窗体的启动事件中调用此方法就可以了,如果是取其它列的值,修改“Cells[0]”的值就可以了;private void getName(){ List<string> lsName=new List<string>;for(int i=0;i<...
datagirdview中Combox如何获得选取值?
按你的说明,你添加的应该是DataGridViewComboxColumn列,假设这个列的列名叫Column1,那么,应该是 this.Column1.ValueMember = "IDCol";\/\/注意这个列名 this.Column1.DisplayMember = "NameCol";\/\/及这个列名应该是this.Column1.DataSource所绑定的DataTable中的列名 且 this.Column1.DataSource= 语句...
datagridview 和combox等控件关联(c# form)
设置一个全局变量 DataTable dt = new DataTable(),表dt含两列 ID int Name Varchar 作为datagridview 和combox的数据源 绑定数据,dataGridView1.DataSource = dt;comboBox1.DataSource = dt;comboBox1.DisplayMember = "Name";comboBox1.ValueMember = "ID";dataGridView1的CellMouseDoubleClick...
datagridview绑好数据可以显示,现在想一列改为COMbox(“x性别”这个字 ...
点gridview的右上角,选中编辑列,选中"x性别",然后把右下角的“转换为templetefield”这行蓝色字点下,确定;再点gridview的右上角,选中编辑模板,选中"x性别",在edittempleted 里面把textbox控件换成combox
c#如何为datagridview某几列添加combox?
提供一种解决方案:如图GridView中插入的是DropdownList:<asp:GridView ID="GVData" runat="server" AllowPaging="True" AllowSorting="True" AutoGenerateColumns="False"BorderStyle="Solid" BorderWidth="1px" OnRowDataBound="GVData_RowDataBound" PageSize="15" Width="100%" DataKeyNames ="ID...
求助关于C#中DataGridView控件添加数组的问题
new Student(001,"张三",18);s[1] = new Student(002,"李四",28);dataGridView1.DataSource = s;\/\/绑定数据源效果就如下图。如果你要让原先的int数组元素显示在多个单元格里,那只能是循环逐个给单元格赋值了。没什么意义。一般datagridview都是用来连接显示数据库的数据、进行增删改操作。