Mon projet est un site Web de commerce électronique, je travaille avec SQL Server 2000 et Microsoft Visual Studio - ASP.net (language c#).
Les pages Web sont .aspx, j'ai fait des classes .cs.
Une Classe connexion.cs qui fait la connexion à la base de données SQL Server 2000.
Une autre classe administrateur.cs qui gére contient les fonctions ajouter, modifier, supprimer et afficher, en effet cette classe permet la gestion de la table administrateur (la table Administrateur a les attributs: login_admin,pwd_admin) dans ma base de données. Je veux utiliser pour ça un DatagridView (Grid View) . (Voir image GridView)
Ce GridView est lié à un object business ( class qu'on a déjà créé) qui contient les méthodes ajouter,
modifier, supprimer et afficher.
La méthode afficher marche ça va.
Voilà le code de la méthode afficher:
1 2 3 4 5 6 7 8 9 10 11
| public DataSet afficher()
{
connexion c = new connexion();
string query = "SELECT * FROM administrateur";
SqlDataAdapter da=new SqlDataAdapter();
da.SelectCommand = new SqlCommand(query, c.connex);
DataSet ds = new DataSet();
da.Fill(ds,"administrateur");
c.CloseConnection();
return ds;
} |
J'ai retourner un dataset puisque le GridView demande un dataset pour la fonction afficher.
(Voir image select-update)
Mon probléme est dans la fonction Update(modifier) et delete (supprimer).
Ces fonctions ne doivent rien retourner. (Voir Image select-update)
Elles doivent pouvoir modifier ou supprimer de la base de données ainsi mettre à jour le GridView suivant la fonction exécutée je veux réaliser ça avec le Gridview c'est à dire en cliquant sur le bouton Update ou Delete du GridView.
Dans ces 2 fonctions (delete et update) il conseillé d'utiliser un Dataset et SqlAdapter ...
J'ai fait deux essai qui n'ont pas marché:
1-Essai pour la fonction update:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| public void modifier(string login_admin, string pwd_admin)
{
connexion c = new size=2>connexion();
string query = "SELECT * FROM administrateur";
SqlDataAdapter da=new SqlDataAdapter();
da.SelectCommand = new SqlCommand(query, c.connex);
DataSet ds = new DataSet();
da.Fill(ds,"administrateur");
// Declare a reusable update
command with parameters
da.UpdateCommand = c.connex.CreateCommand();
da.UpdateCommand.CommandText = "update administrateur set login_admin =" + login_admin + ",pwd_admin" + @pwd_admin;
da.UpdateCommand.Parameters.Add("login_admin",SqlDbType.Char);
da.UpdateCommand.Parameters.Add("pwd_admin",SqlDbType.Char);
} |
cette fonction ne marche pas, un contact m'a dit qu'il faut utiliser ça:
DataRowView
thisRow=((DataRowView)((BindingSource).Current).Row;
( BindingSource c la source de donnée qu'il le passe pour le datagrid
cette ligne connait la ligne qui a changé a partir de datagrid puis il fait un cast a l'objet retourné pour qu'il soit un objet DataRowView dans cet objet il trouvera tous les attribue de la ligne modifiée
il suffit de parcourir cette ligne en utilisant la methode itemArray[indice de colonne]
comme ça il aura tous ces attribue il cree un dataAdapter et une methode update, dans la methode update il definie les attribu qu'il veux les modifier
puis il appel son dataAdapter, par exemple:
MonDataAdapter.MonUpdate( att1,att2,att3,att4);
comme ça ces attribue seront changés dans son source de donné soit il travaille directement avec une table dans la base
soit dans le dataSet" )
Mais j'ai pas su utiliser ça 
2- Essai pour la fonction delete:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| public void MyDeleteMethod(string login_admin)
{
connexion c = new connexion();
string queryString = "DELETE FROM Administrateur WHERE Login_admin = @Login_admin";
System.Data.IDbCommand dbCommand = size=2>new System.Data.SqlClient.SqlCommand();
dbCommand.CommandText = queryString;
dbCommand.Connection = c.connex;
System.Data.IDataParameter dbParam_login_admin = new System.Data.SqlClient.SqlParameter();
dbParam_login_admin.ParameterName = "Login_admin";
dbParam_login_admin.Value = login_admin;
dbParam_login_admin.DbType = System.Data.DbType.String;
dbCommand.Parameters.Add(dbParam_login_admin);
dbCommand.ExecuteNonQuery();
c.CloseConnection();
} |
Cette fonction marche qu'on je l'appelant dans un bouton dans l'une de mes pages et quand j'ai introduit une chaine de caractère par exemple: MyDeleteMethod('admin') mais elle ne marche pas en l'utilisant dans le GridView c'est à dire en l'appelant à partir du business object.
Désolée le mail est trop long, mais j'ai écrit ça pour que vous pouviez saisir le probléme.
Partager