Подтвердить что ты не робот

Как создать таблицы из данных столбцов вместо данных строки в HTML?

Согласно этой статье в W3 Schools, можно создать базовую таблицу в формате HTML следующим образом:

<table border="1">
    <tr>
        <td>row 1, cell 1</td>
        <td>row 1, cell 2</td>
    </tr>
    <tr>
        <td>row 2, cell 1</td>
        <td>row 2, cell 2</td>
    </tr>
</table>

Сверху, кажется, что каждый вводит данные по строкам.

У меня есть ситуация, когда мне нужно вводить все данные по столбцам. Возможно ли подобное?

<table border="1">
    <tc>
        <td>row 1, cell 1</td>
        <td>row 2, cell 1</td>
    </tc>
    <tc>
        <td>row 1, cell 2</td>
        <td>row 2, cell 2</td>
    </tc>
</table>
4b9b3361

Ответ 1

Лучше всего отображать таблицу по строкам, а затем использовать javascript для инверсии таблицы

http://jsfiddle.net/CsgK9/2/

Следующий код инвертирует таблицу (этот пример кода использует jquery)


    $("table").each(function() {
        var $this = $(this);
        var newrows = [];

        $this.find("tr").each(function(){
            var i = 0;

            $(this).find("td").each(function(){
                i++;
                if(newrows[i] === undefined) { newrows[i] = $(""); }
                newrows[i].append($(this));
            });
        });

        $this.find("tr").remove();
        $.each(newrows, function(){
            $this.append(this);
        });
    });

UPDATE:

Вот версия, которая также работает с элементами th: http://jsfiddle.net/zwdLj/

Ответ 2

Вы можете отображать таблицы в столбцах, используя таблицу в таблице...

<table>
<tr>
<td>
    <table>
        <thead>
            <tr>
                <td>column 1 header 1</td>
            </tr>
        </thead>
        <tbody>
            <tr>
                <td>column 1 row 1</td>
            </tr>
            <tr>
                <td>column 1 row 2</td>
            </tr>
        </tbody>
    </table>
</td>
<td>
    <table>
        <thead>
            <tr>
                <td>column 2 header 1</td>
            </tr>
        </thead>
        <tbody>
            <tr>
                <td>column 2 row 1</td>
            </tr>
            <tr>
                <td>column 2 row 2</td>
            </tr>
        </tbody>
    </table>
</td>
</tr>
</table>

Ответ 3

Нет, это невозможно в HTML.

Ответ 4

Я был в той же ситуации, когда мне нужно добавить данные по столбцу. Но эта проблема решается простым методом. Я использовал ветку в этом примере, но вы легко ее получите.

<table>
<tr>
    <th>id</th>
    <th>title</th>
    <th>ISBN</th>
    <th>author_id</th>
    <th>publisher_id</th>
</tr>

{% for book in books %}   //for loop is used before the <tr> tag
    <tr>
        <td>{{ book.id }}</td>
        <td>{{ book.title }}</td>
        <td>{{ book.isbn }}</td>
        <td>{{ book.publisher.id }}</td>
        <td>{{ book.author.id }}</td>
    {% endfor %}
    </tr>

Примечание: {{это данные для печати}}

Ответ 5

Просто сделал это, используя пучок uls, заполненный lis, казался намного более чистым, чем все, что я мог найти. Вам нужно будет сделать что-то вроде добавления класса ко всем uls и установки его стиля для отображения: inline-table.

@* pseudo html/razor *@
@foreach(var col in columns){
    <ul class='tableColumn'>
        foreach(var data in col){
            <li>data</li>
        }
    </ul>    
}

и некоторый стиль

.tableColumn {
    border: 1px solid;
    display: inline-table;
}