lastbudget и lastactual - это списки
Эти списки заполняют 2 столбца в ультрасети инфракрасной логистики
Итак, сетка уже определила источник данных. Эти 2 столбца я программно добавил в сетку, в которой есть источник данных.
(dgvBudget - это имя ультрасетки)
int rowIndex = dgvBudget.Rows.Count;
if (half == "Second Half Budget")
{
for (int i = 6; i < rowIndex; i++)
{
var row = dgvBudget.Rows[i];
row.Cells["PrevFY"].Value = lastbudget[i];
row.Cells["Actual_c"].Value = lastactual[i];
}
for (int i = 0; i < 6; i++)
{
var row = dgvBudget.Rows[i];
row.Cells["PrevFY"].Value = lastactual[i];
row.Cells["Actual_c"].Value = 0;
}
}
else
{
for (int i = 0; i < rowIndex; i++)
{
var row = dgvBudget.Rows[i];
row.Cells["PrevFY"].Value = lastbudget[i];
row.Cells["Actual_c"].Value = lastactual[i];
}
}
Моя цель -создать новый источник данных и импортировать связанные данные в сетку данных с 3 новыми столбцами, которые я создал, чтобы сократить MS при выполнении.
В настоящий момент для выполнения * 1022 требуется 8-10 секунд. *
private void bringPreviousData()
{
Stopwatch stopwatch = Stopwatch.StartNew();
List<string> lastactual = new List<string>();
List<string> lastbudget = new List<string>();
Control cmbBudgetCode = csm.GetNativeControlReference("17dd127e-7b02-48e9-a7bb-e98164aea713");
EpiDataView bhView = (EpiDataView)(oTrans.EpiDataViews["GLBudgetHd"]);
if (!dgvBudget.DisplayLayout.Bands[0].Columns.Exists("PrevFY"))
{
dgvBudget.DisplayLayout.Bands[0].Columns.Add("PrevFY", "Previous FY Budgeted");
dgvBudget.DisplayLayout.Bands[0].Columns["PrevFY"].Style = Infragistics.Win.UltraWinGrid.ColumnStyle.Currency;
}
if (!dgvBudget.DisplayLayout.Bands[0].Columns.Exists("FiscalMonth"))
{
dgvBudget.DisplayLayout.Bands[0].Columns.Add("FiscalMonth", "Month");
SetColumnReadOnly("FiscalMonth", true);
}
else
{
string[] monthNames = { "April", "May", "June", "July", "August", "September", "October", "November", "December", "January", "February", "March" };
for (int i = 0; i < monthNames.Length; i++)
{
dgvBudget.Rows[i].Cells["FiscalMonth"].Value = monthNames[i];
}
}
string half = cmbBudgetCode.Text;
lastactual = GetLastActual(half);
lastbudget = GetLastBudget(half);
int rowIndex = dgvBudget.Rows.Count;
if (half == "Second Half Budget")
{
for (int i = 6; i < rowIndex; i++)
{
var row = dgvBudget.Rows[i];
row.Cells["PrevFY"].Value = lastbudget[i];
row.Cells["Actual_c"].Value = lastactual[i];
}
for (int i = 0; i < 6; i++)
{
var row = dgvBudget.Rows[i];
row.Cells["PrevFY"].Value = lastactual[i];
row.Cells["Actual_c"].Value = 0;
}
}
else
{
for (int i = 0; i < rowIndex; i++)
{
var row = dgvBudget.Rows[i];
row.Cells["PrevFY"].Value = lastbudget[i];
row.Cells["Actual_c"].Value = lastactual[i];
}
}
decimal total = 0m;
foreach (UltraGridRow row in dgvBudget.Rows)
{
total += Convert.ToDecimal(row.Cells["PrevFY"].Value);
}
if (Config.typeofAccount != "Overtime")
{
if (GetAcctType(bhView.CurrentDataRow["SegValue1"].ToString()))
{
nbrPrevStatTotal.Value = total;
}
else
{
nbrPrevTotal.Value = total;
}
}
else
{
nbrPrevTotal.Value = total;
}
stopwatch.Stop();
MessageBox.Show(stopwatch.ElapsedMilliseconds.ToString());
}
Итак, на данный момент этот код делает
- Получает 2 списка данных
- Затем добавляет 2 столбца, если их не существует (prevFy, иFiscalMonth)
- Затем заполняет ультрасетку текущим источником данных плюс мои добавленные данные и столбцы
- Затем Суммирует значения в ячейках для отображения в текстовом поле
МожетПожалуйста, помогите, как я могу ускорить это, потому что сейчас это работает, это работает, это просто так ооооооооооооооооооооооооо *