Datatable равное количество записей в обоих столбцах - PullRequest
0 голосов
/ 31 октября 2019

Мне бы хотелось, чтобы в обоих столбцах было одинаковое количество записей, даже если это означает, что первый столбец не заполняет страницу снизу на последней странице. Первая страница начнется с 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;
}
...