ColdFusion — подход к таблице данных запроса и действиям CRUD

Мой вопрос больше ориентирован на подход, чем на программирование или ошибки.

У меня есть запрос, который запускается и собирает набор данных. Затем я хочу использовать возвращаемые значения этого запроса для построения таблицы на странице со списком всех значений. Наряду с этим мне нужно иметь некоторые действия с каждым значением, например:

my_val (edit) (delete)
my_cal (edit) (delete)

Где изменить и удалить кнопки. Итак, кнопка редактирования у меня работает с javascript onClick, где я перенаправляюсь на другую страницу, но кнопка удаления мне нужна, чтобы делать три вещи:

  1. подскажите юзер, можно удалить? msg (используя для этого javascript (подтверждение возврата...).
  2. выполнить запрос на удаление
  3. обновить страницу (самостоятельно)

Есть ли лучшая модель подхода для этого? Легче ли вызвать две встроенные команды javascript? Использовать функции javascript? Может функция ColdFusion?

любые указатели будут полезны! Благодарю.


person bcar    schedule 05.07.2012    source источник


Ответы (4)


Я думаю, что самый простой способ удаления - это что-то вроде этого. Я предполагаю, что вы используете jQuery или какую-либо другую библиотеку или получаете материал JavaScript.

YourPage.cfm
<cfif structKeyExists(URL, "Action") and URL.Action eq "delete">
    <cfququery>
       // delete the item using the id provided
    </cfquery>
</cfif>

<cfquery name="GetFresh">
    // get fresh info
</cfquery>

<cfloop query="GetFresh">
    Something <span class='DeleteLink' data-someid='#SomeID#'>delete</span> <br>
</cfloop>

<script type='text/javascript'>

    $DeleteLinks = $("span.DeleteLink");

    $DeleteLink.click(function() {
        var Confirm = confirm('Are you sure you want to delete?');
        if (Confirm == true) {
           var SomeID = $(this).data("someid");
           var URL = "YourPage.cfm?Action=delete&SomeID=" + SomeID;
           window.location = URL;
        }
    });
</script>
person Evik James    schedule 05.07.2012
comment
Это немедленно удаляет мои записи, если я обновляю страницу. Любая идея, что я делаю неправильно? - person ErikMes; 10.10.2014

Я думаю, вы близки к тому, что вы ищете.

Я бы сделал удаление так, чтобы подтвердить в JS, затем просто отправить запрос на другую страницу, которая выполняет процесс удаления, а затем отправляет вашего пользователя обратно на исходную страницу (давая вам обновление).

Это был бы простой маршрут, вы также можете сделать это с помощью AJAX, чтобы вызвать страницу процесса и внести изменения в фоновом режиме. Затем вам нужно либо обновить JS, либо вручную обработать изменения на странице.

person Limey    schedule 05.07.2012
comment
Да, я бы сказал, что это достаточно просто. Если у вас еще нет инфраструктуры AJAX или вы не используете встроенный материал CF AJAX, просто откажитесь от этого и используйте подход перенаправления. - person jboursiquot; 05.07.2012

Самый простой и быстрый способ - просто иметь обработчик onclick, который возвращает true/false на основе выбора пользователя.

    <a href="delete.cfm?id=1" onclick="return confirm('Are you sure you want to delete his?')">Delete</a> 

Есть, конечно, гораздо более элегантные способы сделать это, но описанное выше является базовым и работает.

person emeier    schedule 06.07.2012
comment
Я не видел ответа Эвика ... более полного и делает то же самое. - person emeier; 06.07.2012

Это то, что я использую:

!function($, window, undefined) {
    var document = window.document;
    $(document).delegate('input:submit[name="Delete"][value="Delete"]','click',function() {
        return window.confirm(this.title || 'Delete this record?');
    });
}(jQuery, window);
person Phillip Senn    schedule 06.07.2012