【问题标题】:ASP.net & Bootstrap (bootbox.js) Delete ConfirmationASP.net & Bootstrap (bootbox.js) 删除确认
【发布时间】:2014-02-09 18:47:58
【问题描述】:

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>

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

【问题讨论】:

  • 你有没有得到这个工作?我也有类似的情况。

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


【解决方案1】:

几天后我已经完成了这项工作并检查了各种来源。 我在 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 以调用引导框模式对话框。需要注意的重要事项是转义的单引号,我正在传递 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 函数显示引导框确认对话框。取消只会关闭模态表单而不运行 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

    }

【讨论】:

    【解决方案2】:

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

    给你,

    JavaScript 代码:

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

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

    我叫它的重点,

    "=> li id="delClass"> 删除

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

    【讨论】:

      猜你喜欢
      • 2017-01-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-19
      • 2013-04-28
      • 2012-05-24
      • 2015-09-29
      • 2014-07-21
      相关资源
      最近更新 更多