Использование модуля при работе с нечетными числами
У меня есть список из примерно 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
при извлечении данных... в основном я думаю, что у вас все еще есть некоторые ошибки...)