Я пытаюсь реализовать встроенную кнопку внутри таблицы, которая немедленно изменяет / записывает дату сегодняшнего дня в базу данных. Нажатие на кнопку «изменить» должно записать фактическую дату в базе данных.
Я уже нашел способ создать встроенную кнопку для изменения логического значения внутри базы данных. Например, чтобы активировать / деактивировать продукт.
Теперь мне нужно то же самое, только с тем фактом, что когда я нажимаю кнопку, она должна записывать сегодняшнюю дату в базе данных.
Создание кнопки
function doCustomRenderColumn($fieldName, $fieldData, $rowData, &$customText, &$handled)
{
if ($fieldName == 'active') {
$dataAttributes = sprintf('data-id="%s" data-active="%s"', $rowData['id'], $fieldData);
$customText = '<span class="product-info" style="display: none;" ' . $dataAttributes. '></span>' . $customText;
$customText .= '<button class="btn btn-default inline-button" style="margin-left: 25px;">Change</button>';
$handled = true;
}
}
Обработка параметров и выполнение запроса
function DoPrepare() {
if (GetApplication()->IsGETValueSet('id') && GetApplication()->IsGETValueSet('active')) {
$id = GetApplication()->GetGETValue('id');
$active = GetApplication()->GetGETValue('active');
$sql = "UPDATE product SET active=$active WHERE id=$id";
$this->GetConnection()->ExecSQL($sql);
echo json_encode(array("active" => $active));
exit;
}
Обработка нажмите кнопку и позвоните AJAX
// OnAfterPageLoad event body
function prepareInlineButtons() {
$('button.inline-button').click(function() {
var self = $(this);
var checkboxControl = self.siblings('.pg-row-checkbox');
var productId = self.siblings('.product-info').data('id');
var activity = self.siblings('.product-info').data('active');
$.getJSON(location.href, {id: productId, active: activity == 1 ? 0 : 1}, function (data) {
self.siblings('.product-info').data('active', data.active);
if (data.active == 1) {
checkboxControl.addClass('checked')
}
else {
checkboxControl.removeClass('checked')
}
})
})
}
prepareInlineButtons();