0
我正在使用下面的代碼來使用LINQ和實體框架在datagridview中生成combobox列。c#在LINQ中使用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慣例設置組合框的項目,但對於不同列中的項目會有所不同。這樣,我必須爲每列創建不同的變量。有沒有辦法做到這一點使用通用代碼,其中tablename將從cboSelectTable中選擇,並且該列將按照if語句中所述的索引來選擇。如果可能,請幫助,謝謝。
WinForms,WebForms,WPF或其他? – Richard 2014-10-20 12:16:15
我正在使用WinForms – feather 2014-10-20 12:26:09
爲什麼要在'practices'上做一個'foreach'來做一個'AddRange(practices)'?似乎應該只是沒有'foreach'的'AddRange'或者''添加(名稱)''的'foreach'。 – juharr 2014-10-20 12:27:24