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:
J'ai retourner un dataset puisque le GridView demande un dataset pour la fonction afficher.Code:
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; }
(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:
cette fonction ne marche pas, un contact m'a dit qu'il faut utiliser ça:Code:
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); }
DataRowView
( BindingSource c la source de donnée qu'il le passe pour le datagridCode:thisRow=((DataRowView)((BindingSource).Current).Row;
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:
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.Code:
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(); }
Désolée le mail est trop long, mais j'ai écrit ça pour que vous pouviez saisir le probléme.