C# 使用代码隐藏弹出aspx确认消息

C# 使用代码隐藏弹出aspx确认消息,c#,asp.net,onclientclick,C#,Asp.net,Onclientclick,我需要向OnClientClick事件返回确认消息。问题是我必须从存储过程中获取消息,而且我似乎没有正确调用我的函数 <asp:ImageButton OnClientClick="return confirm(<%# GetConfirmExportMessage()%>);" OnClick="btnExportRed_Click" runat="server" ImageUrl="~/Images/excel_red.gif" ID="b

我需要向OnClientClick事件返回确认消息。问题是我必须从存储过程中获取消息,而且我似乎没有正确调用我的函数

 <asp:ImageButton 
OnClientClick="return confirm(<%# GetConfirmExportMessage()%>);"            
OnClick="btnExportRed_Click" 
runat="server" 
ImageUrl="~/Images/excel_red.gif" 
ID="btnExportRed" 
AlternateText="Export all records!"/>
你可能想要

OnClientClick="return confirm('<%= GetConfirmExportMessage()%>');"             

在你的代码背后

尝试使用等号而不是磅(不要忘记单引号)

通过重复“myMessage”这样的小变量名来节省吞吐量,并避免重复一些大消息。还要注意的是,方法
GetConfirmExportMessage
并没有被多次调用以提高性能

如果您的消息特定于当前行中的数据,而不是静态的,如“确定吗?”,那么我建议您在GridView的
RowDataBound
事件中执行此操作。您可以完全访问
ImageButton
和当前行绑定到的数据,这使得服务器端设置非常容易。检查
FindControl()
方法,或者如果您知道确切的位置,只需引用它并取消对象的装箱

protected void gvMyGrid_RowDataBound(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
        ImageButton ibtn = (ImageButton)e.Row.FindControl("btnExportRed");
        if(ibtn != null)
        {
            ibtn.ClientClick = "return confirm('" + GetConfirmExportMessage() + "');";
        }
    }
}

作为替代解决方案,也许您应该研究WebMethods、AJAX和jQuery。此解决方案可能是更好的解决方案,因为数据不会发送到客户端,只有在必要时才能检索。

您需要在
中包装确认。

<asp:ImageButton 
    OnClientClick="return confirm('<%# GetConfirmExportMessage()%>');"            
    OnClick="btnExportRed_Click" 
    runat="server" 
    ImageUrl="~/Images/excel_red.gif" 
    ID="btnExportRed" 
    AlternateText="Export all records!"/>


我尝试了OnClientClick=“return-confirm(“”);”和OnClientClick=“return-confirm(“”);”,但我只在警报消息中得到或。当使用OnClientClick=“return confirm();”时,我得到一个脚本错误。ImageButton在另一个控件的模板中是否像datagrid一样?错误消息:语法错误客户端代码工作正常。是的,ImageButton在GridView中。@Anna-我已经更新了答案,为GridView添加了一些替代选项。请阅读WebMethods和jQuery,它实际上很容易实现。谢谢您的帮助。我读过WebMethods、Ajax和JQuery,但我无法实现这些,因为我必须调用一个非静态方法来获取我的消息。我最终在btnExportRed_Click上实现了MessageBox警报。
confirm
是一个javascript函数,它以字符串作为参数(要显示的消息)。字符串必须包装在javascript中的
中。否则,js引擎会假定您正试图使用该名称调用另一个函数或变量。因此,这不起作用:
确认(我的名字是安娜)
这起作用:
确认(“我的名字是安娜”)
OnClientClick="return confirm('<%= GetConfirmExportMessage()%>');"
<script language="JavaScript">
    var myMessage = '<%= GetConfirmExportMessage()%>';
</script>
OnClientClick="return confirm(myMessage);"
protected void gvMyGrid_RowDataBound(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
        ImageButton ibtn = (ImageButton)e.Row.FindControl("btnExportRed");
        if(ibtn != null)
        {
            ibtn.ClientClick = "return confirm('" + GetConfirmExportMessage() + "');";
        }
    }
}
<asp:ImageButton 
    OnClientClick="return confirm('<%# GetConfirmExportMessage()%>');"            
    OnClick="btnExportRed_Click" 
    runat="server" 
    ImageUrl="~/Images/excel_red.gif" 
    ID="btnExportRed" 
    AlternateText="Export all records!"/>