c#在LINQ中使用组合框值

时间:2014-10-20 12:10:43

标签: c# linq datagridview combobox entity-framework-4

我使用以下代码使用LINQ和实体框架在datagridview中生成组合框列。

dgvLoadTable.DataSource = null;
var context = new BatchEntities(); 
var TableName = cboSelectTable.Text.ToString();
var rawData = context.GetType().GetProperty(TableName).GetValue(context, null);
var truncatedData = ((IQueryable<object>)rawData).Take(0);
var source = new BindingSource { DataSource = truncatedData };

dgvLoadTable.DataSource = source;
dgvLoadTable.ReadOnly = false;
dgvLoadTable.AllowUserToAddRows = true;

var practices = (from p in context.TABLE1 select p.PRACTICE).Distinct();

for(int r= 0; r < dgvLoadTable.Rows.Count; r++)
{
    for(int c = 0; c < dgvLoadTable.Columns.Count; c++)
    {
        if(c == 2 || c == 4)
        {
            this.dgvLoadTable[c, r] = new DataGridViewComboBoxCell();
            foreach(var name in practices)
                ((DataGridViewComboBoxCell)dgvLoadTable[c, r]).Items
                                                              .AddRange(practices.ToArray());
        }
    }
}
dgvLoadTable.Refresh();

这里,在for循环中,我使用var实践设置组合框的项目,但对于不同的列,项目将是不同的。这样,我必须为每列创建不同的变量。有没有办法使用通用代码执行此操作,其中tablename将从cboSelectTable中选择,并且该列将由其索引选择,如if语句中所述。如果可能请帮助,谢谢。

1 个答案:

答案 0 :(得分:0)

您可以使用以下代码插入Checkboxrow:

<强> CODE

            DataGridViewCheckBoxColumn chk = new DataGridViewCheckBoxColumn();
            dataGridView1.Columns.Add(chk);
            chk.HeaderText = "Check Data";
            chk.Name = "chk";
            dataGridView1.Rows[2].Cells[3].Value = true;

通常使用“CurrentCell”方法调用单元格...例如:

<强> CODE

private void dgvLoadTable_CelldoubleClick(object sender, DataGridViewCellEventArgs e)
    {
       //do some code here
        if (e.ColumnIndex == 1) // Check the current ColumnIndex...
        {
            //do some code here

        }

所以你不能为每一行设置一个变量。希望这对你有所帮助!