Implementieren von Master / Detail-Beziehungen mithilfe von benutzerdefinierten Listen

Forum-Benutzer häufig als Fragen wie diese:

> Hallo,
>
> Bitte sagen Sie mir, wenn es gibt Möglichkeiten zum Erstellen einer benutzerdefinierten Liste mit
> Master- und Detailseiten Typ (wie Rechnungen) ohne Verwendung von InfoPath.
>

SharePoint bietet einige aus der Box-Merkmale, die Arten von geschäftlichen Anforderungen so unterstützen.

Im allgemeinen, einer links, zwei Listen zusammen mit einem Nachschlagefeld. Liste A enthält die Rechnung-Header-Informationen und Liste B Rechnungsdetails.

Verwenden Sie zusätzliche Listen Kundennummern beibehalten, Produktnummern, usw..

Verwenden Sie einen Inhaltsabfrage-Webpart (in MOSS nur) und/oder eine Datenansicht-Webpart zusammengeführte Ansichten der Listen erstellen. SQLServer Reporting Services (SRS) ist auch für die Berichterstattung Seite.

Jedoch, Es gibt einige wichtigen Einschränkungen, die machen es schwierig, reine Out-of-Box-Funktionen für alles verwenden, das auch mäßig komplexe ist. Dazu gehören:

  • Größe der Verwandte Suche listet vs.. "Schlauheit" des Spaltentyps lookup. Ein Lookup-Spaltentyp präsentiert sich auf der Benutzeroberfläche unterschiedlich, je nachdem ob Sie Mehrfachauswahl aktiviert haben, oder nicht. In beiden Fällen, das Out-of-Box-Steuerelement zeigt alle verfügbaren Elemente aus der Liste "Quelle". Wenn die Liste "Quelle" hat 1,000 Elemente, Das wird ein Problem sein. Das Nachschlagesteuerelement wird nicht durch diese Elemente Seite. Stattdessen, Es zieht sie alle in das Steuerelement. Das macht für eine sehr unangenehme Benutzeroberfläche sowohl in Bezug auf die Dateneingabe und Leistung.
  • Suchvorgänge "Pull back" einer Spalte der Informationen. Sie können mehr als einer Spalte der Informationen aus der Liste "Quelle" nie zurück ziehen. Zum Beispiel, ein Kunde "12345 können nicht ausgewählt werden" und Anzeige der Anzahl als auch der Kunde Nameund Anschrift zur gleichen Zeit. Die Suche zeigt nur den Kunden Nummer und sonst nichts. Dieses bildet für eine unangenehme und schwierige Benutzeroberfläche.
  • Keine Kommunikation Intra-form. Ich habe über dieses hier geschrieben.. Sie können keine cascading Drop-Downs implementieren., bedingt Felder aktivieren/deaktivieren, usw..
  • Keine Löschweitergaben oder eingebaute referentielle Integrität. SharePoint benutzerdefinierte Listen als unabhängige Einheiten behandelt und können Sie in einem traditionellen Sinn ERD miteinander verknüpfen nicht. Zum Beispiel, SharePoint können Sie zwei benutzerdefinierte Listen erstellen, "Kunde" und "Rechnungskopf". Sie können einen Rechnungskopf zurück an einen Kunden erstellen in der Kundenliste verknüpft. Dann, Sie können den Kunden aus der Liste löschen.. Out of the box, Es gibt keine Möglichkeit, dies zu verhindern. Diese Art von Problem zu lösen, Normalerweise würden Sie Ereignishandler verwenden.

Es mag düster, aber ich würde immer noch SharePoint als Ausgangspunkt für die Erstellung von diese Art von Funktionalität. Zwar gibt es Lücken zwischen, was Sie, in einer Lösung brauchen, SharePoint ermöglicht es uns, diese Lücken mit Tools wie z.B.:

  • Event-Handler. Benutzen sie, um die referenzielle Integrität zu erzwingen.
  • Benutzerdefinierte Spalten: Erstellen Sie benutzerdefinierte Spaltentypen und verwenden sie anstelle der Standardspalte-lookup. Hinzufügen der Auslagerungsdatei, Pufferung und AJAX-Features zu reagieren machen.
  • BDC. Dieses Moos nur Feature ermöglicht es uns, Abfrage, die andere SharePoint-mit einer überlegenen Benutzerschnittstelle für die üblichen Nachschlagespalte Listen. BDC kann auch an einen Back-End-Server-Anwendung erreichen. Verwenden von BDC um Replikation zu vermeiden. Anstatt das Replizieren von Kundendaten von einem Back-End-ERP-system, Verwenden Sie stattdessen BDC. BDC-Funktionen bieten eine schöne Benutzeroberfläche um diese Informationen direkt aus dem ERP-System zu ziehen, wo es gehört und vermeidet den Aufwand für die Aufrechterhaltung einer Replikationslösung.

    BDC ist eine MOSS-Funktion (nicht verfügbar in WSS) und ist schwierig um zu konfigurieren.

  • ASP.net Web-Formular: Erstellen Sie ein funktionsreiches AJAX-fähigen Formular, das die SharePoint Objekt Modell und/oder Web Services, um SharePoint-Listen zu nutzen, und bietet gleichzeitig eine sehr reaktionsfähige Benutzeroberfläche verwendet.

Die letzte Option kann fühlen, wie Sie von vorne anfangen, aber betrachten Sie die Tatsache, dass die SharePoint-Plattform mit den folgenden Hauptfunktionen beginnt:

  • Sicherheitsmodell mit Wartung.
  • Menü-System mit Wartung.
  • "Master-Tabelle" (dh. Benutzerdefinierte Listen) mit Sicherheit, integrierte Wartung und Überwachung.
  • Suche.
  • Tools für Back-End-integration (BDC).

Wenn Sie ein neues leeres Projekt in visual Studio zunächst, Sie haben eine Menge von Infrastruktur und Sanitär zu bauen, bevor man in der Nähe, was SharePoint bietet.

Ich glaube, dass Microsoft SharePoint in dieser Richtung Anwendungsentwicklung ausdehnen will. Es scheint wie eine natürliche Erweiterung auf die vorhandene SharePoint-Basis. Microsofts CRM-Anwendung bietet ein hohes Maß an Erweiterbarkeit der Header/Detail-Anwendungsentwicklung Unterstützung benötigten Typen. Zwar sind diese Features in CRM, die Technologie steht natürlich das SharePoint-Entwickler-Team und ich erwarten, dass es seinen Weg in das SharePoint-Produkt bis Jahresende 2008. Wenn jemand ein wissen oder Einsicht in diese, Bitte terlassen Sie einen Kommentar hin.

</Ende>

5 Gedanken zu „Implementieren von Master / Detail-Beziehungen mithilfe von benutzerdefinierten Listen

  1. Paul Galvin

    Raghu, Ich glaube nicht, dass es einfache Möglichkeit, das zu tun. Ich würde auf die Ausbildung Ihrer Benutzer beim verwenden, die man von ihnen und vielleicht Ihnen geben ein Hinweis mit dem Namen des Inhalts selbst konzentrieren. Ich glaube nicht, dass Sie wirklich diese festzunageln können, technisch.

    Antwort
  2. Raghu schrieb:
    Ich erstelle Parent/Child Realationship mithilfe von zwei Content-Typen und benutzerdefinierte Liste wie in den oben genannten commnet. Aber ich habe ein problem; Ich muss auf Positionsebene Item-Inhaltstyp nicht verfügbar auf Ordnerebene und Ordnerinhaltstyp nicht verfügbar machen. Bitte führe mich auf diesem. Vielen Dank…
    Antwort
  3. Michael Vickers

    Es ist ein bisschen wie ein Hack aber ich benutze eine ASP.Net Dropdown die Schatten das Lookup "dropdown" erstellt von SharePoint. I Nummer der ASP.Net-Dropdown-Liste eine Datasource, basierend auf der Liste, enthält das Suchelement, dass Sie mir das ID-Feld als den Wert und die Spalte meiner Wahl als Anzeigetext verwenden. Ich Binden der ASP.Net-Dropdown-Liste auf das Nachschlagefeld Liste nicht weil sie serverseitige Fehler generiert.

    Beim Laden der Seite verwende ich Javascript der ASP.Net-Dropdown-Liste den korrekten Wert zuweisen, und fügen Sie dann Onchange Veranstaltungen auf diesem Dropdown neue Werte zuweisen der entsprechenden SharePoint Lookup-Dropdown-Liste. Ich verstecke mich eigentlich die Zeile mit der SharePoint-Liste.

    Eine letzte Sache — aufgrund der Art und Weise rendert SharePoint doof Lookup Dropdowns, wenn die Anzahl der Elemente Vergangenheit Ruft 20 Ich verwenden benutzerdefinierte Wrapper-Objekt, um Abfragen/die Dropdown-Wert setzen. Ich habe einen Blog-Post, die diesen Prozess hier detailliert:

    http://www.idiotsyncrasies.com/2007/12/lookup-list-dropdowns-in-sharepoint.aspx

    Prost,

    Michael

    Antwort
  4. David

    Sie können einen Inhaltstyp für Rechnungskopf basierend auf dem Content Ordner erstellen und dann eine andere Rechnung Inhaltstyp erstellen und Hinzufügen sowohl auf einer SharePoint-Liste. Dies schafft eine über-/untergeordnete Beziehung mit denen Sie mehrere Rechnungen basierend auf der Rechnung-Inhaltstyp erstellen, die unter den Rechnungstyp für Header-Content zu leben, die Ihnen gibt und sofortige Beziehung zwischen den beiden Elementen in Kraft und wenn das Listenelement ist Rechnungskopf alle Kind-Rechnungspositionen innerhalb dieses Ordners gelöscht gelöscht werden. Sie können auch angeben, dass ein Content-Type nur in einem bestimmten Ordner verfügbar sein. Dieser Ansatz ist ähnlich wie die Diskussion-Bibliothek funktioniert und ist sehr hilfreich für diese Art von Beziehung zwischen Elementen. Ereignishandler und Code hilft mit anderen Einschränkungen aber insgesamt eine schnelle einfache Lösung.

    Antwort

Lassen Sie eine Antwort auf Raghu schrieb: Antwort verwerfen

Deine Email-Adresse wird nicht veröffentlicht. erforderliche Felder sind markiert *