Bonjour à tous,
Mon problème est le suivant, j'essaie de créer une page de login en utilisant la technologie SIlverlight.
J'ai bien compris qu'il fallait utiliser des webService pour se connecter à des database, mon problème ne se trouve pas là.
Je n'arrive tout simplement pas à passer de paramètre à la méthode DoWork de mon service !
Je m'explique, lorsque j'appelle cette méthode sans paramètre "test.DoWork()", il execute le code situé dedans, et m'affiche donc une MessageBox avec les login et les mdp, mais lorsque que je redéfinie cette méthode avec en passage de paramètre un String, cela ne marche plus.
Pour y voir plus clair, je poste le code qui marche, et celui qui ne fonctionne pas :
Code qui fonctionne :
*.xaml.cs
Service1.svc.csCode:
1
2
3
4
5
6
7
8
9
10
11
12
13 private void but_Click(object sender, RoutedEventArgs e) { ServiceReference1.Service1Client test = new SilverlightApplication6.ServiceReference1.Service1Client(); test.DoWorkCompleted += new EventHandler<SilverlightApplication6.ServiceReference1.DoWorkCompletedEventArgs>(Testouille); test.DoWorkAsync(); } private void Testouille(object sender, SilverlightApplication6.ServiceReference1.DoWorkCompletedEventArgs e) { MessageBox.Show(e.Result, "resultat", new MessageBoxButton()); }
Code ne foncionnant pas (et celui que je veux/dois utiliser) :Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 public String DoWork() { String Retour = ""; OleDbConnection conn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\...\\Abscence.mdb"); conn.Open(); OleDbCommand cmd = conn.CreateCommand(); cmd.CommandText = "SELECT login, mdp FROM Personne"; OleDbDataReader reader = cmd.ExecuteReader(); DataTable dt = new DataTable(); dt.Load(reader); foreach (DataRow row in dt.Rows) { Retour += row["login"].ToString() + "; " + row["mdp"].ToString() + ";\n"; } conn.Close(); return Retour; }
*.xaml.cs
Service1.svc.csCode:
1
2
3
4
5
6
7
8
9
10
11
12 private void but_Click(object sender, RoutedEventArgs e) { ServiceReference1.Service1Client test = new SilverlightApplication6.ServiceReference1.Service1Client(); test.DoWorkCompleted += new EventHandler<SilverlightApplication6.ServiceReference1.DoWorkCompletedEventArgs>(Testouille); test.DoWorkAsync(login.Text, mdp.Password); } private void Testouille(object sender, SilverlightApplication6.ServiceReference1.DoWorkCompletedEventArgs e) { MessageBox.Show(e.Result, "resultat", new MessageBoxButton()); }
Comme vous pouvez le constater, le code est exactement le même, la seule différence étant que dans un cas je n'ai pas de paramètres, et dans l'autre j'en ai, mais je ne les utilise même pas !Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 public String DoWork(String login, String mdp) { String Retour = ""; OleDbConnection conn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\...\\Abscence.mdb"); conn.Open(); OleDbCommand cmd = conn.CreateCommand(); cmd.CommandText = "SELECT login, mdp FROM Personne"; OleDbDataReader reader = cmd.ExecuteReader(); DataTable dt = new DataTable(); dt.Load(reader); foreach (DataRow row in dt.Rows) { Retour += row["login"].ToString() + "; " + row["mdp"].ToString() + ";\n"; } conn.Close(); return Retour; }
Merci de m'aider.