在更新面板中调用时,Javascript Confirm Box未显示

时间:2013-03-07 04:43:34

标签: c# javascript asp.net

我在点击转发器中的链接按钮并且已经通过某些条件时,尝试显示一个javascript确认框。

My Repeater位于Ajax手风琴内容模板中的更新面板内。

<Accordion><UpdatePanel><Repeater>this is where the link button is</Repeater></UpdatePanel></Accordion>

这是我的代码,我把它放在Repeater_ItemCommand方法中:

 Page.ClientScript.RegisterStartupScript(this.GetType(), "ConfirmDelete", "return confirm('Are You Sure Want To Delete?');");

我已经查看了几个代码解决方案,但仍然无法正常工作。 我做错了什么?

更新:

如果我从html调用javascript。它工作得很好。 代码:

<asp:LinkButton ID="lbDelete" runat="server" OnClientClick="return confirm('Are you sure want to delete?');">Delete</asp:LinkButton>

但我仍然无法从背后的代码中调用它

6 个答案:

答案 0 :(得分:1)

尝试此操作(第四个参数设置为true):

Page.ClientScript.RegisterStartupScript(this.GetType(), "ConfirmDelete", "return confirm('Are You Sure Want To Delete?');", true);

答案 1 :(得分:1)

试试这个:

page.RegisterStartupScript(this, this.GetType(), "confirmDelete", "return confirm('confirm?\.');", true);

另请检查:http://forums.asp.net/t/1363887.aspx

答案 2 :(得分:1)

试试这个

ScriptManager.RegisterStartupScript(this, typeof(string), "ConfirmDelete", 
    "return confirm('Are You Sure Want To Delete?');", true);

修改

示例 客户端添加此

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
    <script type="text/javascript">
        function ShowConfirmation() {
            if (confirm("Are You Sure Want To Delete?") == true) {
                //Calling the server side code after confirmation from the user
                alert("Deleted");
            }
        }
    </script>

服务器端c#代码

Page.ClientScript.RegisterStartupScript(this.GetType(), "showAl", "ShowConfirmation();", true);

答案 3 :(得分:1)

使用this示例

 string sJs = "function ConfirmDelete() { return confirm("Are you sure?"); }
      Page.ClientScript.RegisterClientScriptBlock(GetType(), "jscode", sJs, true);  

答案 4 :(得分:1)

你应该以这种方式将js放在转发器上。

<asp:Repeater runat="server" ID="rep">
    <ItemTemplate>
        <asp:Button runat="server" ID="btnDelete" CommandName="ConfirmDelete" OnClientClick="return confirm('Are You Sure Want To Delete?');" />
    </ItemTemplate>
</asp:Repeater>

此外,在数据绑定期间,您需要将ID设置为按钮的CommandArgument属性,以便在转发器的项目命令中,您可以知道要删除哪一个。

答案 5 :(得分:1)

您可以使用Repeater_ItemDataBound事件来实现它。你只需要在控件被绑定时用button / linkbutton注册javascript。下面的代码块将给你一个粗略的想法

    protected void rpt_ItemDataBound(object source, RepeaterCommandEventArgs e)
    {
      if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType==  ListItemType.AlternatingItem)
       {
          LinkButton btn = (LinkButton)e.Item.FindControl("btnDelete");
          btn.Attributes.Add("onclick", "if ( ! confirm( 'Delete this record?' )) return false; ");

       } 
    }

即使您的控件位于ajax accordian面板中,这也会有效。

这样,脚本将被绑定到项目模板中的每个linkbutton项目。此代码查找Item或AlternatingItem行,使用FindControl方法查找btnDelete控件,然后将onclick属性添加到Attributes集合。结果是,当用户单击“删除LinkBut​​ton”时,将弹出“确定/取消”对话框以确认删除。

您可以使用以下参考链接

找到相同的更多信息

Reference