2009-08-13 6 views
1

Je teste mes connaissances sur ADO.NET et SQL et j'essaie actuellement de faire les bases. Je veux lire à partir d'une table et lorsque l'utilisateur clique sur un bouton, une boîte de message apparaît avec la valeur dans la colonne ApplicationName.Impossible d'activer la boîte de message avec les données SQL - ASP.NET

Actuellement, il ne fait rien lorsque je clique sur le bouton ... des idées?

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); 
    }

Répondre

2

Vous envoyez simplement "window.alert ('votre message');" comme HTML au navigateur, ce ne sera pas exécuté en JavaScript. Voulez-vous vraiment que ce soit un "popup"? Si c'est le cas, utilisez RegisterStartupScript() au lieu de sortir le JS via une étiquette (http://msdn.microsoft.com/en-us/library/asz8zsxy.aspx). Si non, pourquoi ne pas simplement définir le contenu de l'étiquette à votre message de retour?

+0

right - le problème avec votre implémentation est que vous transmettez un fragment de Javascript sans étiquette . Clairement, cela ne va pas exécuter le script. La bonne façon de faire ce côté serveur sur une publication dans WinForms est d'enregistrer le script en utilisant RegisterStartupScript ou RegisterClientScript – Skeolan

+0

DOH !!! Le

0

échantillon prélevé sur MSDN & modifié pour votre exemple

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); 
} 

Vous pouvez également utiliser RegisterStartupScript au lieu de RegisterClientScriptBlock.

EDIT: OU la méthode ASP classique devrait également fonctionner.
J'écris ceci sans éditeur.

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

Il exécute effectivement. Je l'utilise dans d'autres codes et cette fonction de messagerie fonctionne bien sur d'autres projets.

Voici ce que je veux vraiment faire:

 
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); 
     }  

Notez que TextBox6 est une zone de texte ASP sur le site. Cliquer sur TestSubmit n'affiche pas le texte.

Questions connexes