Использование модуля при работе с нечетными числами

У меня есть список из примерно 50~60 элементов, которые я хочу иметь возможность динамически разделить на несколько столбцов. Я использую вложенный цикл for и списки делятся правильно, когда есть четное количество элементов. Однако, когда есть нечетное количество элементов, остальные (модули) элементы не учитываются. Я играл с этим некоторое время и еще не пробил золото. Я надеюсь, что кто-то умнее меня сможет и поможет.

Благодарю.

    for (int fillRow = 0; fillRow < numOfCols; fillRow++)
    {
            for (int fillCell = 0; fillCell < (siteTitles.Count / numOfCols); fillCell++)
            {
                linkAddress = new HyperLink();
                linkAddress.Text = tempSites[fillCell].ToString();
                linkAddress.NavigateUrl = tempUrls[fillCell].ToString();

                mainTbl.Rows[fillCell].Cells[fillRow].Controls.Add(linkAddress);
            }

      }

1 ответ

Решение

Ну да, проблема здесь:

fillCell < (siteTitles.Count / numOfCols)

Это деление будет округляться, например, если есть 13 названий и numOfCols 5, это даст 2 - это означает, что пункты 10-12 не будут использоваться.

Я предлагаю вместо этого перебрать все элементы и обработать строку и столбец для каждого элемента:

for (int i = 0; i < siteTitles.Count; i++)
{
    int row = i / numOfCols;
    int col = i % numOfCols;
    // Fill in things using row, col and i
}

(Не совсем понятно, что вы делаете, когда используете siteTitles в состоянии цикла и tempSites в теле цикла, и вы не используете fillRow при извлечении данных... в основном я думаю, что у вас все еще есть некоторые ошибки...)

Другие вопросы по тегам