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:
Référence d'assembly manquante c#
Le nom de type ou d'espace de noms est introuvable - Meilleures réponses
Un espace de noms ne peut pas contenir directement des membres tels que des champs ou des méthodes - Meilleures réponses
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.
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 ?)
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");
}
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
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.
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.
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
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());
#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);