使用代码后面弹出aspx确认消息

时间:2012-08-22 10:09:08

标签: c# asp.net onclientclick

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

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

我的代码背后:

public string GetConfirmExportMessage()
    {
        string xmlFilterForExport = Parameters.ToString().Split('+')[4].Trim();
        string alertMessage = companiesSearcher.GetAlertMessage(xmlFilterForExport, 1, null, null, IdSegment, 1, Convert.ToInt32(RoDB2004.BLL.clsUsers.UserID));

        return alertMessage;
    }

3 个答案:

答案 0 :(得分:3)

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

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

但是,如果您的ImageButton位于DataGrid或GridView中,则不会评估服务器端代码,并且会显示一条警告&lt;%= GetConfirmExportMessage()%&gt;而不是真正的信息。

要解决此问题(并提高性能,吞吐量等),请将消息输出一次到变量,然后提醒变量的内容。

<script language="JavaScript">
    var myMessage = '<%= GetConfirmExportMessage()%>';
</script>

稍后,在GridView中......

OnClientClick="return confirm(myMessage);"

通过重复一个小的变量名称(如“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。这个解决方案可能更好,因为数据不会发送到客户端,只在必要时才会被检索。

答案 1 :(得分:1)

你可能想要

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

请注意,这将在呈现页面时填充,而不是在单击按钮时填充,因此您也可以使用

btnExportRed.OnClientClick = "javascript:return confirm('" + GetConfirmExportMessage() + "');" 

在您的代码中。

答案 2 :(得分:1)

您需要在'

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