0
  $(function ()
  {
      $("#dialog-confirm").dialog(
      {
          autoOpen: false,
          resizable: false,
          height: 240,
          modal: true,

           buttons: {
              "Delete": function ()
              {
                  $(this).dialog("close");
                  return true;

              },
              Cancel: function ()
              {
                  $(this).dialog("close");
                  return false;
              }
          },
          close: function() {
            ;
            }
      });
  });

  function ShowDeleteConfirmation()
  {
      var activeEmelent = document.activeElement;
      if (activeEmelent.innerHTML == 'Delete')
      {
        $('#dialog-confirm').dialog('open');
        return false;
      }
  }

//aspx コード

<asp:LinkButton ID="lbDelete" runat="server" Text="Delete" CssClass="wecc-grid-link" data-cmd="delete" OnClick="Delete_Click" OnClientClick=" return ShowDeleteConfirmation();"  ></asp:LinkButton> 

//サーバー側イベント

protected void Delete_Click(object sender, EventArgs e)
    {
        _deleteClicked = true;
        LinkButton lb = sender as LinkButton;
        GridViewRow row = lb.Parent.NamingContainer as GridViewRow;

        if (row.RowState != (DataControlRowState.Selected | DataControlRowState.Edit) &&
           row.RowState != (DataControlRowState.Alternate | DataControlRowState.Selected | DataControlRowState.Edit))
        {
            Delete(row);
        }
        else
        {
            SetRowState(row.RowIndex, DataControlRowState.Normal);
        }

        gvSaveState.DataSource = this.Data;
        gvSaveState.AllowSorting = true;

        gvSaveState.DataBind();
        lbAddItem.Visible = true;
        lbRefreshData.Visible = true;

    }

グリッドビューでリンクの削除ボタンをクリックすると、ダイアログがポップアップします。ただし、ダイアログの [削除] ボタンをクリックすると、サーバー側のクリック イベントが発生しません。削除をクリックすると、値「true」が返されます。

ここであなたの助けに感謝します。

4

3 に答える 3

1

jQuery ダイアログは基本的に非同期です。標準の confirm() 関数は、結果が返されるまで実行をブロックします。jQuery ダイアログは実行を停止しないため、showDeleteConfirmation() は常に false を返し、jQuery ボタンは値を何も返しません。jQuery ダイアログを使用する場合は、削除ボタンの関数にフォームを送信するコードが必要です。たとえば、非表示フィールドに ID を入力し、非表示ボタンで click() を呼び出します。

于 2013-04-10T18:04:20.890 に答える
0

Deleteダイアログはデフォルトのアクションが発生しないようにするため、ボタン関数でアクションを送信または実行する必要があります。

だから戻ってくるfalsetrue、あなたが期待することをしません。

これにさらに追加する必要があります(サーバーに送信するAJAXなど)

"Delete": function ()
              {
                  <add call to function to send data to server>
                  $(this).dialog("close");
              },
于 2013-04-10T18:00:55.763 に答える
0

削除ボタンを 確認 に変更してください。

"Confirm": function () 代わりにこのコードを使用する"Delete": function ()

于 2013-04-10T18:04:35.207 に答える