none
DataGridComboBoxColumn 根据DataGrid中的数据显示问题 RRS feed

  • 问题

  • 我在DataGrid显示员工信息,想在表格里实现呈现和修改数据。

    员工工种用DataGridComboBoxColumn来显示(工种用了一个数据源来填充)。

    怎么样才能让DataGridComboBoxColumn 列根据DataGrid中的工种Id显示正确的值呢?

    2012年12月24日 5:25

全部回复

  • 你好!

    DataGrid 是 Framework 1.1 时的控件,Framework 2.0 以及后使用 DataGridView 控件代替原来的 DataGrid 控件。

    在 DataGridView 控件上述问题使用默认绑定就可以了,如下代码:

    public partial class Sample : Form
    {
        public Sample()
        {
            InitializeDemo();
        }
    
        void InitializeDemo()
        {
            var categories = new List<EmployeeCategory>
            {
                new EmployeeCategory{ EmployeeCategoryId = 1, Name = "Category1"},
                new EmployeeCategory{ EmployeeCategoryId = 2, Name = "Category2"}
            };
    
            var employees = new List<Employee> 
            { 
                new Employee{ EmployeeId =1, Name = "Employee1", Category = 1 },
                new Employee{ EmployeeId =2, Name = "Employee2", Category = 2 }
            };
    
            var col1 = new DataGridViewTextBoxColumn()
            {
                HeaderText = "EmployeeId",
                DataPropertyName = "EmployeeId"
            };
            var col2 = new DataGridViewTextBoxColumn()
            {
                HeaderText = "Name",
                DataPropertyName = "Name"
            };
            var col3 = new DataGridViewComboBoxColumn()
            {
                HeaderText = "Category",
                DataPropertyName = "Category",
                DisplayMember = "Name",
                ValueMember = "EmployeeCategoryId",
                DataSource = categories
            }; 
    
            var dg = new DataGridView { AutoGenerateColumns = false, Dock = DockStyle.Fill };
    
            dg.Columns.Add(col1);
            dg.Columns.Add(col2);
            dg.Columns.Add(col3);
    
            dg.DataSource = employees;
    
            this.Controls.Add(dg);
        }
    
        public class Employee
        {
            public int EmployeeId { get; set; }
            public string Name { get; set; }
            public int Category { get; set; }
        }
    
        public class EmployeeCategory
        {
            public int EmployeeCategoryId { get; set; }
            public string Name { get; set; }
        }
    
        public class DemoData
        {
            public string Name { get; set; }
            public decimal Value { get; set; }
        }
    }


    知识改变命运,奋斗成就人生!

    2012年12月24日 5:44
    版主