Neue Tabelle, Zeile, jede 4. Schleife
Wie erstelle ich eine neue Zeile der Tabelle auf jeder 4. Schleife in meinem Razor-Ansicht? Dies ist das erstellen einer neuen Zeile für jede Zahl vor der 4, und dann beendet das erstellen neuer Zeilen:
@{
int i = 0;
}
@foreach (var item in ViewBag.ProgramIdList)
{
if((i / 4) == 0)
{
@:<tr>
}
<td>
<input type="checkbox" name="@item.ProgramId" id="@item.ProgramId" />
<label for="@item.ProgramTitle">@item.ProgramTitle</label>
</td>
if((i / 4) == 0)
{
@:</tr>
}
i++;
}
- Schauen Sie, was Sie tun, logisch. (i / 4) wird eigentlich nie gleich 0 wenn i == 0. Der einzige Grund, es macht ein paar Zeilen ist, weil die Division von zwei ganzen zahlen, wird immer das Ergebnis in eine Ganzzahl .NET hat um um ihn herum, die Wert auf so etwas.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Verwenden Sie den modulo-operator. Für :
und
Wenn die Anzahl der Elemente nicht teilen sich in geraden Zeilen, fügen Sie die restlichen Zellen und einem schließenden tag Zeile nach der Schleife:
Für diejenigen, die hasst die syntax higlight Warnung, die angezeigt wird mit dem code der Antwort oben, es ist die Lösung (der Mechanismus ist in etwa das gleiche):
Jeden tag in der richtigen position (
<td>
innen<tr>
,<tr>
innen<table>
), dann werden Ihre Visual Studio-syntax-highlighter lassen Sie in Ruhe 🙂<tr>
tags escaped als plain-text über das@:
Trennzeichen? Ich hätte gedacht, dass würde ihn zum Ausgang<tr>
i
bis zu einem vielfachen voncells
. Daher die "Letzte Zeile" nie Hinzugefügt wird, in diesem Fall, weili%cells
= 0, nichtcells - 1
i
istbase 0 index
, undcells
bedeutet, dass die Gesamtzahl der Zellen in einer Zeile, es:i = 0, cells = 4;
. Die erste Zelle oder die Zelle mit der Nummer 1 in übereinstimmung der index -0
.@:
syntax: ..Die @: Sequenz zeigt an, dass die Linie der Inhalt, der folgt, sollten so behandelt werden, als ein content-block..Dass die genaue Lösung, die 100% funktioniert.