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

Gefilterte Datensätze aus einer SharePoint-Liste in einen Webpart einbinden

bewertet von 0 Usern
Nicht beantwortet Dieser Beitrag hat 0 Geprüfte Antworten | 9 Antworten | 1 Follower

Ohne Rang
3 Beiträge
Der Don erstellt in 6 Jul 2010 12:12

Hallo liebe Community,

dies ist zwar mein erster Post, ich hoffe jedoch, dass ich eine Lösung für mein Problem bei euch bekommen kann :)

Ich habe im Anhang mal eine Skizze(!) meiner Problemstellung hochgeladen. Ich glaube die macht es einfacher als wenn ich es nur mit Worten erkläre.

Ich habe eine Liste mit einigen Datensätzen (Sowohl normale Textfelder als auch Felder mit URLs drin) und möchte nun eine Art Maske in einem Webpart nutzen, um eine sozusagen mehrdimensionale Filterung vorzunehmen. Der User kann also Kriterien anwählen und diese werden z.B mit Parametern an einen dynamischen Filter weitergeleitet. Dieser Filter sammelt dann die passenden Datensätze aus der Liste aus und "übermittelt" sie wieder zurück an den Webpart. Dort werden sie dann "on-the-fly" in einer Tabelle ausegeben.

Wie kann ich das verwirklichen? Habe mir schon den Code im SharePoint Designer angeguckt und die Stelle, an der die Datensätze gefiltert ausgegeben werden rausgesucht. Das wäre warscheinlich der Punkt an dem die Parameter ansetzen... aber wie gesagt, ich habe da eigtl. wenig Ahnung und wollte mal die Fachmänner bzw. Fachfrauen nach befragen :)

 

MfG

 

Der Don

http://www.imagebanana.com/view/xg3lxsd2/skizze.JPG

Alle Antworten

Top-75-Beitragsschreiber
168 Beiträge

Mahlzeit, sowas macht sich immer sehr gut mit CAML. Kennst du dich mit CAML aus? Du müsstest dann die Abfragen anhand der Nutzereingaben generieren und auf die Liste losjagen.

MfG

Ohne Rang
3 Beiträge

Ne um ehrlich zu sein hab ich da überhaupt kein Vorwissen :( bin vor ner Woche das erste mal mit Sharepoint in Berührung gekommen und arbeite halt gerade in meinem Praktikum an der ganzen Sache. Was ich hier gerade in Wikipedia lese sieht ja vom Syntax nicht allzu kompliziert aus. Ich suche gerade bei google nach Brauchbarem bezüglich CAML...könntest du mir das Prinzip zusammenfassen, wie es auf meine Problemstellung passt? Wird mit CAML dann eine art Maske erstellt? im Webpart ? Greift diese Etwa dann auf nen Filter zurück?

 

MfG

Top-75-Beitragsschreiber
168 Beiträge

Mit CAML kannst du eine "Suche" auf einer Liste machen. Der Rückgabewert ist eine ListItem- Sammlung.

Hier ist mal ein Beispiel:

<Where>

 <And>

  <Ltq>

    <FieldRef Name="ID" />

    <Value Type=\"Counter\">100</Value>

  </Lt>

  <Geq>

    <FieldRef Name="Datum" />

    <Value Type=\"DateTime\"><Today /></Value>

  </Geq>

 </And>

</Where>

 

Die Anfrage gibt dir alle Elemente zurück, deren ID kleiner als 100 ist und das Datum größer gleich heute. weiteres findest du unter: http://msdn.microsoft.com/en-us/library/ms467521.aspx

Benutzen tust du das dann wie folgt (z.B. in einem WebPart):

SPQuery Query = new SPQuery();
Query.Query = myCAML
SPListItemCollection items= myList.GetItems(Query);

Und in der SPListItemCollectionstehen dann alle items auf die die Anfrage passt.

 

MfG

Top-75-Beitragsschreiber
168 Beiträge

Die Query könntest du anhand der Nutzereingaben zusammenbauen. Die ergebnisse Iterierst du und stellst sie in einem DataGrid oder Repeater dar.

Im endeffekt wird so eine Abfrage auch in den Sichten benutzt. Du kannst also mit CAML all das und noch ein bischen mehr machen ;)

Ohne Rang
3 Beiträge

Okay, jetzt nochmal zu den Grundlagen...^^

Ich habe in der Tat schon solchen CAML code modifiziert bevor ich wusste was es ist :D undzwar habe ich einfach mal so einen View Filter von einer SharePoint liste auseinandergefriemelt und bin auch auf einen solchen code gestossen. Nur habe ich jetzt auf Grund meines Unwissens keine Ahnung wo und wie ich jetzt solchen CAML code einbaue...und die eigendliche Query.. in dem simplen Webpart? kommt dann einfach der Code darein oder wie verstehe ich das?

 

 

MfG

Top-75-Beitragsschreiber
168 Beiträge

Ja genau :)

(Achtung Skizze)

CreateChildControls()

{

SPQuery Query = new SPQuery();
Query.Query = myCAML;
SPListItemCollection items= myList.GetItems(Query);

myDataGrid.OnItemDataBound += myDataGrid_OnItemDataBound;

myDataGrid.DataSource = items;

myDataGrid.DataBind();

}

private void myDataGrid_OnItemDataBound(object sender, DataGridItemEventAgrgs e)

{

//fill Grid

}

Wenn du noch den itemDataBound- handler lieferst kannst du dir die Ergebnisse ausgeben.

Top-10-Beitragsschreiber
18.862 Beiträge

Das ist grundsätzlich alles richtig - ob es der Fragende versteht, weiß ich nicht. Ich denke er sucht etwas einfacheres. Aber ein paar Anmerkungen:

- in CreateChildControls erzeugt man nur die Controls. Mit Daten sollten sie in OnPreRender gefüllt werden

- wenn man statt des "normalen" GridView ein SPGridView verwendet, dann sieht es automatisch nach SharePoint aus.

Viele Grüße
Andi
af @ evocom de
Blog
Top-75-Beitragsschreiber
168 Beiträge

Ja, ich stimme wiedermal zu. Es war ja auch nur eine Skizze, das stand ja extra drüber :P

Wie denkst du denn geht es leichter als so? Mir ist da nichts eingefallen, zumal im Startpost schon über WebParts gesprochen wurde.

Top-10-Beitragsschreiber
18.862 Beiträge

niceoldlady:
Es war ja auch nur eine Skizze

Schon klar ;-) Ich habe das nur dazugeschrieben, weil man IMHO gerade Anfängern gleich von Anfang an die "richtige" Vorgehensweise erklären sollte. Und dabei geht es nicht nur um den Fragesteller, sondern auch um eventuelle Mitleser.

niceoldlady:
Wie denkst du denn geht es leichter als so? Mir ist da nichts eingefallen, zumal im Startpost schon über WebParts gesprochen wurde.

Ich wüßte für den konkreten Fall auch nichts einfacheres. Ich hatte nur das Gefühl, daß der Fragesteller von vorhandenen Webparts ausging, die man nur irgendwie zurechtkonfiguriert.

Viele Grüße
Andi
af @ evocom de
Blog
Seite 1 von 1 (10 Elemente) | RSS