无法使用 SQL 数据激活消息框 - ASP.NET

Posted

技术标签:

【中文标题】无法使用 SQL 数据激活消息框 - ASP.NET【英文标题】:Can't activate message box with SQL data - ASP.NET 【发布时间】:2009-08-13 18:28:27 【问题描述】:

我正在测试我对 ADO.NET 和 SQL 的了解,目前正在尝试做基础知识。我想从表中读取,当用户单击按钮时,会弹出一个消息框,其中包含 ApplicationName 列中的值。

当我点击按钮时,它目前没有做任何事情......有什么想法吗?

protected void TestSubmit_ServerClick(object sender, EventArgs e)
    
        // 初始化数据库连接器。
        SqlConnection connectSQL = new SqlConnection();

        // 发送连接字符串。
        connectSQL.ConnectionString = @"数据源 = localhost\SQLEXPRESS;" +
            “初始目录 = 输入;集成安全 = SSPI”;

        尝试
        
            // 设置我们的命令。
            SqlCommand theCommand = new SqlCommand("SELECT * FROM Inputs", connectSQL);

            // 在文本框中写入存储的值。
            连接SQL.Open();

            SqlDataReader 读取器;

            theReader = theCommand.ExecuteReader();
            theReader.Read();
            MessageBox(theReader["ApplicationName"].ToString());

            theReader.Close();
            连接SQL.Close();
        
        捕获(异常 ee)
        
            MessageBox("哎呀:" + ee);
        

 私人无效消息框(字符串味精)
    
        标签 lbl = 新标签();
        lbl.Text = "" + Environment.NewLine + "window.alert('" + msg + "')";
        Page.Controls.Add(lbl);
    

【问题讨论】:

【参考方案1】:

您基本上只是发送“window.alert('your message');”作为浏览器的 html,它不会作为 javascript 执行。你真的希望它成为一个“弹出窗口”吗?如果是这样考虑使用 RegisterStartupScript() 而不是通过标签 (http://msdn.microsoft.com/en-us/library/asz8zsxy.aspx) 输出 JS。如果没有,那么为什么不将标签的内容设置为您的返回消息?

【讨论】:

正确 - 您的实现的问题是您正在传输一段没有 标记的 Javascript 片段。显然这不会执行脚本。在 WinForms 的回发中执行此服务器端的正确方法是使用 RegisterStartupScript 或 RegisterClientScript 注册脚本 DOH!!!它没有复制 【参考方案2】:

取自 MSDN 的示例并针对您的示例进行了修改

private void MessageBox(string msg)

    StringBuilder cstext2 = new StringBuilder();
    cstext2.Append("<script type=\"text/javascript\">");
    cstext2.Append("window.alert('" + msg + "') </");
    cstext2.Append("script>");
    ClientScript.RegisterClientScriptBlock(cstype, csname2, cstext2.ToString(), false);

您也可以使用RegisterStartupScript 代替RegisterClientScriptBlock。

编辑:或者经典的 ASP 方式也应该可以工作。 我在没有任何编辑的情况下写这篇文章。

Response.Write(@"<script language='javascript'>window.alert('" + msg + "');</script>");

【讨论】:

【参考方案3】:

它确实执行了。我在其他代码中使用它,并且该消息框功能在其他项目上运行良好。

这是我真正想做的事情:

尝试 // 设置我们的命令。 SqlCommand theCommand = new SqlCommand("SELECT * FROM Inputs", connectSQL); // 在文本框中写入存储的值。 连接SQL.Open(); SqlDataReader 读取器; theReader = theCommand.ExecuteReader(); theReader.Read(); TextBox6.Text = (theReader["ApplicationName"].ToString()); theReader.Close(); 连接SQL.Close(); 捕获(异常 ee) MessageBox("哎呀:" + ee);

请注意,TextBox6 是网站上的 ASP 文本框。单击 TestSubmit 不显示文本。

【讨论】:

以上是关于无法使用 SQL 数据激活消息框 - ASP.NET的主要内容,如果未能解决你的问题,请参考以下文章

DCount 与 SQL SELECT COUNT(*)?

如何在消息框中显示 SQL 数据库中的字段

asp.net 点击一下文件名或者一个下载按钮,将文件下载下来怎么做啊???

《UML大战需求分析》阅读笔记5

无法找到用于消息输出的消息记录sap

org.apache.spark.sql.AnalysisException:给定pyspark中的输入列,无法解析'sub_tot`'