Не удается активировать окно сообщения с данными SQL - ASP.NET

Я проверяю свои знания ADO.NET и SQL, и в настоящее время просто пытаюсь изучить основы. Я хочу читать данные из таблицы, и когда пользователь нажимает кнопку, появляется окно сообщения со значением в столбце ApplicationName.

В настоящее время он ничего не делает, когда я нажимаю кнопку ... есть идеи?

protected void TestSubmit_ServerClick(object sender, EventArgs e)
    {
        // Initialize the database connector.
        SqlConnection connectSQL = new SqlConnection();

        // Send the connection string.
        connectSQL.ConnectionString = @"Data Source = localhost\SQLEXPRESS;" + 
            "Initial Catalog = Inputs; Integrated Security = SSPI";

        try
        {
            // Setup our command.
            SqlCommand theCommand = new SqlCommand("SELECT * FROM Inputs", connectSQL);

            // Write the stored value in the text boxes.
            connectSQL.Open();

            SqlDataReader theReader;

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

            theReader.Close();
            connectSQL.Close();
        }
        catch (Exception ee)
        {
            MessageBox("Oopsie: " + ee);
        }       

 private void MessageBox(string msg)
    {
        Label lbl = new Label();
        lbl.Text = "" + Environment.NewLine + "window.alert('" + msg + "')";
        Page.Controls.Add(lbl);
    }

person Woody    schedule 13.08.2009    source источник


Ответы (3)


Вы просто отправляете "window.alert ('ваше сообщение');" как HTML для браузера, это не будет выполняться как JavaScript. Вы действительно хотите, чтобы это было "всплывающее окно"? В таком случае рассмотрите возможность использования RegisterStartupScript () вместо вывода JS через метку (http://msdn.microsoft.com/en-us/library/asz8zsxy.aspx). Если нет, то почему бы просто не установить содержимое метки на ваше ответное сообщение?

person veggerby    schedule 13.08.2009
comment
правильно - проблема с вашей реализацией заключается в том, что вы передаете фрагмент Javascript без тега ‹script› ‹/script› вокруг него. Ясно, что сценарий не будет выполняться. Правильный способ сделать это на стороне сервера при обратной передаче в WinForms - это зарегистрировать скрипт с помощью RegisterStartupScript или RegisterClientScript. - person Skeolan; 13.08.2009
comment
ДУХ !!! Он не копировал ‹script› .... он есть, но StackOverflow не позволяет ему копировать ... - person Woody; 13.08.2009

Образец взят из 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>");
person shahkalpeshp    schedule 13.08.2009

Он действительно выполняется. Я использую это в другом коде, и эта функция окна сообщений отлично работает в других проектах.

Вот чем я действительно хочу заниматься:

try
        {
            // Setup our command.
            SqlCommand theCommand = new SqlCommand("SELECT * FROM Inputs", connectSQL);

            // Write the stored value in the text boxes.
            connectSQL.Open();

            SqlDataReader theReader;

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

            theReader.Close();
            connectSQL.Close();
        }
        catch (Exception ee)
        {
            MessageBox("Oopsie: " + ee);
        }       

Обратите внимание, что TextBox6 - это текстовое поле ASP на веб-сайте. При нажатии TestSubmit текст не отображается.

person Woody    schedule 13.08.2009