Мне бы хотелось, чтобы в обоих столбцах было одинаковое количество записей, даже если это означает, что первый столбец не заполняет страницу снизу на последней странице. Первая страница начнется с 41, но на последней странице я хочу, чтобы остальные были равны. У меня есть этот flgLastPage bool, но я хочу использовать что-то немного лучше.
public List<DataForExcelExport> GetData()
{
var list = new List<DataForExcelExport>();
int ROWS_PER_PAGE = 41;
int MaxRow = 0;
string connectionString = ConfigurationManager.ConnectionStrings[sqlDataSource1.ConnectionString].ConnectionString;
string selectCommandText = sqlDataSource1.SelectCommand;
SqlDataAdapter dataAdapter = new SqlDataAdapter(selectCommandText, connectionString);
DataTable dataTable = new DataTable();
dataAdapter.Fill(dataTable);
bool flgLastPage = false;
for (int i = 0; i < dataTable.Rows.Count; i++)
{
DataRow dr = dataTable.Rows[i];
var item = new DataForExcelExport();
SetItemData(dr, item, true);
if (i + ROWS_PER_PAGE < dataTable.Rows.Count)
{
SetItemData(dataTable.Rows[i + ROWS_PER_PAGE], item, false);
}
list.Add(item);
if (flgLastPage == false)
{
if ((i + 1) % ROWS_PER_PAGE == 0)
{
i += ROWS_PER_PAGE;
int remaining = dataTable.Rows.Count - (i + 1);
if (remaining < 2 * ROWS_PER_PAGE)
{
ROWS_PER_PAGE = remaining / 2 + remaining % 2;
flgLastPage = true;
}
}
}
int maxrow = i + ROWS_PER_PAGE;
if (maxrow == dataTable.Rows.Count)
{
break;
}
}
return list;
}