Я динамически добавляю строки и столбцы в таблицу данных. Строки добавляются, насколько я вижу, но как только я запускаю код, ничего не появляется. Как будто он обновляет таблицу после завершения цикла foreach? Новичок вопрос. Сожалею.
summaryTable.Columns.Add("StationName", typeof(string));
summaryTable.Columns.Add("DepartmentCode", typeof(string));
var row = summaryTable.NewRow();
foreach (var item in issuesByClass)
{
row.SetField("StationName", item.StationName);
row.SetField("DepartmentCode", item.DepartmentCode);
foreach (var itemClass in item.Lookup)
{
if (!itemClassLookup.ContainsKey(itemClass.Key)) continue;
var itemClassValue = itemClassLookup[itemClass.Key];
// Ensure column hasn't been added before
if (!summaryTable.Columns.Contains(itemClassValue))
{
summaryTable.Columns.Add(itemClassValue, typeof(decimal));
}
row.SetField(itemClassValue, itemClass.Sum());
}
if (!summaryTable.Columns.Contains("GrandTotal"))
{
summaryTable.Columns.Add("GrandTotal", typeof(decimal));
}
row.SetField("GrandTotal", item.GrandTotal);
}
return summaryTable;
Пример приложения для маленьких окон:
public Form1()
{
this.InitializeComponent();
this.Test();
}
public void Test()
{
var dt = new DataTable();
var subs = new[] { "Sub 1", "Sub 2", "Sub 3" };
var row = dt.NewRow();
foreach (var sub in subs)
{
if (!dt.Columns.Contains("Subs"))
{
dt.Columns.Add("Subs");
}
row.SetField("Subs", sub);
}
dt.Columns.Add("Test");
row.SetField("Test", 1M);
this.dataGridView1.DataSource = dt;
}