Bonjour à tous !
Je fais une petite application web pour afficher les informations d'active directory pour un user du domaine qui se connecte.
Pour ce faire, au chargement de ma page, j'instancie un objet de ma classe User
Ma classe User définie un dataset et possède une méthode qui fait la requête LDAP avec le nom/domaine du user connecté et rempli le dataset.
J'ai enfin une autre méthode qui retourne le dataset.
Je voudrais lié ce dataset à un detailView ou gridView par l'intermédiaire d'un ObjectDataSource.
Voici le code de ma classe User:
Voici le code cs de ma page principale:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60 public class User { private DataSet _ds; private string _domain; private string _userName; private String[] _properties = new string[] { "cn", "sn", "givenName", "l", "postalCode", "telephoneNumber", "streetAddress", "sAMAccountName", "mail", "mailNickname" }; public User() { } public User(string identity) : this() { _domain = identity.Split('\\').GetValue(0).ToString(); _userName = identity.Split('\\').GetValue(1).ToString(); _ds = new DataSet("User"); this.PerformSearch(); } public void PerformSearch() { DataTable dt = new DataTable("infos"); foreach (string property in _properties) { dt.Columns.Add(property); } DirectoryEntry _ldap = new DirectoryEntry("LDAP://xxx.domain.net/DC=aaa,DC=bbb,DC=domain,DC=net", "user", "pass"); DirectorySearcher searcher = new DirectorySearcher(_ldap); searcher.Filter = "(sAMAccountName="+_userName+")"; searcher.SearchScope = SearchScope.Subtree; searcher.SearchRoot = _ldap; searcher.PropertiesToLoad.AddRange(_properties); foreach (SearchResult result in searcher.FindAll()) { DirectoryEntry DirEntry = result.GetDirectoryEntry(); DataRow dr = dt.NewRow(); foreach (string property in _properties) { dr[property] = DirEntry.Properties[property].Value; } dt.Rows.Add(dr); } _ds.Tables.Add(dt); } public DataSet SelectDataSet() { return _ds; } }
et voici le code de ma page
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { } protected void ObjectDataSource1_Load(object sender, EventArgs e) { } protected void Button1_Click(object sender, EventArgs e) { User u = new User(User.Identity.Name); GridView1.DataBind(); } }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_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>Untitled Page</title> </head> <body> <form id="form1" runat="server"> <div> <asp:GridView ID="GridView1" runat="server" OnLoad="Page_Load" DataSourceID="ObjectDataSource1"> </asp:GridView> </div> <asp:ObjectDataSource ID="ObjectDataSource1" runat="server" SelectMethod="SelectDataSet" TypeName="User" OnLoad="ObjectDataSource1_Load"></asp:ObjectDataSource> <br /> <br /> <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Button" /> </form> </body> </html>
Quand je clique sur bouton1, je n'ai pas de résultat, je vois que ma requête se fait mais mon gridView n'affiche rien ...
Je pense bien que c'est parce que c'est parce que mon objectDataSource est lié à un objet user vide mais je voudrais pouvoir le lié à l'objet User u que je créé lorsque je clique sur le bouton.
Comment faire cela ???
Merci beaucoup pour votre aide !!
Partager