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

Teile einer Liste als Webpart ausgeben mit Bedienelementen

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

Ohne Rang
17 Beiträge
Green Horn erstellt in 23 Feb 2012 13:38

Hallo,

ich habe folgendes Problem. Ich möchte Teile eine sehr große Liste mit vielen Spalten und Zeilen als Webpart ausgeben. Der Benutzer soll die möglichkeit haben mit DropDown-Elementen und Texteingaben die (Teil) Liste zu filtern. Gibt es eine Möglichkeit die nötigen Spalten als Gridview -Tabelle automatisch auszugeben, damit dann später über CAML filtern kann, je nachdem welche Eingaben getätigt wurden?

Beim Programmieren einer SPGridView wird nur der Titel ausgeben. Andere Teile der Liste werden laut Exception nicht gefunden.

 

protected override void CreateChildControls()
        {
            GV_Tabelle= new SPGridView();
            GV_Tabelle.AutoGenerateColumns = false;
            GV_Tabelle.AllowPaging = true;
            GV_Tabelle.PageSize = 10;
   
           
            SPBoundField boundField;
            boundField= new SPBoundField();
            boundField.DataField = "Title";
            boundField.HeaderText = "Ident Nr.";
            GV_Tabelle.Columns.Add(boundField);

            boundField = new SPBoundField();
            boundField.DataField = "Produktname";
            boundField.HeaderText = "Produktname";
            GV_Tabelle.Columns.Add(boundField);
            Controls.Add(GV_Motor);           
        }

        protected override void Render(HtmlTextWriter writer)
        {
            SPWeb web = Site.OpenWeb();
            SPList list = web.Lists["Produkte"];

            GV_Tabelle.DataSource = list.Items;
            GV_Tabelle.DataBind();
           
            GV_Tabelle.RenderControl(writer); 
        }

Wenn ich Produktname weglasse, dann gibt er mir wie gesagt, den Inhalt der Titel aus. Füge ich aber eine neue Spalte hinzu, wird eine Exception geworfen, dass die Spalte "Produktnamen" nicht gefunden wurde. Diese existiert aber in der Liste. Weiss jemand rat oder eine gute Vorangehensweise?

Gibt es eine (einfache) Möglichkeit eine angepasste Liste als Webpart auszugeben (auf Code-Ebene) und damit man Bedienelemente noch hinzuzufügen kann welche die Liste anpassen?

Vielen Dank und

Gruß

Green Horn

Alle Antworten

Top-10-Beitragsschreiber
19.144 Beiträge

Wenn Du die Spalten so bindest, werden die Felder als Public Property erwartet. Bei Title funktioniert das, weil SPListItem eine Eigneschaft Title hat, aber bei allen anderen Feldern geht das nicht.

Du kannst als DataSource aber SPListItemCollection.ToDataTable() verwenden.

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
17 Beiträge

Vielen Dank für die Antwort. Das werde ich nachher ausprobieren. Gibt es eine Möglichkeit "automatisch" das Layout einer GridView auszugeben, welche die Filter-, Sortier und Page-Optionen einer "normalen" SP-Liste hat? Oder muss ich eher den aufwendigeren Weg gehen und diese Funktionen alle selber implementieren.

Top-10-Beitragsschreiber
19.144 Beiträge

Ich würde mal sagen teilautomatisch ;-)

Sortierung läßt sich z.B. über AllowSorting einschalten (wenn man den Spalten noch die passende SortExpression angibt). Andere Dinge erfordern dann etwas mehr Arbeit. Es gibt im Netz aber massenhaft gute Beispiele dazu.

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