我正在开发基于Windows的应用程序,其中我需要将datagridview中的comboboxcolumns与[Attendance_type]表中的值绑定。此datagridview的数据源将来自[Employees表]。
我目前正在使用此代码执行此操作。
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中的组合框列中的任何记录。
这是我的表单视图,当我点击组合框时,它也没有显示任何内容。
我见过很多关于此的帖子,但没有一个对我有帮助。因为这一切都向我展示了我所做的一切。
请帮忙解决我在哪里犯了错误。
由于
答案 0 :(得分:2)
将datagridview的“启用行编辑”属性设置为false。所以它没有在组合框内显示数据。