2016-07-21 7 views
1

befindet Ich bin auf der Suche nach ein wenig Hilfe mit meinem Projekt hier. In meinem Code habe ich zwei Dropdown-Listen. Die erste Liste wird beim Laden der Seite mit Ergebnissen gefüllt, die von einer LDAP-Abfrage stammen. Das Dropdown-Menü funktioniert also gut und zeigt dem Benutzer eine Liste aktiver Benutzer in AD an.ASP.NET Visual Basic-Code hinter .. Versuchen, eine Dropdown-Liste, die sich in Formview

Jetzt ist hier mein Kopf Scratcher ... Ich habe eine Formview-Steuerelement in meinem Projekt. Ich habe eine zusätzliche Dropdown-Liste in der Editeitem-Vorlage platziert. Ich möchte den Inhalt des ersten Drop-downs in den zweiten kopieren. Das Problem, das ich habe, ist, dass, wenn ich versuche, Code für die Sekunde zu schreiben, ich einen Fehler bekomme, dass die zweite Kontrolle noch nicht erklärt worden ist, die wirklich für mich Sinn macht, weil das Formular wirklich nicht auf der existiert Seite, bis jemand einen Index im Gridview-Steuerelement auswählt, mit dem die Formularansicht verknüpft ist.

Ich denke, dass, um dies zu tun, muss ich den .findcontrol-Operator auf der Formview edititem -Ereignis verwenden. Als ich dies jedoch versuchte, bekam ich immer noch Fehler, dass die ID des Controls nicht deklariert wurde. Ich werde fügen, was ich weit hier versucht haben, so ..

‚‘ Hier ist, wo ich bevölkern das erste Dropdown-Liste im Code hinter

Dim dirEntry As DirectoryEntry = New DirectoryEntry("LDAP:MyIPaddress", "MyDomain/Username", "MyPassword", AuthenticationTypes.FastBind) 

     Dim searcher As DirectorySearcher = New DirectorySearcher(dirEntry) 

     '' Filter the search so that it only pulls up Active user accounts. The search filter "!userAccountControl:1.2.840.113556.1.4.803:=2" removes 
     '' disabled users from the list. For a list of all attributes defined by Active Directory, see https://msdn.microsoft.com/en-us/library/ms675090(v=vs.85).aspx 
     searcher.Filter = "(&(objectClass=User)(objectCategory=person)(!userAccountControl:1.2.840.113556.1.4.803:=2))" 

     '' Loop through the search results and add each user as string types to list controls 
     Dim userNames As New List(Of String) 

     For Each resEnt As SearchResult In searcher.FindAll() 
      Dim userName As String = resEnt.Properties("name")(0).ToString() 

      userNames.Add(userName) 

     Next 


     userNames.Sort() 
     For Each userName In userNames 
      userList.Items.Add(userName) 

     Next 

‚‘ Hier ist, was ich bisher in meinen Versuchen müssen findet die zweite Steuer ...

Protected Sub FormView1_DataBound(sender As Object, e As System.EventArgs) Handles FormView1.DataBound 
    If FormView1.CurrentMode = FormViewMode.Edit Then 
     DropDownList(userListEdit = FormView1.FindControl("userListEdit")) 

    End If 
End Sub 

‚‘ Sobald ich versuche, die letzte Zeile zu schreiben, um die Steuerung zu finden, erhalte ich sagt, einen Fehler zurück die Steuerung nicht deklariert ist. Ich habe versucht, eine Lösung in vielen verschiedenen Foren online zu finden. Aber es scheint mir nichts zu geben, was ich brauche. Weiß jemand, wie ich dieses Steuerelement finden kann und den Inhalt im Code hinterher kopieren kann? Danke im Voraus!

Antwort

0

Von was es aussieht, kann die Antwort einfach sein. Ihr Code:

DropDownList(userListEdit = FormView1.FindControl("userListEdit")) 

Was Sie tun müssen, ist:

Dim ddlList As DropDownList = FormView1.FindControl("userListEdit") 

Oder Sie können Direct() und Zugang direkt:

DirectCast(FormView1.FindControl("userListEdit"), DropDownList) //.anyMethod() 
0

@peyote Junge Vielen Dank für deine Antwort. Das zeigte mir die korrekte Syntax. Von da an musste ich etwas über Session-Zustände lernen, um das gewünschte Ergebnis zu bekommen.

in meiner Seite Ladeereignis, habe ich diese Codezeile

Session("userNames") = userNames 

Diese Liste in der aktuellen Sitzung Zustand hält, so kann ich es später verwenden. Dann habe ich Ihren Vorschlag verwendet, um endlich das Ergebnis zu erhalten, nach dem ich gesucht habe.

Protected Sub DetailsView1_Databound(sender As Object, e As System.EventArgs) Handles DetailsView1.DataBound 
If DetailsView1.CurrentMode = DetailsViewMode.Edit Then 
    Dim ddlList As New DropDownList 
    ddlList = DetailsView1.FindControl("userEditList") 
     For Each userName In Session("userNames") 
      ddlList.Items.Add(userName) 
     Next 
     End If 
     End Sub 

Nochmals vielen Dank für Ihre Hilfe! :)