2015-10-20 4 views
0

У меня есть список слов, которые должны быть расположены в алфавитном порядке, но «вертикальные».
Вот как это выглядит сейчас:
Размещение элементов по алфавиту в вертикальных столбцах

 
+-----+-----+-----+-----+ 
| AAA | BBB | CCC | DDD | 
+-----+-----+-----+-----+ 
| EEE | FFF | GGG | HHH | 
+-----+-----+-----+-----+ 


Каждое слово встраивать в <td> внутри <table>, и она всегда ограничена 4 штук в строке таблицы.
Как я могу отобразить эти слова по вертикали, как это:

 
+-----+-----+-----+ 
| AAA | EEE | and | 
+-----+-----+-----+ 
| BBB | FFF | so | 
+-----+-----+-----+ 
| CCC | GGG | on | 
+-----+-----+-----+ 
| DDD | HHH |  | 
+-----+-----+-----+ 


Количество слов динамически контролируется, он может получить больше/меньше в любое время.
Это старый проект, разработанный в классическом ASP, но я также мог бы работать с идеями, исходящими из VB.NET.


Текущие коды состоит в следующем (сократить до важных частей):

do until recordSet.EOF 
    temphtml = temphtml & " <tr>" & vbcrlf 'this is where i collect all the <tr> and <td> 
    for i = 1 to 4 
     tempItem = recordSet("NameOfItem") 
     temphtml = temphtml & tempbez & vbcrlf 
     recordSet.MoveNext 
     if recordSet.EOF then exit for 
    next 
    temphtml = temphtml & " </tr>" & vbcrlf 
loop 
+3

То, что вы хотите, кристально чистое. Не могли бы вы показать нам, что вы пытались достичь такой цели? – varocarbas

+1

Что вам нужно [Магическая функция 'Mod'] (http://www.codeguru.com/csharp/.net/net_asp/article.php/c19315/The-Magical-Mod-Function.htm) * (особенно бит в конце под названием «Mod to the Rescue») * – Lankymart

+0

@varocarbas. Вы правы, я забыл эту часть. Я редактировал сообщение открытия с текущим состоянием кода. – seph

ответ

1

Использование WebForm VB.NET. Добавить серверную таблицу на странице ASPX:

<asp:Table ID="tableWords" runat="server"></asp:Table> 

VB.NET

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load 
    Dim tableRows As New List(Of TableRow)() 
    Dim maxRows As Integer = 4 
    Dim index As Integer = 0 

    Dim recordSet As New DataSet() 
    ' TODO: get the items from the database 
    Dim nbItems As Integer = recordSet.Tables(0).Rows.Count 

    For i As Integer = 0 To nbItems - 1 
     Dim item As String = recordSet.Tables(0).Rows(i)("NameOfItem").ToString() 

     If i < maxRows Then 
      Dim tr As New TableRow() 
      Dim td As New TableCell() 
      td.Text = item 
      tr.Cells.Add(td) 
      tableRows.Add(tr) 
     Else 
      If i Mod maxRows - 1 = 0 Then 
       index = 0 
      End If 
      Dim td As New TableCell() 
      td.Text = item 
      tableRows(index).Cells.Add(td) 
      index += 1 
     End If 
    Next 

    Dim cellsToAdd As Integer = maxRows - (nbItems Mod maxRows) 
    Dim startIndex As Integer = maxRows - cellsToAdd 

    If cellsToAdd < maxRows Then 
     For i As Integer = startIndex To cellsToAdd 
      Dim td As New TableCell() 
      td.Text = "&nbsp;" 
      tableRows(i).Cells.Add(td) 
     Next 
    End If 

    tableItems.Rows.AddRange(tableRows.ToArray) 
End Sub 

Edit: Использование DataSet.

0

Проблема, как вы, несомненно, обнаружили, заключается в том, что синтаксис таблицы html является по строкам, а не по столбцу. Если вам нужно сначала сделать столбцы, а затем строки, вам нужно перепрыгнуть через несколько дополнительных обручей.

Dim row(3), counter, r 
Const RowCount = 4 
... 
counter = 0 
Do Until recordSet.EOF 
    r = counter Mod RowCount '- figure out which row we're at 
    row(r) = row(r) & "<td>" & recordSet("NameOfItem") & "</td>" 
    counter = counter + 1 
    recordSet.Movenext 
Loop 
If counter Mod RowCount > 0 Then '- add empty cells to any incomplete rows 
    For r = Counter Mod RowCount to RowCount - 1 
     row(r) = row(r) & "<td></td>" 
    Next 
End If 
For r = 0 to RowCount - 1 '- assemble the table 
    row(r) = "<tr>" & row(r) & "</tr>" & vbCrLf 
    temphtml = temphtml & row(r) 
Next 

Выше быстрый и грязный (читай: непроверенные) код, но он должен получить Вас на правильном пути. Кроме того, если вам нужна строка заголовка в таблице, вам нужно будет как-то отслеживать количество столбцов.