Как получить все значения строк табулятора? - PullRequest
0 голосов
/ 21 января 2019

У меня есть редактируемая таблица с использованием табулятора.

Все в порядке, но проблема в том, что я не могу получить все значения строки, когда нажимаю кнопку "Сохранить"

Я пытаюсь это:

$(document).ready(function() {
var tabledata = [
 	{id:1, name:"Oli Bob", age:"12", col:"red", dob:""},
 	{id:2, name:"Mary May", age:"1", col:"blue", dob:"14/05/1982"},
 	{id:3, name:"Christine Lobowski", age:"42", col:"green", dob:"22/05/1982"},
 	{id:4, name:"Brendon Philips", age:"125", col:"orange", dob:"01/08/1980"},
 	{id:5, name:"Margret Marmajuke", age:"16", col:"yellow", dob:"31/01/1999"},
 ];
 
var table = new Tabulator("#example-table", {
 	height:205,
 	data:tabledata,
 	layout:"fitColumns",
 	columns:[
	 	{title:"Name", field:"name", width:150},
	 	{title:"Age", field:"age", visible: false},
	 	{title:"Favourite Color", field:"col"},
	 	{title:"Date Of Birth", field:"dob", sorter:"date", align:"center"},
 	],
 	footerElement:"<button id='save' class='pull-left' title='Save'>Save</button> ",
});

	$(document).on("click", "#save", function(){
 		/* var data = $("#example-table").tabulator("getData"); */
 		var data = $('#example-table').getData();
   	    console.log('save clicked');
	});
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<link href="https://unpkg.com/tabulator-tables@4.1.4/dist/css/tabulator.min.css" rel="stylesheet">
<script type="text/javascript" src="https://unpkg.com/tabulator-tables@4.1.4/dist/js/tabulator.min.js"></script>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/tabulator/4.1.5/js/jquery_wrapper.js"></script>


<div id="example-table"></div>

При запуске выдается ошибка

Ошибка типа: $ .widget не является функцией

Когда я пытаюсь использовать:

var data = $("#example-table").tabulator("getData");

, я получаю эту ошибку:

TypeError: $ (...). Tabulator не является функцией

при использовании:

var data = $('#example-table').getData();

ошибка:

Ошибка типа: $ (...). getData не является функцией

КогдаЯ пытаюсь определить таблицу, используя этот метод:

$("#example-table").tabulator({ //table setup options });

он ничего не показывает (пусто).

Может кто-нибудь сказать мне, что не так?Или дайте мне ссылку, как получить все значения строк?

Вы также можете попробовать в jsfiddle, отметьте здесь

Ответы [ 3 ]

0 голосов
/ 24 января 2019

На основании моего последнего комментария, который объявил таблицу внутри функции.

Это мой способ получить конкретное значение, когда нажмите кнопку сохранения

$(document).ready(function() {

function generateGrid(){
  var tabledata = [
    {id:1, name:"Oli Bob", age:"12", col:"red", dob:""},
    {id:2, name:"Mary May", age:"1", col:"blue", dob:"14/05/1982"},
    {id:3, name:"Christine Lobowski", age:"42", col:"green", dob:"22/05/1982"},
    {id:4, name:"Brendon Philips", age:"125", col:"orange", dob:"01/08/1980"},
    {id:5, name:"Margret Marmajuke", age:"16", col:"yellow", dob:"31/01/1999"},
];
  var table = new Tabulator("#example-table", {
     height:205,
     data:tabledata,
     layout:"fitColumns",
     columns:[
       {title:"Name", field:"name", width:150},
       {title:"Age", field:"age", visible: false},
       {title:"Favourite Color", field:"col", editor:"input", formatter:
       		function (row, formatterParams){
            let rowId = row.getData().id;
            let color = row.getData().col;
            
            return '<input type="text" class="txtAU" name="txtAU" id="txtAU'+rowId+'" value="' + color +'"/>';
            }
       },
       {title:"Date Of Birth", field:"dob", sorter:"date", align:"center"},
     ],
     footerElement:"<button id='save' class='pull-left' title='Save'>Save</button> ",
});
}
	
  $(document).on("click", "#view", function(){
  	generateGrid();
  	$('#example-table').show();
  });
  
	$(document).on("click", "#save", function(){
		
    var data_ = "";
    var i = 1;
    $("input[name='txtAU']").each(function(){
        data_=data_+$(this).val()+";";
        i++;
    });
    console.log(data_);
   	console.log('save clicked');
	});
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<link href="https://unpkg.com/tabulator-tables@4.1.4/dist/css/tabulator.min.css" rel="stylesheet">
<script type="text/javascript" src="https://unpkg.com/tabulator-tables@4.1.4/dist/js/tabulator.min.js"></script>



<button id='view' class='pull-left' title='Save'>Show Table</button> 

<div id="example-table" style="display:none"></div>

И если вы ищете получить все значения и объявленную таблицу, как обычно, вы можете использовать

var data = table.getData();

как ответ Гаурава.Спасибо, надеюсь, это поможет кому-то.

0 голосов
/ 27 января 2019

Проблема в том, что вы объявляете табличную переменную внутри функции, поэтому ее область действия ограничена.

Если вы объявите ее в глобальной области, а затем назначите ее внутри функции, она будет доступнавезде.

//global scope
var table

//assign inside table - notice no "var"
function generateGrid(){
    table = new Tabulator("#example-table", { ....
}

//you can then use it everywhere
var data = table.getData();
0 голосов
/ 21 января 2019

Вместо var data = $ ('# example-table'). GetData ();

Используйте, var data = table.getData ();

что вы делаетецепочка getData () для функции jquery, но вы должны реализовать getData () для экземпляра таблицы Tabulator, который является таблицей var, которую вы создали выше.

Надеюсь, это поможет.Спасибо!

...