0

每当单击中继器中的链接按钮并通过某些条件时,我都会尝试显示 javascript 确认框。

我的中继器位于 Ajax Accordion 内容模板内的更新面板中。

<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>

但我仍然不能从后面的代码中调用它

4

6 回答 6

1

试试这个(第四个参数设置为true):

Page.ClientScript.RegisterStartupScript(this.GetType(), "ConfirmDelete", "return confirm('Are You Sure Want To Delete?');", true);
于 2013-03-07T04:44:51.247 回答
1

试试这个:

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

也检查一下:http ://forums.asp.net/t/1363887.aspx

于 2013-03-07T04:52:47.937 回答
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);
于 2013-03-07T05:02:13.320 回答
1

使用示例

 string sJs = "function ConfirmDelete() { return confirm("Are you sure?"); }
      Page.ClientScript.RegisterClientScriptBlock(GetType(), "jscode", sJs, true);  
于 2013-03-07T05:02:39.867 回答
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属性,以便在中继器的 item 命令中,您可以知道要删除哪个。

于 2013-03-07T05:17:18.937 回答
1

您可以使用 Repeater_ItemDataBound 事件来实现它。当控件被绑定时,您只需使用按钮/链接按钮注册 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 手风琴面板中,这也将起作用。

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

您可以使用以下参考链接找到更多信息

参考

于 2013-03-07T05:46:25.117 回答