【发布时间】:2018-07-31 21:24:15
【问题描述】:
我尝试根据文件 (settlementPeriod) 中有多少组数据来动态创建选项卡,每组都有自己的表格。
然后我添加了创建的表并将它们添加到 DataGridViews 列表中,以便以后操作它们。
DataGridView dgv = new DataGridView();
tableList.Add(dgv);
foreach (var dgv in tableList)
for (int l = 0; l < dgv.Rows.Count; l++)
但是,程序为 tableRows (dgv.Rows) 返回一个空集,并且永远不会进入循环。它只返回不是动态生成的 DataGridView 的数据。 (例如,如果我将 dataGridView1 添加到 tableList)
我尝试遍历选项卡列表(因为每个选项卡只有一个表),但也没有成功
foreach(var page in tabList)
DataGridView dgv = page.Controls.OfType<DataGridView>() as DataGridView;
我在下面包含了所有相关代码。任何帮助表示赞赏。 供参考,“结果”是一类数据。 谢谢//。
private List<DataGridView> tableList = new List<DataGridView>();
private void CreateTables()
{
var listItemsBySettlementPeriod = results.GroupBy(items => items.settlementPeriod)
.Select(group => group.ToList())
.ToList();
for (int i = 0; i < listItemsBySettlementPeriod.Count(); i++)
{
tabControl1.TabPages.Add(listItemsBySettlementPeriod[i][0].settlementPeriod);
tabList.Add(tabControl1.TabPages[(i + 1)]);
DataGridView dgv = new DataGridView();
tableList.Add(dgv);
dgv.Height = 300; dgv.Width = 1200;
DataTable dt = new System.Data.DataTable();
DataRow row;
string[] header = {"bidType", "date", "unitID", "price", "offerVolume"};
for (int j = 0; j < listItemsBySettlementPeriod[i].Count(); j++)
{
if (j == 0)
for (int k = 0; k < header.Count(); k++)
dt.Columns.Add(header[k], typeof(string));
row = dt.NewRow();
foreach (var value in listItemsBySettlementPeriod[i])
{
row[0] = value.bidType;
row[1] = value.acceptTime;
row[2] = value.unitID;
row[3] = value.price;
row[4] = value.volume;
}
dt.Rows.Add(row);
}
dgv.DataSource = dt;
tabControl1.TabPages[(i + 1)].Controls.Add(dgv);
}
foreach (var dgv in tableList)
{
for (int l = 0; l < dgv.Rows.Count; l++) //CONDITIONAL FORMATING
{
string val = "";
if (dgv.Rows[l].Cells[0].Value != null)
val = dgv.Rows[l].Cells[0].Value.ToString();
if (val == "OFFER")
dgv.Rows[l].DefaultCellStyle.BackColor = Color.OrangeRed;
else if (val == "BID")
dgv.Rows[l].DefaultCellStyle.BackColor = Color.CornflowerBlue;
else
dgv.Rows[l].DefaultCellStyle.BackColor = Color.LightGray;
}
dgv.Refresh();
}
}
【问题讨论】: