Announcement

Collapse
No announcement yet.

Datagrid ausgabe fehlerhaft?(ldap)

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Datagrid ausgabe fehlerhaft?(ldap)

    Hallo!
    Ich Programmiere mit VB.NET und NET 1.1.
    Bei mir ist im Code ein fehler enthalten. Er sagt "Es ist ein Fehler bei der Ausführung aufgetreten" Ich will mein LDAP pfad, also die User einfach an ein Datagrid übergeben und als Tabelle ausgeben lassen. Ist die übergabe fehlerhaft?
    Danke im Voraus!

    Code:
    Imports System.Data
    Imports System.Drawing
    Imports System.Web.SessionState
    Imports System.Web.UI.WebControls
    Imports System.Web.UI.HtmlControls
    Imports System.DirectoryServices
    
    Namespace WebApplication1
        Public Class WebForm2
            Inherits System.Web.UI.Page
            Protected WithEvents DataGrid1 As System.Web.UI.WebControls.DataGrid
            Protected de As DirectoryEntry
            Public ds As DataSet
    
            Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    
                Dim de As New DirectoryEntry("LDAP://xxxx:389/OU=xxx,DC=xxxxxxxx,DC=xxxx,DC=xxx", "", "", System.DirectoryServices.AuthenticationTypes.ServerBind)
                Dim src As New DirectorySearcher("(objectclass=User)")
                'DataTable for users
                Dim tbUsers As New DataTable("users")
                'Create Columns for DataTable.
                tbUsers.Columns.Add("cn", System.Type.[GetType]("System.String"))
                ds.Tables.Add(tbUsers)
                'DataTable for properties
                Dim tbProperties As New DataTable("properties")
                'Create Columns for DataTable.
                tbProperties.Columns.Add("PropertyName", System.Type.[GetType]("System.String"))
                tbProperties.Columns.Add("PropertyValue", System.Type.[GetType]("System.String"))
                ds.Tables.Add(tbProperties)
    
                src.SearchRoot = de
                src.SearchScope = SearchScope.Subtree
                'src.Filter = ("(objectclass=User)")
    
                For Each res As SearchResult In src.FindAll()
                    Dim ien As System.Collections.IDictionaryEnumerator = res.Properties.GetEnumerator()
                    Dim topRow As DataRow = ds.Tables("users").NewRow()
                    topRow("cn") = res.Properties("cn")(0)
                    ds.Tables("users").Rows.Add(topRow)
                Next
                DataGrid1.DataSource = ds.Tables("users")
                DataGrid1.DataBind()
            End Sub
    
    #Region "Web Form Designer generated code"
            Protected Overloads Overrides Sub OnInit(ByVal e As EventArgs)
    
                InitializeComponent()
                MyBase.OnInit(e)
            End Sub
    
            Private Sub InitializeComponent()
                Me.de = New System.DirectoryServices.DirectoryEntry
                Me.ds = New System.Data.DataSet
                CType(Me.ds, System.ComponentModel.ISupportInitialize).BeginInit()
    
                Me.de.AuthenticationType = System.DirectoryServices.AuthenticationTypes.ServerBind
                Me.de.Path = "LDAP://xxxx:389/OU=xxx,DC=xxxxxxxx,DC=xxxx,DC=xxx"
    
                Me.ds.DataSetName = "NewDataSet"
                Me.ds.Locale = New System.Globalization.CultureInfo("en-US")
                CType(Me.ds, System.ComponentModel.ISupportInitialize).EndInit()
    
            End Sub
    
    #End Region
    
        End Class
    End Namespace

  • #2
    Hallo,

    welche Zeile meckert der Debugger bei der schrittweisen Ausführung an?

    Ist die übergabe fehlerhaft?
    Diese Frage lässt sich beantworten, indem der LDAP-Zugriff auskommentiert und statt dessen die DataTable-Instanzen mit Test-Datensätzen gefüllt werden. Wenn das DataGrid die Testdaten anzeigt, ist nicht die Übergabe an das DataGrid die Ursache für das Problem.

    Comment


    • #3
      Wenn ich diesen folgenden Text ausklammere kommt ein Datagrid ohne fehler der allerdings leer ist bzw. nur cn drinne steht.

      Code:
                 
      For Each res As SearchResult In src.FindAll()
                      'Erste Zeile
                      Dim topRow As DataRow = ds.Tables("users").NewRow()
                      topRow("cn") = res.Properties("cn")(0)
                      'Erstellt Zeilen, wenn benötigt
                      ds.Tables("users").Rows.Add(topRow)
      Next

      Comment

      Working...
      X