jQuery UI确认对话框不返回true / false

时间:2013-04-10 17:54:19

标签: javascript jquery asp.net

  $(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;

    }

当我点击gridview中的删除链接按钮时,弹出对话框。但是,在对话框中单击“删除”按钮时,它不会触发我的服务器端单击事件。单击“删除”时,我会返回值“true”。

在此感谢您的帮助。

3 个答案:

答案 0 :(得分:1)

jQuery对话框本质上是异步的。标准confirm()函数会阻止执行,直到返回结果。 jQuery对话框不会停止执行,因此showDeleteConfirmation()始终返回false,并且您的jQuery按钮将其值返回到任何值。如果你想使用jQuery对话框,你的删除按钮的功能将需要有提交表单的代码,可能是在隐藏字段中放入一些ID并在隐藏按钮上调用click()。

答案 1 :(得分:0)

该对话框可防止发生默认操作,因此您需要在Delete按钮功能中提交或执行操作。

因此,返回falsetrue并不符合您的预期。

您需要向此添加更多内容(AJAX以发送到服务器或类似的东西)

"Delete": function ()
              {
                  <add call to function to send data to server>
                  $(this).dialog("close");
              },

答案 2 :(得分:0)

请将删除按钮更改为确认。

使用此代码"Confirm": function ()代替"Delete": function ()