Une directive manquante

khaoula85 Messages postés 15 Date d'inscription vendredi 28 novembre 2008 Statut Membre Dernière intervention 15 octobre 2009 - 1 janv. 2009 à 18:42
titeoe Messages postés 433 Date d'inscription samedi 26 avril 2003 Statut Membre Dernière intervention 4 décembre 2009 - 4 déc. 2009 à 08:37
Bonsoir,

Je code une application web en C#, mais au moment de la compilation, on me génère l'erreur suivante :

le type ou le nom d'espace de SQLAdapter, SQLCommand, DataGrid... est introuvable
J'ai défini pourtant les librairies au début du programme à savoir :

using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Resources;
using System.Drawing;
using System.ComponentModel;
using System.Data.Sql;
using System.Data.SqlClient;

Quelqu'un pourrait me dire quelle librairie me manque-t-il ?

Merci et bonne année à tous !
A voir également:

11 réponses

cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
1 janv. 2009 à 18:59
Salut,

Les directives using et l'ajout de référence sont 2 choses distinctes.
La directive using est en quelquesorte là pour ne pas avoir à spécifier les noms complets des types (exemple : SqlCommand au lieu de System.Data.SqlClient.SqlCommand).
L'ajout de référence permet au compilateur d'avoir accès aux assemblies contenant les types utilisés.

Le meilleur moyen de connaitre l'assembly dans lequel se trouve le type est bien entendu de regarder la documentation de ce type, elle donne entres autres cette information.

/*
coq
MVP Visual C#
CoqBlog
*/
0
khaoula85 Messages postés 15 Date d'inscription vendredi 28 novembre 2008 Statut Membre Dernière intervention 15 octobre 2009
1 janv. 2009 à 19:26
Merci pour l'explication !

D'après mes recherches, j'ai trouvé qu'il fallait ajouter l'assembly : System.Windows.Forms;

Alors que je travaille sur une application web, même quand j'ai inséré cette ligne dans mon code, on m'affiche l'erreur : le type ou le nom d'espace de noms 'Windows' n'existe pas dans l'espace de noms 'System' (une référence d'assembly est-elle manquante ?)
0
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
1 janv. 2009 à 19:51
Il ne faut pas confondre le contôle DataGrid ASP.NET avec le contrôle DataGrid WinForms.

/*
coq
MVP Visual C#
CoqBlog
*/
0
khaoula85 Messages postés 15 Date d'inscription vendredi 28 novembre 2008 Statut Membre Dernière intervention 15 octobre 2009
1 janv. 2009 à 20:25
Oui, je ne les confonds pas :S
J'ai pourtant inséré l'assembly System.Web.UI.WebControls.
Voici le bout de code que j'ai écrit :

using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Resources;
using System.Drawing;
using System.ComponentModel;
using System.Data.Sql;
using System.Data.SqlClient;

namespace WebApplication1
{
    public partial class _Default : System.Web.UI.Page
    {
       protected void Page_Load(object sender, EventArgs e)
        {
            if (this.IsPostBack)
    {
        // parcourt la liste des contrôles
        foreach (string ctl in this.Request.Form)
        {
            Control c = this.FindControl(ctl);

            if (c is System.Web.UI.WebControls.Button)
            {
                // on ne s'intéresse qu'au Button
                Response.Write(c.ID + "
");
            }
        }
    }

        }

        protected void TextBox1_TextChanged(object sender, EventArgs e)
        {
            SqlConnection con = new SqlConnection("Data Source=KHAOULA;" + "Initial Catalog=basePFA;Integrated Security=SSPI");
          try
                {
                    SqlCommand com = new SqlCommand("procStock1", con);
                    com.CommandType = CommandType.StoredProcedure;
                    com.Parameters.Add("@idEtud", SqlDbType.Int).Value = new int();
                    com.Parameters.Add("@nomEtud", SqlDbType.VarChar).Value = "";
                    com.Parameters.Add("@prenomEtud", SqlDbType.VarChar).Value = "";

                    SqlDataAdapter DA = new SqlDataAdapter(com);
                    DataSet dt = new DataSet("Etudiants");
                    DA.Fill(dt, "procStock1"); dataGrid1.SetDataBinding(dt, "procStock1");
                 }
           
            catch (Exception ex)
                {
                    MessageBox.Show(this, ex.Message, "Erreur", MessageBoxButtons.OK);
                }
        }
    }
}

  
  Il sert à afficher les Nom et Prénom d'un étudiant si on introduit son ID, il fait appel à ma procédure stockée déjà créée sous SQL Server Managment.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
titeoe Messages postés 433 Date d'inscription samedi 26 avril 2003 Statut Membre Dernière intervention 4 décembre 2009 1
2 janv. 2009 à 16:06
Bonjour,

Si tu passe en mode design dans, peux tu regarder quel est le type du controle dataGrid1 ? Il devrai etre de type gridview et non de type datagrid.

---------------------------------------
R. Seb
MCP C# 2.0 - MCTS ASP.Net 2.0
0
khaoula85 Messages postés 15 Date d'inscription vendredi 28 novembre 2008 Statut Membre Dernière intervention 15 octobre 2009
2 janv. 2009 à 16:37
Bonjour,
Je n'ai pas compris tout à fait où fallait que je regarde, le seule endroit où j'i du code html c'est au niveau de mon fichier Default.aspx :

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="WebApplication1._Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>Page sans titre</title>
</head>

    <form id="form1" runat="server">
   

   
        ID Ingénieur
   
   

    </form>

</html>

Merci.
0
titeoe Messages postés 433 Date d'inscription samedi 26 avril 2003 Statut Membre Dernière intervention 4 décembre 2009 1
2 janv. 2009 à 17:42
Dans le code behind , il y a la ligne :
" DA.Fill(dt, "procStock1"); dataGrid1.SetDataBinding(dt, "procStock1"); "

question : ou se trouve le controle dataGrid1 ?

Autre remarque, si tu met en commentaire la ligne "  MessageBox.Show(this, ex.Message, "Erreur", MessageBoxButtons.OK); " tu n'aura plus de référence a windows forms car c'est MessageBox qui fait cette référence.

---------------------------------------
R. Seb
MCP C# 2.0 - MCTS ASP.Net 2.0
0
khaoula85 Messages postés 15 Date d'inscription vendredi 28 novembre 2008 Statut Membre Dernière intervention 15 octobre 2009
2 janv. 2009 à 18:04
J'ai commenté ce qu'il y a dans le bloc catch.

Au fait, j'ai écrit ces deux lignes parce qu'on a appris à les écrire à chaque fois qu'on se connecte à une base de données. Mon dataAdapter va remplir un dataSet par sa méthode Set et il doit après "répercuter" mes mises à jour dans la source de données. J'ai fait la liaison (binding) entre le dataSet et un dataGrid.

Je veux avoir à la fin une interface web (trop simple) qui ressemble à :
http://cjoint.com/data/bcsWi2lpn6_PFA.JPG

J'introduis l'ID ingénieur et je récupère ses nom et prénom. Normalement, la procédure stockée que j'ai créée répond normalement à ma requête, il fallait juste l'appeler.

Que devrais-je faire ?
0
titeoe Messages postés 433 Date d'inscription samedi 26 avril 2003 Statut Membre Dernière intervention 4 décembre 2009 1
2 janv. 2009 à 21:53
J'ai dis de commenter tes lignes du bloc catch pour résoudre ton probleme de référence au namespace Windows. En effet, c'est messageBox qui provoque cette référence.

Par contre, dans ton bloc catch, il faut bien renvoyer un message d'erreur, comme par exemple un label du style "erreur sur la page".


Ton problème est que tu mélange ASP.Net (Web) avec des contrôles windows (MessageBox).

---------------------------------------
R. Seb
MCP C# 2.0 - MCTS ASP.Net 2.0
0
cs_jawad183 Messages postés 2 Date d'inscription mercredi 11 février 2009 Statut Membre Dernière intervention 9 novembre 2009
9 nov. 2009 à 09:43
bjr tous le mond si il y a quelqu'un pe m'aidé svp je ve généré un fichier excel sous asp j'ai le code mais il me donne l'erreur suivant 'System.Web.UI.Page' est un type, pas un espace de noms
voici le code et merci
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI.Page;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Xml.Xsl;




namespace alliancepages.excelxparticle
{

/// <summary>
/// Summary description for doTransformation.
/// </summary>
public partial class _Default : System.Web.UI.Page
{
protected System.Web.UI.WebControls.Xml xml;

protected void Page_Load(object sender, EventArgs e)
{
OleDbConnection con = new OleDbConnection(connectionString);
// Put user code to initialize the page here
XsltArgumentList argList=new XsltArgumentList();
argList.AddExtensionObject("http://www.aspalliance.com/joteke",new excelxparticle.Extension());

xml.TransformArgumentList=argList;
xml.DataBind();
Response.ContentType ="vnd/ms-excel";

}

#region Web Form Designer generated code
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: This call is required by the ASP.NET Web Form Designer.
//
InitializeComponent();
base.OnInit(e);
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>

}
private void InitializeComponent()
{
this.Load += new System.EventHandler(this.Page_Load);

}
#endregion
}
}
0
titeoe Messages postés 433 Date d'inscription samedi 26 avril 2003 Statut Membre Dernière intervention 4 décembre 2009 1
4 déc. 2009 à 08:37
hello

remplace la ligne :
using System.Web.UI.Page;
par
using System.Web.UI;


---------------------------------------
R. Seb
MCP C# 2.0 - MCTS ASP.Net 2.0
0
Rejoignez-nous