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.




Teile einer Liste als Webpart ausgeben mit Bedienelementen

Unbeantwortet Dieser Beitrag hat 3 Antworten

Ohne Rang
17 Beiträge
Green Horn erstellt 23 Feb. 2012 13:38
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

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

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 23 Feb. 2012 13:44
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

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
Green Horn Als Antwort am 23 Feb. 2012 14:12
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

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.

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 23 Feb. 2012 15:41
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

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