Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 31.10.2012, 10:00
Аватар для Sveta
Профессор
Отправить личное сообщение для Sveta Посмотреть профиль Найти все сообщения от Sveta
 
Регистрация: 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

Почему? или чтобы динамически сформировать таблицу есть какая-то хитрость?
Ответить с цитированием
  #2 (permalink)  
Старый 31.10.2012, 11:16
Аватар для Sveta
Профессор
Отправить личное сообщение для Sveta Посмотреть профиль Найти все сообщения от Sveta
 
Регистрация: 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"]
    
  },
Ответить с цитированием
  #3 (permalink)  
Старый 31.10.2012, 11:20
Аватар для Sveta
Профессор
Отправить личное сообщение для Sveta Посмотреть профиль Найти все сообщения от Sveta
 
Регистрация: 10.10.2012
Сообщений: 153

названия колонок устанавливаются так:
"aoColumns": [
	{ "sTitle": "Engine" },
	{ "sTitle": "Браузер" }
             ]

Но как это сделать через myJson?
Ответить с цитированием
  #4 (permalink)  
Старый 09.11.2012, 09:03
Аватар для Sveta
Профессор
Отправить личное сообщение для Sveta Посмотреть профиль Найти все сообщения от Sveta
 
Регистрация: 10.10.2012
Сообщений: 153

Здравствуйте)
Возможно ли динамически формировать колонки таблицы? уже давно не могу сообразить - как это сделать...
Со строками таблицы все просто, а вот с колонками - сложнее:
"aaData":myJson.aaData_0,
"aoColumns":myJson.Def_aaData_0.Abr

такой код правильно устанавливает число колонок, и заполняет строчки...
Но вот названия колонок не отображаются...
Ответить с цитированием
  #5 (permalink)  
Старый 09.11.2012, 09:52
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

Сообщение от Sveta
Возможно ли динамически формировать колонки таблицы? уже давно не могу сообразить - как это сделать...
такого нет в API -> нет возможности добавить столбец.
Ответить с цитированием
  #6 (permalink)  
Старый 09.11.2012, 10:02
Аватар для Sveta
Профессор
Отправить личное сообщение для Sveta Посмотреть профиль Найти все сообщения от Sveta
 
Регистрация: 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'}
Ответить с цитированием
  #7 (permalink)  
Старый 09.11.2012, 10:15
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

очевидно, что что-то не так с mas должно работать.

я не телепат, поэтому пишите где-нибудь рядом debugger, или console.log(mas) и вперёд, изучать свой скрипт.
Ответить с цитированием
  #8 (permalink)  
Старый 09.11.2012, 10:28
Аватар для Sveta
Профессор
Отправить личное сообщение для Sveta Посмотреть профиль Найти все сообщения от Sveta
 
Регистрация: 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); возвращает - то все работает
не знаю что и делать уже...если бы я поняла в чем ошибка...
или может можно как-то названия столбцов потом задать? количество-то правильно формируется в случае массива...
Ответить с цитированием
  #9 (permalink)  
Старый 12.11.2012, 10:21
Аватар для Sveta
Профессор
Отправить личное сообщение для Sveta Посмотреть профиль Найти все сообщения от Sveta
 
Регистрация: 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..у меня не работает почему-то..но ошибка может быть и в другом месте)
Ответить с цитированием
  #10 (permalink)  
Старый 18.04.2013, 01:14
Новичок на форуме
Отправить личное сообщение для mistbow Посмотреть профиль Найти все сообщения от mistbow
 
Регистрация: 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);
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Динамическое удаление строк таблицы Tankist Events/DOM/Window 16 03.07.2013 16:42
Динамическое изменение background-a в ячейках таблицы Gh0stik Events/DOM/Window 15 02.08.2012 19:40
Формирование таблицы Tmin10 jQuery 11 07.10.2011 08:25
Динамическое изменение таблицы Mar4elo Элементы интерфейса 2 14.01.2011 22:39
ДИнамическое изминение таблицы Legi Элементы интерфейса 1 08.02.2009 04:10