31.10.2012, 10:00
|
|
Профессор
|
|
Регистрация: 10.10.2012
Сообщений: 153
|
|
Динамическое формирование таблицы
Здравствуйте! Всем удачного дня и хорошего настроения!
Столкнулась с такой проблеммой - есть данные, полученные через 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
Почему? или чтобы динамически сформировать таблицу есть какая-то хитрость?
|
|
31.10.2012, 11:16
|
|
Профессор
|
|
Регистрация: 10.10.2012
Сообщений: 153
|
|
чем дальше тем интереснее)))
насчет подгрузки данных в таблицу - оказалось все гораздо проще..
$.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": {
"Name":["Station name","Station ID","Observation date","Temperaature","Pressure","Wind direction","Wind speed"],
"Abr": ["Name","Sti","Date","ttt","ppp","dd","ff"]
}, |
|
|
31.10.2012, 11:20
|
|
Профессор
|
|
Регистрация: 10.10.2012
Сообщений: 153
|
|
названия колонок устанавливаются так:
"aoColumns": [
{ "sTitle": "Engine" },
{ "sTitle": "Браузер" }
]
Но как это сделать через myJson?
|
|
09.11.2012, 09:03
|
|
Профессор
|
|
Регистрация: 10.10.2012
Сообщений: 153
|
|
Здравствуйте)
Возможно ли динамически формировать колонки таблицы? уже давно не могу сообразить - как это сделать...
Со строками таблицы все просто, а вот с колонками - сложнее:
"aaData":myJson.aaData_0,
"aoColumns":myJson.Def_aaData_0.Abr
такой код правильно устанавливает число колонок, и заполняет строчки...
Но вот названия колонок не отображаются...
|
|
09.11.2012, 09:52
|
sinistral
|
|
Регистрация: 28.03.2011
Сообщений: 5,418
|
|
Сообщение от Sveta
|
Возможно ли динамически формировать колонки таблицы? уже давно не могу сообразить - как это сделать...
|
такого нет в API -> нет возможности добавить столбец.
|
|
09.11.2012, 10:02
|
|
Профессор
|
|
Регистрация: 10.10.2012
Сообщений: 153
|
|
плохо...а если параметру "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'}
|
|
09.11.2012, 10:15
|
sinistral
|
|
Регистрация: 28.03.2011
Сообщений: 5,418
|
|
очевидно, что что-то не так с mas должно работать.
я не телепат, поэтому пишите где-нибудь рядом debugger, или console.log(mas) и вперёд, изучать свой скрипт.
|
|
09.11.2012, 10:28
|
|
Профессор
|
|
Регистрация: 10.10.2012
Сообщений: 153
|
|
Так в том и дело, что все уже проверено и перепроверено..((((
на 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); возвращает - то все работает
не знаю что и делать уже...если бы я поняла в чем ошибка...
или может можно как-то названия столбцов потом задать? количество-то правильно формируется в случае массива...
|
|
12.11.2012, 10:21
|
|
Профессор
|
|
Регистрация: 10.10.2012
Сообщений: 153
|
|
с таблицей намучилась...в итоге заработало так:
$.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..у меня не работает почему-то..но ошибка может быть и в другом месте)
|
|
18.04.2013, 01:14
|
Новичок на форуме
|
|
Регистрация: 16.03.2012
Сообщений: 5
|
|
Доброго времени суток!
Не знаю как у кого, а у меня второй код из первого поста работает на ура.
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);
|
|
|
|