ASP.net& Bootstrap(bootbox.js)删除确认

时间:2014-02-09 18:47:58

标签: javascript asp.net twitter-bootstrap modal-dialog

如何在asp.net中实现备用确认框。

<asp:LinkButton ID="btndelete" runat="server" CommandArgument='<%#Eval("ID")%>' CommandName="delete" CssClass="glyphicon glyphicon-trash" data-toggle="popover" data-placement="top" OnClientClick="return ConfirmDelete();" data-content="Delete this record"></asp:LinkButton>

<script type="text/javascript">
    function ConfirmDelete()
    {
         bootbox.confirm("Are you sure?", function (result)
         {
             if (result)
             {
                return true;
             } else
             {
                return false;
             }
         });
    }

</script>

但它无效...服务器端事件触发(回发)在确认框按钮单击之前。

2 个答案:

答案 0 :(得分:2)

几天后我就开始工作并检查各种来源了。 我在GridView中有一个LinkBut​​ton。

ASPX

<asp:TemplateField ShowHeader="False">
  <ItemTemplate>
  <asp:LinkButton ID="lnkBtnDelete" runat="server" CssClass="mylink" CausesValidation="false" Text="Delete" OnClick="lnkBtnDelete_Click">    </asp:LinkButton>
 </ItemTemplate>
</asp:TemplateField> 

在GridView OnRowDatabound事件中,将OnClientClick属性设置为Javascript以调用bootbox模式对话框。需要注意的重要事项是转义的单引号,我正在传递LinkBut​​ton的UniqueID。 (因此,将为GridView中的所有行调用此方法并传递正确的Id。)

后面的代码中的GridView1_RowDataBound

  protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
    {

        if (e.Row.RowType == DataControlRowType.DataRow)
        {

            GridViewRow gvrow = ((GridViewRow)e.Row);

            LinkButton lnkBtnDelete = gvrow.FindControl("lnkBtnDelete") as LinkButton;

            lnkBtnDelete.OnClientClick = "return confirmDelete(this,\'" + lnkBtnDelete.UniqueID + "\');";

        }
    }

confirmDelete Javascript函数显示bootbox确认对话框。取消将仅关闭模式窗体而不运行LinkBut​​ton单击事件,但确认按钮将运行与LinkBut​​ton关联的内置Javascript回发事件。如果将鼠标悬停在LinkBut​​ton上,您将看到正在调用的事件,因为我们传入了UniqueID,所以它会在GridView中的每一行都正确设置。

<强>的Javascript

function confirmDelete(sender, uniqueID) {
    if ($((sender)[0]).attr("confirmed") == "true") { return true; }

    bootbox.confirm("Are you sure you want to delete?", function (confirmed) {
        if (confirmed) {
            var link = $(sender)[0];
            //javascript: __doPostBack('BuildingCodeCompliance2$GridView1$ctl02$lnkBtnDelete', '');
            javascript: __doPostBack(uniqueID, '');
        }
    });

    return false;
}

LinkBut​​ton_Click事件将只有您的常规删除功能。

LinkBut​​ton点击代码

  protected void lnkBtnDelete_Click(object sender, EventArgs e)
    {

        LinkButton lnk = sender as LinkButton;
        GridViewRow gvrow = lnk.NamingContainer as GridViewRow;

        // Delete your record here

    }

答案 1 :(得分:0)

我刚刚为mvc4实现了它,我希望我的代码对你有所帮助。

你走了,

JavaScript代码:

$('#delClass')。click(function(){

        bootbox.confirm("Hello world!", function(result) {                
          if (result) {                                             
            alert("Prompt dismissed");                              
          } else {
            alert("Hi <b>"+result+"</b>");                          
          }
        });
    });

我的名字是,

“=&gt; li id =”delClass“&gt;删除

DelClass是一个Id,如果你想在那里添加一个类名,那么你可以在该代码中添加“.youclassname”。