@Rayzoor

Как добавить блок с данными в уже отрисованную таблицу?

Суть вопроса такова, при загрузке страницы с помощью js рисуется таблица с данными, в каждой строке есть кнопка показать подробнее, как сделать так чтобы при нажатии на кнопку(more) под строкой рисовалось блок или строка с дополнительными данными которые относятся именно к этой строке. Я только начинаю свой путь, а тут нужно доделать то что делали другие, но мне не хватает знаний. Вот так строится таблица.
function showTable(data){

    var output = $('[name="output"]');  

    var str = '\
        <table class="table table-striped table-bordered table-condensed" id="result">'+
        '</table>';
    var table = $(str);


    var headers_order = [
        "cost_education",
        "hour_eduprogramm",
        "number",
        "more",
        "type_edu_programm_text",
        "name_eduprogramm",
        "count_files",
        "action"

    ];

    var headers_title = {
        "name_eduprogramm":"Наименование программы",
        "type_edu_programm_text":"Тип программы",
        "action": "Действия",
        "count_files": "Прикрепленные документы",
        "number":"№ п/п",
        "more": "Подробно",
        "cost_education":"Стоимость обучения",
        "hour_eduprogramm":"Кол-во часов"
    };
    var header_str = "<tr class='info'></tr>";
    var header = $(header_str);



    for(var j = 2; j<headers_order.length; j++){
        var name = headers_order[j];
        var title = headers_title[name];
        var th  ="<th align='center' style='vertical-align: middle'><strong>"+title+"</strong></th>"
        header.append(th);
    }
    table.append(header);


    for(var i =0; i<data.length; i++){
        var td_str="";
        var tr = $("<tr name='programm'></tr>");

        for(var j = 2; j<headers_order.length; j++){
            var name = headers_order[j];

            if(name == "action"){

                var title ='\
                    <button class="btn btn-default" action="edit" title="Редактировать" ><img src="/img/hamburg_edit.png" style="vertical-align: text-top"></button>\
                    <button class="btn btn-default" action="delete" title="Удалить"><img src="/img/cancel.png" style="vertical-align: text-top"></button>\
                    ';
            }
            else if (name == "more")
            {
                var title ='\
                    <button class="btn btn-default" action="more" ><img src="/img/cologne_plus.png" title="Развернуть" style="vertical-align: text-top"></button>\
                ';
            }



             else {

                var title = data[i][name];

                if(name == "address_list"){
                    var address_list="";
                    for(var k=0; k<title.length; k++){
                        var address = title[k]['full_name'];
                        address_list += "<div>"+address+"</div>";
                    }
                    title = address_list;
                }
            }


            td_str ="<td>"+title+"</td>";


            tr.append(td_str);

        }
        tr.data('values',data[i]);
        table.append(tr);


    }


    output.html(table);
}


Была идея записывать данные в скрытый блок, а по нажатию кнопки просто его показывать, возникает проблема что таблица рисуется при загрузке сразу, и данные туда уже никак не передать или я просто не знаю как это сделать.
  • Вопрос задан
  • 47 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы