SharePointCommunity
Die deutschsprachige Community für SharePoint, Microsoft 365, Teams, Yammer und mit Azure

Sponsored by

Willkommen im Forum Archiv.
Einträge sind hier nicht mehr möglich, aber der Bestand von 12 Jahren SharePoint-Wissen ist hier recherchierbar.




SharePoint 2010 Lookup Feld in Custom.aspx

Geprüfte Antwort Dieser Beitrag hat 5 Antworten

Ohne Rang
1714 Beiträge
C.Kaiser erstellt 6 Dez. 2011 10:06
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hallo zusammen,

irgendwie habe ich gerade das Problem, dass ich mein Lookup Feld in einer Custom.aspx nicht angezeigt bekomme. Der generierte HTML Quelltext zeigt auch einfach nur ein leeres <td></td> Tag an, obwohl ich das SharePoint Control dort hinterlegt habe.

Andere WebControls rendern ohne Probleme, aber das Lookup zickt ein wenig rum...

Quelltext sieht ca. so aus:
<table>
.... //viele weitere Controls
<tr>
<td><SharePoint:Lookup ID="lookupField" runat="server" ControlMode="Edit" /></td>
</tr>
... viele weitere Controls
</table>

Codebehind (CreateChildControls):
this.lookupField.ListID = listezudemdaslookupgehört.ID;
this.lookupField.Field = "Feldname";

HTML Output:
<table>
.... //viele weitere Controls
<tr>
<td></td>
</tr>
... viele weitere Controls
</table>

Das Ganze liegt im _layouts Ordner (liegts eventuell daran)?
Oder muss ich das ganze Layout explizit in der CodeBehind machen (was ich eigentlich vermeiden will :-) )

Vielen Dank & beste Grüße

Alle Antworten

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 6 Dez. 2011 10:47
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Schau Dir mal das hier an: http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.webcontrols.lookupfield_members.aspx. Demnach haben die Eigenschaften ListId und Field eine ganz andere Bedeutung. Sie beziehen sich auf die Liste und das Feld, zu dem das Control gehört (und die es in Deinem Fall gar nicht gibt).

Warum nimmst Du nicht eine simple DropDownList und füllst sie selbst?

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
1714 Beiträge
C.Kaiser Als Antwort am 6 Dez. 2011 11:38
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hm... ne Andi :-)

Liste und Feld existieren (die hole ich mir ja in der Codebehind und fülle diese). Das Formular wird ein neues Eingabeformular für die entsprechende Liste mit bestimmten Funktionen (aktivieren & deaktivieren von Feldern, kaskadierende Auswahlmöglichkeiten, Eingabeprüfungen usw.).

Und wenn ich ein normales DropDown nehme muss ich ja die beziehung zur "Lookup"-Liste wieder hinbiegen - nicht shcön :-) )

Beste Grüße,
Christian

http://www.sharepoint-rhein-ruhr.de

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 6 Dez. 2011 11:42
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Setzt Du dann auch den FormContext und das ListItem für die Felder? Vielleicht ist das Lookup da anspruchsvoller...

Mir ist natürlich schon klar, daß es ein normales DropDown auch nicht ganz umsonst gibt, aber manchmal geht das schneller, als sich ewig mit den Interna von SharePoint rumzuschlagen. Aber man möchte ja auch nicht gleich aufgeben - ich kenne das ;-)

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
1714 Beiträge
C.Kaiser Als Antwort am 6 Dez. 2011 11:49
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

FormContext und ListItem setze ich nicht. Unter 2007 ging das mit den o.g. Properties (ControlMode, ListID, Field), allerdings habe ich das ganze Formular dort in der Codebehind gebaut. Das möchte ich eigentlich nicht, da es (zumindest aus meiner Sicht) noch weniger wartbar ist, als eine eigene aspx (ascx).

Allerdings werde ich den Weg wohl mal testen müssen (alles in Codebehind)... mal schauen.

P.S.: "ListItem" ist ausserdem "nur" ReadOnly :-P

Beste Grüße,
Christian

http://www.sharepoint-rhein-ruhr.de

Ohne Rang
1714 Beiträge
C.Kaiser Als Antwort am 7 Dez. 2011 13:27
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

So ein Lösungsweg:

Wenn ich das Control in der aspx-Seite mit einem "OnInit"-EventHandler versehe und dort die entsprechenden Properties setze funktioniert es.

Beispiel:
<SharePoint:Lookup ID="meineID" runat="server" OnInit="myOnInit" />

Codebehind:
private void myOnInit(object sender, EventArgs e)
{
    meineID.FieldName = "Feldname";
    meineID.ListID = "GUID meiner Liste";
    meineID.ControlMode = SPControlMode.Edit;
}

 P.S.: Wenn jemand was schöneres / eleganteres hat -> Bitte melden :-)

Beste Grüße,
Christian

http://www.sharepoint-rhein-ruhr.de