【发布时间】:2011-05-19 15:24:24
【问题描述】:
我正在开发基于 Windows 的应用程序,在该应用程序中,我需要将 datagridview 内的组合框列与 [Attendance_type] 表中的值绑定。这个datagridview的数据源将来自[Employees table]。
我目前正在使用此代码进行此操作。
dgvEmployee.Columns.Clear();
dgvEmployee.AutoGenerateColumns = false;
DataGridViewTextBoxColumn branchcolumn = new DataGridViewTextBoxColumn();
branchcolumn.DataPropertyName = "Name";
branchcolumn.HeaderText = "Employee Name";
branchcolumn.Name = "Name";
branchcolumn.Width = 200;
dgvEmployee.Columns.Add(branchcolumn);
var metaattend = from Metaatt in dataDC.Metaattend
where Metaatt.Status == true
orderby Metaatt.Metaname
select Metaatt;
List<Metaattend> obj_ma = new List<Metaattend>();
obj_ma = metaattend.ToList();
var Empvar = from Emp in dataDC.Employees
join dept in dataDC.Dept on Emp.Deptid equals dept.Id
join branch in dataDC.Branch on Emp.Branchid equals branch.Id
where Emp.Status == true & Emp.Name.Contains(txtbranch.Text)
& (Emp.Deptid == Convert.ToInt64(cmbDept.SelectedValue) | cmbDept.SelectedValue.ToString() == "0")
& (Emp.Branchid == Convert.ToInt64(cmbBranch.SelectedValue) | cmbBranch.SelectedValue.ToString() == "0")
orderby Emp.Name
select new { Emp.Id, Emp.Name };
DataTable dt_employee = new DataTable();
using (clsGeneral obj_gen = new clsGeneral())
{
dt_employee = obj_gen.LINQToDataTable(Empvar);
}
dgvEmployee.DataSource = dt_employee;
string[] datemonth = cmbMonth.Text.Split('-');
int i = DateTime.DaysInMonth(Convert.ToInt32(datemonth[1]), GetMonthNo(datemonth[0]));
for (int j = 0; j < i; j++)
{
DataGridViewComboBoxColumn daycomboColumn = new DataGridViewComboBoxColumn();
daycomboColumn.HeaderText = (j + 1).ToString();
daycomboColumn.Width = 50;
daycomboColumn.DataSource = obj_ma;
daycomboColumn.DisplayMember = "Metaname";
daycomboColumn.ValueMember = "Id";
dgvEmployee.Columns.Add(daycomboColumn);
}
使用此代码已成功执行,但表单未在 datagridview 内的组合框列中显示任何记录。
这是我的表单视图,当我点击组合框时,它也没有显示任何内容。
我看过很多关于这个的帖子,但没有一个对我有帮助。因为这一切都向我展示了我所做的同样的事情。
请帮忙说明我在哪里做错了。
谢谢
【问题讨论】:
-
你确定有匹配
Metaatt.Status == true的记录吗? -
是的,列表 obj_ma 中有 4 条记录
标签: c# windows datagridview