«Разорвать» цикл while в ASP.NET (C #) - PullRequest
0 голосов
/ 01 июня 2011

Я использую следующий код для вывода записей из моей базы данных:

  while(reader.Read()) 

  { 
      Label1.Text += "<div>" + reader["Title"] + "</div>";

  }

Тем не менее, я бы хотел, чтобы каждая вторая запись для "класса" была добавлена ​​в мой блок

Итак, мой HTML может выглядеть так:

<div>Title1</div>
<div class="two">Title2</div>
<div>Title3</div>
<div class="two">Title4</div>
...

Большое спасибо за любые указатели.

Ответы [ 5 ]

4 голосов
/ 01 июня 2011

Простой способ - просто использовать быстрое логическое значение, чтобы определить, добавлять класс или нет:

bool useClass = true;

while(reader.Read()) 

      { 
          useClass = !useClass;
          Label1.Text += (useClass)? "<div class=\"alt\">" : "<div>";
          Label1.Text += reader["Title"] + "</div>";

      }
0 голосов
/ 01 июня 2011

Если всегда будет 2, вам не нужно беспокоиться о математических операциях мода и приращения. Вы можете просто использовать логическое значение:

bool useTwo = false;

while(reader.Read())
{
    Label1.Text += (useTwo ? "<div class=\"two\">" : "<div>") + 
                    reader["Title"] + "</div>";
    useTwo = !useTwo;
}

Это просто создает быстрое переключение, которое не накапливается. Конечно, математические циклы довольно незначительны, но в итоге все складывается.

0 голосов
/ 01 июня 2011

Добавьте счетчик, затем добавляйте 1 каждый раз в цикле. Используйте оператор мода для добавления класса через раз.

int i = 0;
while(reader.Read())
{
    if(i % 2 == 0) 
    { 
        Label1.Text += "<div>" + reader["Title"] + "</div>";
    }
    else 
    { 
        Label1.Text += "<div class=\"two\">" + reader["Title"] + "</div>";
    }
    i++;
}
0 голосов
/ 01 июня 2011
int index = 0;
while(reader.Read())
{
    bool addClass = (++index % 2 == 0);
    Label1.Text += (addClass ? "<div class=\"two\">" : "<div>") + 
       reader["Title"] + "</div>";
}
0 голосов
/ 01 июня 2011

Как-то так должно работать.

Просто есть счетчик, и для каждого нечетного числа меняйте <div> на <div class="two">

int count;
while(reader.Read()) 
{
  Label1.Text += (count % 2 == 0 ? "<div>" : "<div class=\"two\">") + 
       reader["Title"] + "</div>";
  count++;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...