Frage

Ich habe eine Sharepoint-Liste Spalte ‚Textzeilen‘ Typen. Out of the box bietet Sharepoint nur die Möglichkeit, einen ‚Count‘ insgesamt für diesen Spalt Typen angezeigt werden soll. Ich möchte in der Lage sein, eine benutzerdefinierte Aggregation der Daten durchzuführen (insbesondere numerische Daten als Text gehalten zusammenzufassen zu überwinden dieser Mangel ).

Ich habe Beispiele dafür etwas ähnliches für berechnete Spalten mit XSLT und ListViewWebPart (Rendering, Sortierung, Filterung, Ansichtsdefinition, Aktionsmenüs usw.), aber diese Funktionalität hinzuzufügen. Wie kann ich das tun?

War es hilfreich?

Lösung 2

Ich habe keine Chance, in vollem Umfang zu testen habe, aber das ist das Beste, was ich tun konnte,:

ein WebPart erstellen, die zwei Steuerelemente enthält:

  1. A ViewToolBar mit dem Kontext der Liste / Ansicht angezeigt werden
  2. A Literal das gerenderte HTML-Code der Ansicht enthält, angezeigt werden

Dies wird dann als die ursprüngliche Liste / Ansicht machen.

Auf den WebPart Rendering, erhalten die Elemente aus der Sicht der RowLimit als Maximalwert, der angibt, so dass alle Elemente in abgerufen werden (nicht nur die erste Seite).

Iterate über die Elemente, die Summe in einem geeigneten Datentyp Berechnung Genauigkeit beizubehalten.

Render die Gesamt als versteckter Wert im HTML und überschreiben die gerenderte Count insgesamt mit Javascript wie durch die Methode hier beschrieben.

Eine grobe Skizze des Codes:

public sealed class TextAggregatingWebPart : WebPart {
  protected override void CreateChildControls() {
    base.CreateChildControls();

    var web = SPContext.Current.Web;
    var list = web.Lists[SourceList];
    var view = list.Views[ViewOfSourceList];

    var toolbar = new ViewToolBar();
    var context = SPContext.GetContext(
    Context, view.ID, list.ID, SPContext.Current.Web);
    toolbar.RenderContext = context;
    Controls.Add(toolbar);

    var viewHtml = new Literal {Text = view.RenderAsHtml()};
    Controls.Add(viewHtml);
  }

  protected override void Render(HtmlTextWriter writer) {
    EnsureChildControls();
    base.Render(writer);

    var web = SPContext.Current.Web;
    var list = web.Lists[SourceList];
    var view = list.Views[ViewOfSourceList];

    var items = list.GetItems(new SPQuery(view) {RowLimit = uint.MaxValue});
    foreach (SPItem item in items) {
      // Calculate total
    }

    // Render total and Javascript to replace Count
  }
}

Beachten Sie, dass dies löst nicht das Problem mit der Ansicht ändern Bildschirm nur Count als Summe für Textspalten zeigt. Auch gibt es eine Möglichkeit, dass zwischen der anfänglichen Wiedergabe durch die Ansicht und das Abrufen der Elemente für die Aggregation könnte produzieren Diskrepanzen zwischen der Gesamt und den angezeigten Elementen.

in die Liste ändert

Andere Tipps

Das einzige, was Sie tun können, mit Summen:

Durchschnitt; Anzahl; Max; Mindest; Summe; Standardabweichung; Variance

Nicht sicher, wie irgendetwas anderes zu berechnen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top