2012-07-12 55 views
-1

我在后面的C#.NEt网页代码中使用目录搜索。我不知道如何将结果添加到单元格的文本中。列中显示的结果是文本“System.DirectoryServices.SearchResult”。当我将结果添加到字符串时,我认为我没有正确传递属性。将.FindOne()结果传递给gridView的变量--C#.net

String Name = userName; 
DirectorySearcher ds = new DirectorySearcher(); 
ds.Filter = "samaccountname=" + Name; 
ds.PropertiesToLoad.Add("userAccountControl"); 
SearchResult sr = ds.FindOne(); 
e.Row.Cells[5].Text = sr.ToString(); 

正如你所看到的,我将sr.ToString()传递给单元格。这似乎是不正确的,但我不知道如何将结果传递给我可以转换为字符串的变量。我evne试过这样:

var result1 = sr; 
string result2 = result1.ToString(); 
e.Row.Cells[5].Text = result2; 
+0

为什么downvote和没有评论? – climbage 2012-07-12 19:49:57

回答

1

从MSDN网站上SearchResult。它看起来像你想把它设置为sr.PathToString()没有过载,所以它只是返回对象的默认值。

+0

使用“e.Row.Cells [5] .Text = sr.Path;”返回LDAP路径。我需要userAccountControl来判断用户是否被禁用。使用“e.Row.Cells [5] .Text = sr.userAccountControl;”不起作用,因为编辑器将其视为错误“System.DirectoryServices.SearchResult”不包含它的定义。 – user1188241 2012-07-12 20:01:32

+0

你将不得不看'sr.Properties'中的内容,它是一个额外属性的字典。 – climbage 2012-07-12 20:11:59

0

在SearchResult中 - 尝试类似sr["userAccountControl"].ToString()。搜索结果对象只是一个对象。你必须告诉什么属性来装载它的集合。您可以检查PropertyNames属性以查看结果对象中的内容。请参阅:http://msdn.microsoft.com/en-us/library/system.directoryservices.resultpropertycollection.aspx 以了解您正在使用的对象的参考。

+0

有点挖,我能得到它。 – user1188241 2012-07-12 20:20:34

+0

'String name = userName; DirectorySearcher ds = new DirectorySearcher(); ds.Filter =“sAMAccountName =”+ name; ds.PropertiesToLoad.Add(“userAccountControl”); SearchResult sr = ds.FindOne(); DirectoryEntry dsresult = sr.GetDirectoryEntry(); e.Row.Cells [5] .Text = dsresult.Properties [“userAccountControl”] [0] .ToString(); ' – user1188241 2012-07-12 20:21:22