表单加载时我正在做
DataGridViewComboBoxColumn ComboTextCol = new DataGridViewComboBoxColumn();
ComboTextCol.Headertext = "some";
ComboTextCol.DataSource = GetEmployees().Select(e => new { Name = e.LastName + " ," + e.FirstName, ID = e.EmployeeID }).ToList();
ComboTextCol.ValueMember = "ID";
ComboTextCol.DisplayMember = "Name";
datagrid.Columns.Insert(0,ComboTextCol)
我也试过这个datagrid.Columns.Add(ComboTextCol)
。
GetEmployees提供员工数据 我看到了列而不是数据...... ??
答案 0 :(得分:1)
首先,您建议的代码甚至不会编译 - 您在一个区域中缺少大写,在最后一行的末尾缺少分号(而不是构建问题,但我相信要正确显示您想要的姓氏后面的空格,而不是之前的空格。其次,如果你修改它,那么没有明显的理由不显示成员。您确定GetEmployees
的返回值至少包含元素吗?
请考虑以下事项:
我们的员工类型......
public class Employee
{
public Employee() { }
public Employee(int id, string firstName, string lastName)
{
EmployeeID = id;
FirstName = firstName;
LastName = lastName;
}
public int EmployeeID { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
}
在我们表单的加载事件中......
private void myForm_Load(object sender, EventArgs e)
{
var employeeA = new Employee(28, "Charlie", "Brown");
var employeeB = new Employee(42, "Familiar", "Stranger");
var employees = new List<Employee>();
employees.Add(employeeA);
employees.Add(employeeB);
var myDataGridView = new DataGridView();
var myDataGridComboBoxColumn = new DataGridViewComboBoxColumn();
myDataGridComboBoxColumn.HeaderText = "Employee";
myDataGridComboBoxColumn.ValueMember = "ID";
myDataGridComboBoxColumn.DisplayMember = "Name";
myDataGridComboBoxColumn.DataSource = employees.Select(employee => new
{
Name = employee.LastName + ", " + employee.FirstName,
ID = employee.EmployeeID
}).ToList();
myDataGridView.Columns.Insert(0, myDataGridComboBoxColumn);
Controls.Add(myDataGridView);
myDataGridView.Dock = DockStyle.Fill;
}
结果是绝对的:预期元素出现在下拉框中。试一试,然后用你的方法来摆脱你的构建错误,从某种程度上看,似乎神奇地从这一点开始 - 你没注意到它们吗?请注意您是如何设法“看到”任何内容的。