C# c在LINQ中使用组合框值

C# c在LINQ中使用组合框值,c#,linq,datagridview,combobox,entity-framework-4,C#,Linq,Datagridview,Combobox,Entity Framework 4,我使用以下代码使用LINQ和实体框架在datagridview中生成combobox列 dgvLoadTable.DataSource = null; var context = new BatchEntities(); var TableName = cboSelectTable.Text.ToString(); var rawData = context.GetType().GetProperty(TableName).GetValue(context, null); var trunca

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

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实践设置combobox的项,但是对于不同的列,这些项将是不同的。这样,我必须为每列创建不同的变量。有没有一种方法可以使用通用代码来实现这一点,其中tablename将从cboSelectTable中选择,列将按照if语句中所述的索引进行选择。如果可能,请提供帮助,谢谢。

您可以插入带有以下代码的复选框行:

代码

通常使用CurrentCell方法调用单元格。。。e、 g:

代码


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

WinForms、WebForms、WPF或其他什么?为什么你在实践上做foreach只是为了做一个AddRangepractices?看起来这应该只是AddRange,没有foreach或您添加名称的foreach。
            DataGridViewCheckBoxColumn chk = new DataGridViewCheckBoxColumn();
            dataGridView1.Columns.Add(chk);
            chk.HeaderText = "Check Data";
            chk.Name = "chk";
            dataGridView1.Rows[2].Cells[3].Value = true;
private void dgvLoadTable_CelldoubleClick(object sender, DataGridViewCellEventArgs e)
    {
       //do some code here
        if (e.ColumnIndex == 1) // Check the current ColumnIndex...
        {
            //do some code here

        }