Как изменить код для удаления элемента после подтверждения?

Мой код удаляет элемент, прежде чем я его подтвержу. Как я могу внести изменения, чтобы он удалял элемент после подтверждения. Вот код javascript:

<script type="text/javascript">
    var _source;
    var _popup;

    function showChild_Delete(source) {
        this._source = source;
        this._popup = $find('popupChild_Delete');
        this._popup.show();
    }

    function btnChild_Delete_Click() {  
        this._popup.hide();
        __doPostBack(this._source.name, '');
    }                     
</script>

Код asp.net вызывает js-код:

<asp:ImageButton ID="btnChild_Delete" runat="server" SkinID="delete" OnClientClick="showChild_Delete(this); return false;"
                                                    CommandName="deleteChild" CausesValidation="False" CommandArgument='<%# Eval(childID) %>' />

Код С#:

 if (e.CommandName == "deleteChild")

    {
        hashTable.Add(childID, e.CommandArgument);
        sqlData.GetDataTable(sproc_delChild, hashTable);

        gvChild.SelectedIndex = -1;
        pnlChild_Upload.Visible = false;
        this.upnlChildUpload.Update();

        RefreshChild();
    }

Я буду признателен за любую помощь.


person lawzlo    schedule 13.12.2011    source источник


Ответы (2)


Вы хотели бы сделать что-то на стороне клиента в javascript, побуждая их принять свое решение, прежде чем делать это...

<script type="text/javascript">
    function btnChild_Delete_Click() {  
        this._popup.hide();

        // the _doPostBack is triggering the delete. simply writing something here.
        if (!confirm('Are you sure?')) return;

        __doPostBack(this._source.name, '');
    }                     
</script>

РЕДАКТИРОВАТЬ: чтобы сделать это со стилизованным окном подтверждения, я бы сделал следующее (пример - псевдокод для иллюстрации логического потока).

  1. Сделайте DIV для подтверждения удаления. Стилизуйте его, как вам нравится в CSS, и скройте его (либо с помощью display:none, либо за пределами экрана с полями.

    <div id="confirmationBox">
        <p>Are you sure?</p>
        <button id="doDelete">Delete</button>
    </div>
    
  2. Измените свой скрипт, чтобы вызвать функцию, которая показывает/скрывает подтверждение DIV:

    function buttonConfirmDelete_Click {
        // 1. display the confirmation box.
    }
    
    function buttonDoDelete_Click {
        __doPostBack(this._source.name, '');
        // 2. hide the confirmation box.
    }
    

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

конечно, есть более чистые способы сделать это, но похоже, что вы ищете быстрое и простое решение.

Это ответ на ваш вопрос?

person one.beat.consumer    schedule 13.12.2011
comment
Привет. Спасибо за ваш ответ. Он работает, но дает окно браузера, стиль которого отличается от моего сайта. Как заголовок окна, цвет, размер. Как я могу это решить? - person lawzlo; 13.12.2011
comment
Я бы посоветовал сделать DIV где-нибудь в вашем коде для панели подтверждения, чтобы вы могли стилизовать ее с помощью CSS, как и любой другой элемент HTML. Просто измените эту строку, чтобы отобразить всплывающее окно и получить ответ пользователей. - person one.beat.consumer; 13.12.2011

Этот ответ на вопрос, который я задал себе, содержит полное решение, использующее диалоговое окно jquery-ui для всплывающего диалогового окна подтверждения.

Возможно, вы сможете адаптировать его к любой используемой вами библиотеке javascript.

person Joe    schedule 13.12.2011