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.




Eigenes WebPart, Sharepoint generiert divs bei RichtText-Feldern

Geprüfte Antwort Dieser Beitrag hat 9 Antworten

Ohne Rang
40 Beiträge
Thomas S erstellt 10 März 2011 11:15
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hallo,

 

ich arbeite gerade, nach einem Tutorial, an meinem ersten WebPart. Die Aufgabe des Webparts ist recht einfach: Es soll eine Liste ausgeben. Die Liste besteht aus 2 Spalten(Eine Textzeile) und einer Spalte(Mehrere Textzeilen, RichText). Die einzeilige Textzeilen werden korrekt ausgegeben, an der RichText-Spalte fügt SharePoint jedoch ein DIV an. Weiteres seht ihr auf dem Screenshot. Kennt jemand dieses Problem und vielleicht sogar eine Lösung dafür?

 

Gruß

soyo

Alle Antworten

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 10 März 2011 11:43
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Das ist völlig normal, schließlich wird in Rich-Text-Feldern HTML gespeichert. Du mußt nur dafür sorgen, daß es wieder richtig dargestellt wir.

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
40 Beiträge
Thomas S Als Antwort am 10 März 2011 11:46
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Danke für deine Antwort, doch wie tue ich das?

 

EDIT: Ich habe den Fehler gefunden:

 table.Columns.Add("Ansprechpartner", typeof(RichTextField));

vorher hatte ich typeof(String) verwendet

Ohne Rang
40 Beiträge
Thomas S Als Antwort am 10 März 2011 11:53
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Das war doch leider nicht die Lösung. Jetzt bekomm ich eine Fehlermeldung im browser:

 

Fehler

Es ist ein unerwarteter Fehler aufgetreten.

Führen Sie die Problembehandlung mit Microsoft SharePoint Foundation aus.

Korrelations-ID: 5801eed4-f199-431e-9ff6-47a418d81134

Datum und Uhrzeit: 10.03.2011 11:54:07


Bei RichTextField handelt es sich ja auch nicht um einen DataType, blöder Fehler von mir. Das alte Problem besteht aber immer noch, wie stelle ich den RichText-Inhalt richitg in meiner Liste dar?
Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 10 März 2011 12:40
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Ich weiß ja nicht, wie Du diese Tabelle aufbaust. An der Stelle, wo der Richttext ausgegeben wird, sollte das verwendete Control eine Eigenschaft wie HtmlEncode o.ä. haben, die Du auf false setzen kannst.

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
40 Beiträge
Thomas S Als Antwort am 10 März 2011 13:21
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

so gebe ich die Liste aus, über einen GriedView

 

protected void Page_Load(object sender, EventArgs e)
        {
            SPWeb web = SPContext.Current.Web;
            SPList list = web.Lists.TryGetList("Kunden 123");
            if (!Page.IsPostBack)
            {
                BindToGrid(list, gridViewCustomers);
            }
        }

        private void BindToGrid(SPList myList, SPGridView gridView)
        {
            SPListItemCollection results = myList.Items;

            DataTable table = new DataTable();
            table.Columns.Add("Name", typeof(string));
            table.Columns.Add("Stadt", typeof(string));
            table.Columns.Add("Ansprechpartner", typeof(string));

            DataRow row;

            foreach (SPListItem result in results)
            {
                row = table.Rows.Add();
                row["Name"] = result["Name"].ToString();
                row["Stadt"] = result["Stadt"] != null ? result["Stadt"].ToString() : string.Empty;
                row["Ansprechpartner"] = result["Ansprechpartner"] != null ? result["Ansprechpartner"].ToString() : string.Empty;
            }

            SPBoundField boundField = new SPBoundField();
            boundField.HeaderText = "Kunde";
            boundField.DataField = "Name";
            gridView.Columns.Add(boundField);

            boundField = new SPBoundField();
            boundField.HeaderText = "Stadt";
            boundField.DataField = "Stadt";
            gridView.Columns.Add(boundField);

            boundField = new SPBoundField();
            boundField.HeaderText = "Ansprechpartner";
            boundField.DataField = "Ansprechpartner";
            gridView.Columns.Add(boundField);

            gridView.DataSource = table.DefaultView;
            gridView.DataBind();
        }

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 10 März 2011 13:27
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Dann nim statt dem SPBoundFiled ein "normales" ASP.NET BoundField. Das hat eine HtmlEncode-Eigenschaft.

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
40 Beiträge
Thomas S Als Antwort am 10 März 2011 14:15
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Leider funktioniert das auch nicht. Das Problem ist das er die Tags falsch im Quelltext darstellt:

<div class="ExternalClass6FFB54C08B684AF0BACD73FF54284774"><p>testansprechpartner​</p></div>

< =&lt;

> =&gt;

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 10 März 2011 14:31
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Ist eigentlich Dein Debugger kaputt? ;-)

Dein Feld "Ansprechpartner" ist ein Personenfeld? Dann caste es gleich in den entsprechenden Typ SPFieldUserValue und entnimm den korrekten Wert von dort.

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
40 Beiträge
Thomas S Als Antwort am 10 März 2011 14:37
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Ewig klappt nix und jetzt habe ich 2 Lösungen. Einmal mit RegEx die HTML-Tags entfernen, oder HTMLEncode des BoundField auf false setzten. (Sorry, hatte es vorher auf true :-| )

 

Vielen dank