Динамическое формирование таблицы
Здравствуйте! Всем удачного дня и хорошего настроения!
Столкнулась с такой проблеммой - есть данные, полученные через Ajax и по этим данным нужно сформировать таблицу. Сложность в том, что количество столбцов мы узнаем только получив наши данные - количество, название, сами данные кот. нужно в эту таблицу поместить - все есть в получаемом файле. вот чего не понятно-то:
var default_options = { "
bProcessing": true ,
aaData":[['Москва','27612','2012-10-29 06:00','2.7','1000','270','2',],['Нара','27612','2012-10-29 06:00','3.7','1012','260','2',],['Малоярослявнец','27612','2012-10-29 06:00','4.7','1033','280','2',],] ,
aoColumns": [{ 'sTitle': 'Name'},{ 'sTitle': 'Sti'},{ 'sTitle': 'Date'},{ 'sTitle': 'ttt'},{ 'sTitle': 'ppp'},{ 'sTitle': 'dd'},{ 'sTitle': 'ff'},]
};
$('#example').dataTable(default_options);
вот такой код работает, табица формируется,но здесть я сама данные прописываю в скрипте, а если эти данные поместить в переменные и написать так:
var head="[{ 'sTitle': 'Name'},{ 'sTitle': 'Sti'},{ 'sTitle': 'Date'},{ 'sTitle': 'ttt'},{ 'sTitle': 'ppp'},{ 'sTitle': 'dd'},{ 'sTitle': 'ff'},] ";
var body="[['Москва','27612','2012-10-29 06:00','2.7','1000','270','2',],['Нара','27612','2012-10-29 06:00','3.7','1012','260','2',],['Малоярослявнец','27612','2012-10-29 06:00','4.7','1033','280','2',],]";
var default_options = { "
bProcessing": true ,
aaData": body,
aoColumns":head
};
$('#example').dataTable(default_options);
то получаю ошибку: DataTables warning (table id = 'example'): Requested unknown parameter '1' from the data source for row 0 Почему? или чтобы динамически сформировать таблицу есть какая-то хитрость? |
чем дальше тем интереснее)))
насчет подгрузки данных в таблицу - оказалось все гораздо проще..
$.getJSON("data_m.json", function (myJson) {
var table="<div id='demo'><table cellpadding='0' cellspacing='0' border='0' class='display' id='example'></table></div>";
$('#container').html('');
$('#container').append(table);
var default_options = {
"bProcessing": true ,
"aaData":myJson.aaData_0,
"aoColumns": [{ 'sTitle': 'Name'},{ 'sTitle': 'Sti'},{ 'sTitle': 'Date'},{ 'sTitle': 'ttt'},{ 'sTitle': 'ppp'},{ 'sTitle': 'dd'},{ 'sTitle': 'ff'},]
};
$('#example').dataTable(default_options);
});
Данные в таблицу загружаются просто...а вот как быть с названиями колонок?? строчка "aoColumns":myJson.Def_aaData_0.Abr делает так, что количество колонок верное, но названия не отображаются myJson.Def_aaData_0[ это Код:
"Def_aaData_0": { |
названия колонок устанавливаются так:
"aoColumns": [
{ "sTitle": "Engine" },
{ "sTitle": "Браузер" }
]
Но как это сделать через myJson? |
Здравствуйте)
Возможно ли динамически формировать колонки таблицы? уже давно не могу сообразить - как это сделать... Со строками таблицы все просто, а вот с колонками - сложнее: "aaData":myJson.aaData_0, "aoColumns":myJson.Def_aaData_0.Abr такой код правильно устанавливает число колонок, и заполняет строчки... Но вот названия колонок не отображаются... |
Цитата:
|
плохо...а если параметру "aoColumns" передать строку или массив?
таблицу мне менять потом не нужно, когда формируется html-страничка - формируется и моя табличка, просто каждый раз она будет с разным количеством столбцов..я вот чего понять не могу: почему такой код работает:
"aoColumns": [
{ "sTitle": "Name" },
{ "sTitle": "Sti" },
{ "sTitle": "Date" },
{ "sTitle": "ttt" },
{ "sTitle": "ppp"}
]
А такой нет? "aoColumns":mas где mas это массив { 'sTitle': 'Name'},{ 'sTitle': 'Sti'},{ 'sTitle': 'Date'},{ 'sTitle': 'ttt'},{ 'sTitle': 'ppp'} |
очевидно, что что-то не так с mas :) должно работать.
я не телепат, поэтому пишите где-нибудь рядом debugger, или console.log(mas) и вперёд, изучать свой скрипт. |
Так в том и дело, что все уже проверено и перепроверено..((((
на alert(mas); выводит { 'sTitle': 'Name'},{ 'sTitle': 'Sti'},{ 'sTitle': 'Date'},{ 'sTitle': 'ttt'},{ 'sTitle': 'ppp'},{ 'sTitle': 'dd'},{ 'sTitle': 'ff'} Что интересно-то - количество столбцов он формирует правильное! но названия не пишет((( я также пробовала со строкой msgh = [{ 'sTitle': 'Name'},{ 'sTitle': 'Sti'},{ 'sTitle': 'Date'},{ 'sTitle': 'ttt'},{ 'sTitle': 'ppp'},{ 'sTitle': 'dd'},{ 'sTitle': 'ff'},] если пишу "aoColumns":msgh то не работает(даже количество не правильное)...а если копирую в "aoColumns": то что мне alert(msgh); возвращает - то все работает не знаю что и делать уже...если бы я поняла в чем ошибка... или может можно как-то названия столбцов потом задать? количество-то правильно формируется в случае массива... |
с таблицей намучилась...в итоге заработало так:
$.getJSON("data.json", function (myJson) {
var table="<div id='demo'><table cellpadding='0' cellspacing='0' border='0' class='display' id='example'><thead id = 'headTable'></thead><tbody id = 'bodyTable'></tbody><tfoot></tfoot></table></div>";
$('#container').html('');
$('#container').append(table);
var colName="";
var mystr="<tr>";
for(var i=0; i<myJson.Def_aaData_0.Abr.length; i++){
colName="<th>"+myJson.Def_aaData_0.Abr[i]+"</th>"
mystr=mystr+colName;
}
mystr=mystr+"</tr>";
$('#headTable').html('');
$('#headTable').append(mystr);
//Таблица
var default_options = {
"aaData":myJson.aaData_0,
"aoColumns":myJson.Def_aaData_0.Abr
};
$('#example').dataTable(default_options);
});
если это проще можно сделать..поделитесь знаниями) только я не ручаюсь за работу в InternetExplorer..у меня не работает почему-то..но ошибка может быть и в другом месте) |
Доброго времени суток!
Не знаю как у кого, а у меня второй код из первого поста работает на ура.
var head=[{ 'sTitle': 'Name'},{ 'sTitle': 'Sti'},{ 'sTitle': 'Date'},{ 'sTitle': 'ttt'},{ 'sTitle': 'ppp'},{ 'sTitle': 'dd'},{ 'sTitle': 'ff'},];
var body=[['Москва','27612','2012-10-29 06:00','2.7','1000','270','2',],['Нара','27612','2012-10-29 06:00','3.7','1012','260','2',],['Малоярослявец','27612','2012-10-29 06:00','4.7','1033','280','2',],];
var default_options = {
bProcessing: true ,
aaData: body,
aoColumns: head
};
$('#example').dataTable(default_options);
|
| Часовой пояс GMT +3, время: 16:10. |