C# c在LINQ中使用组合框值
我使用以下代码使用LINQ和实体框架在datagridview中生成combobox列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
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
}