gpt4 book ai didi

Checkbox issue with javascript: when you group the rows the checkboxes disappear(复选框问题:当您对行进行分组时,复选框消失)

转载 作者:bug小助手 更新时间:2023-10-28 13:23:30 25 4
gpt4 key购买 nike



I have a DataTables table. I have 2 viewing modes, the first shows me all the rows as they appear in the database, while the second mode groups these rows according to a certain criterion (using a button called 'Raggruppa'). But I have a problem viewing when I press the Raggruppa button: basically the checkboxes no longer appear

You can see the situation below, in the first case I get the checkboxes, in the grouping mode, however, these are no longer displayed

我有一个DataTables表。我有两种查看模式,第一种模式显示数据库中显示的所有行,第二种模式根据特定条件(使用名为‘Raggruppa’的按钮)对这些行进行分组。但当我按下Raggruppa按钮时,我在查看时遇到了问题:基本上不再显示复选框您可以看到下面的情况,在第一种情况下,我得到了分组模式下的复选框,但是,这些复选框不再显示


enter image description here


This is the javascript code that handles this type of event

这是处理此类事件的javascrip代码


<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<script src="https://cdn.datatables.net/1.10.25/js/jquery.dataTables.min.js"></script>
<script>
$(document).ready(function() {
console.log("Document ready");
var dataTable;
var grouped = false;
var selectedBadge = ''; // Add this global variable to store the selected badge

function initializeDataTable(data) {
if (dataTable) {
dataTable.destroy();
}

if (grouped) {
var groupedData = {};
data.forEach(function(item) {
var groupName = item.id.replace(/\d+/g, '').trim();
if (!groupedData[groupName]) {
groupedData[groupName] = [];
}
groupedData[groupName].push(item);
});

var tableData = [];
for (var groupName in groupedData) {
if (groupedData.hasOwnProperty(groupName)) {
var groupItems = groupedData[groupName];
var badgeText = groupItems[0].badge;
tableData.push({
"id": '<span class="badge">' + badgeText + '</span> ' + groupItems[0].id,
"username": groupItems.map(function(item) { return item.username; }).join('<br>'),
"checkbox": ''
});
}
}

dataTable = $('#userTable').DataTable({
"data": tableData,
"columns": [
{"data": "checkbox"},
{"data": "id"},
{"data": "username"}
]
});
} else {
dataTable = $('#userTable').DataTable({
"data": data,
"columns": [
{
"data": null,
"render": function (data, type, row) {
if (!grouped) {
return '<input type="checkbox" name="selectedUsers[]" value="' + data.id + '">';
} else {
return '';
}
}
},

{
"data": null,
"render": function (data, type, row) {
return '<span class="badge">' + data.badge + '</span> ' + data.id;
}
},
{"data": "username"},
]
});
}
}

function toggleButtonLabel() {
var button = $('#raggruppaButton');
if (grouped) {
button.text("Mostra tutte le righe");
} else {
button.text("Raggruppa");
}
}



function fetchDataAndInitializeTable() {
$.ajax({
url: "/data",
type: "GET",
success: function(response) {
console.log("Data received:", response);
var filteredData = applyBadgeFilter(response);
populateBadgeFilters(response);
initializeDataTable(filteredData);

// Add this to force an update of the DataTable
dataTable.draw();
},
error: function(error) {
console.log("Error:", error);
}
});
}


function applyBadgeFilter(data) {
return selectedBadge ? data.filter(item => item.badge === selectedBadge) : data;
}

function toggleButtonLabel() {
var button = $('#raggruppaButton');
if (grouped) {
button.text("Mostra tutte le righe");
} else {
button.text("Raggruppa");
}
}

function resetBadgeFilters() {
selectedBadge = '';
$('input[name="badgeFilter"]').prop('checked', false);
fetchDataAndInitializeTable();
}


function populateBadgeFilters(data) {
var badgeFilters = $('#badgeFilters');
badgeFilters.empty(); // Remove any existing filters

// Find unique values in column 'badge'
var uniqueBadges = Array.from(new Set(data.map(item => item.badge)));

// Add a filter for each unique badge
uniqueBadges.forEach(function(badge) {
var label = $('<label></label>');
var radio = $('<input type="radio" name="badgeFilter" value="' + badge + '">').appendTo(label);
label.append(badge);
badgeFilters.append(label);
});

// Add the change event for the filter
$('input[name="badgeFilter"]').change(function() {
selectedBadge = $(this).val(); // Aggiorna la variabile selectedBadge
var filteredData = selectedBadge ? data.filter(item => item.badge === selectedBadge) : data;
initializeDataTable(filteredData);
});
}

// Initialize the table when the page loads
fetchDataAndInitializeTable();

$('#raggruppaButton').click(function() {
grouped = !grouped;
toggleButtonLabel();
fetchDataAndInitializeTable();
});


// Add a reset button after the button 'Raggruppa'
$('<button id="resetBadgeFilters">Reset Filtri</button>').insertAfter($('#raggruppaButton'));

// Add click event for reset button
$('#resetBadgeFilters').click(function() {
resetBadgeFilters();
});

//Add a button or event that retrieves selected data from checkboxes

$('#ottieniSelezioneButton').click(function() {
var selectedUsers = $('input[name="selectedUsers[]"]:checked').map(function() {
return this.value;
}).get();
console.log("Utenti selezionati:", selectedUsers);
});


});
</script>

I honestly can't understand what the problem could be, I have a simple html structure

老实说,我不明白问题是什么,我只有一个简单的html结构


<button id="ottieniSelezioneButton">Ottieni Selezione</button>
<button id="raggruppaButton">Raggruppa</button><br><br>
<div id="badgeFilters">
<label><input type="radio" name="badgeFilter" value="" checked>Tutti</label>
</div><br>
<table id="userTable" class="display">
<thead>
<tr>
<th>box</th>
<th>ID</th>
<th>Username</th> <!-- Nuova intestazione per la colonna dei checkbox -->
</tr>
</thead>
</table>

更多回答
优秀答案推荐

Ok, I solve by modifying the initializeDataTable function to include generating checkboxes even when they are in grouping mode

好的,我通过修改InitializeDataTable函数来解决这个问题,即使在分组模式下也包括生成复选框


// ...
if (grouped) {
// ...
for (var groupName in groupedData) {
if (groupedData.hasOwnProperty(groupName)) {
var groupItems = groupedData[groupName];
var badgeText = groupItems[0].badge;
tableData.push({
"id": '<span class="badge">' + badgeText + '</span> ' + groupItems[0].id,
"username": groupItems.map(function(item) { return item.username; }).join('<br>'),
"checkbox": '<input type="checkbox" name="selectedUsers[]" value="' + groupItems[0].id + '">'
});
}
}

更多回答

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com