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.




DFWP - Column 'Content Type ID' does not exist

Geprüfte Antwort Dieser Beitrag hat 2 Antworten

Ohne Rang
367 Beiträge
Christian Merkel erstellt 12 März 2012 13:32
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hi,

ich hab ein erweitertes DFWP erstellt und will mir Daten aus einer Liste anzeigen lassen.

Dabei erhalte ich jedoch immer wieder diesen Fehler:

Error while executing web part: System.ArgumentException: Column 'Content Type ID' does not exist. It may have been deleted by another user.  /Lists/MyList   
 at Microsoft.SharePoint.SPFieldCollection.GetFieldByInternalName(String strName, Boolean bThrowException)   
 at Microsoft.SharePoint.WebPartPages.DataFormWebPart.GetSchema(SPFieldCollection fields, SPListItem listItem, PropertyDescriptorCollection propDescs, List`1 aggregateList, String& groupName, String& groupName2, SchemaFieldInfo& groupInfo1, SchemaFieldInfo& groupInfo2, BaseXsltListWebPart webpart, Boolean bUseServerDataFormat, SPList list, Boolean bHasExternalDataSource)   
 at Microsoft.SharePoint.WebControls.SingleDataSource.GenerateAugmentedSchema(SPListItem listItem, String[] fieldList, Boolean includeHidden, Boolean useInternalName, PropertyDescriptorCollection descriptors)   
 at Microsoft.SharePoint.WebControls.SingleDataSource.GetXPathNavigatorInternal()   
 at Microsoft.SharePoint.WebControls.SingleDataSource.GetXPathNavigator()   
 at Microsoft.SharePoint.WebControls.SyncMergedDataSource.GetXPathNavigator()   
 at Microsoft.SharePoint.WebControls.AggregateDataSourceView.get_AggregateNavigator()   
 at Microsoft.SharePoint.WebControls.SingleDataSource.GetXPathNavigator()   
 at Microsoft.SharePoint.WebPartPages.DataFormWebPart.GetXPathNavigator(String viewPath)   
 at Microsoft.SharePoint.WebPartPages.DataFormWebPart.PrepareAndPerformTransform(Boolean bDeferExecuteTransform)

Weis einer warum dieser Fehler auftritt? Ich referenze weder im XSLT-Template noch in meinen DataFields auf dieses Feld...

Das Projekt besteht aus:

  • ContentType
  • ListTemplate / Definition
  • ListInstance
  • DFWP welches auf diese Instanz verweist

Also die Liste beinhaltet als einzigen ContentType meinen selbst erstellten!

Das mysteriöse:

als ich das ganze mit dem Designer entwickelt und getestet hab, ging es...

Nach der eigenentwicklung + deployment gings nicht.

In der OnInit erstell ich die DataConnection:

                this.ParameterBindings = BuildParameterBindings();
                this.DataSources.Add(BuildDataSource());
                this.DataFields = "@Title,Title;@MyContent,MyContent;"+
                                  "@Author,Created By;@ID,ID;" +
                                  "@Modified,Modified;@Created,Created;@Editor,Modified By;"+
                                  "@Attachments,Attachments;";
                this.Xsl = BuildXsl();
                this.DataBind();

 

        private string BuildParameterBindings()
        {
            StringBuilder paramBind = new StringBuilder("<ParameterBindings>");
            paramBind.Append("<ParameterBinding Name=\"dvt_apos\" Location=\"Postback;Connection\"/>");
            paramBind.Append("<ParameterBinding Name=\"ManualRefresh\" Location=\"WPProperty[ManualRefresh]\"/>");
            paramBind.Append("<ParameterBinding Name=\"UserID\" Location=\"CAMLVariable\" DefaultValue=\"CurrentUserName\"/>");
            paramBind.Append("<ParameterBinding Name=\"Today\" Location=\"CAMLVariable\" DefaultValue=\"CurrentDate\"/>");
            paramBind.Append("<ParameterBinding Name=\"dvt_firstrow\" Location=\"Postback;Connection\"/>");
            paramBind.Append("<ParameterBinding Name=\"dvt_nextpagedata\" Location=\"Postback;Connection\"/>");
            paramBind.Append("</ParameterBindings>");

            return paramBind.ToString();
        }

 

        private AggregateDataSource BuildDataSource()
        {
            StringBuilder dataSource = new StringBuilder();
            AggregateDataSource ads = new AggregateDataSource();
            ads.SeparateRoot = "true";           

            SPDataSource spdsPosts = new SPDataSource();
            SPDataSource spdsComments = new SPDataSource();
            Parameter p = new Parameter();
            Parameter c = new Parameter();
            p.Name = "ListName";
            p.DefaultValue = "MyList";

            spdsPosts.SelectCommand = "<View><Query><OrderBy><FieldRef Name=\"Created\" Ascending=\"FALSE\"/></OrderBy></Query></View>";
            spdsPosts.DataSourceMode = SPDataSourceMode.List;
            spdsPosts.SelectParameters.Add(p);
            spdsPosts.UpdateParameters.Add(p);
            spdsPosts.InsertParameters.Add(p);
            spdsPosts.DeleteParameters.Add(p);

            dataSource.AppendLine("<concat name=\"data source\">");
                dataSource.AppendLine("<datasource name=\"MyList\" id=\"0\" Type=\"SPList\"/>");
            dataSource.AppendLine("</concat>");

            ads.Sources.Add(spdsPosts);
            ads.Aggregate = dataSource.ToString();

            return ads;
        }

Alle Antworten

Ohne Rang
367 Beiträge
Christian Merkel Als Antwort am 14 März 2012 16:36
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Ok.

erstes Problem behoben. Es alg an der fehlenden Eigenschaft "UseInternalName" bei der DataSource... Die ist standardmässig auf false gesetzt. habe ich geändert und jetzt erhalte ich folgenden fehler:

 

Error while executing web part: System.Exception: An error occurred while processing the data for this request.  Contact the server administrator for more information.   
 at Microsoft.SharePoint.WebControls.SyncMergedDataSource.GetXPathNavigator()   
 at Microsoft.SharePoint.WebControls.AggregateDataSourceView.get_AggregateNavigator()   
 at Microsoft.SharePoint.WebControls.SingleDataSource.GetXPathNavigator()   
 at Microsoft.SharePoint.WebPartPages.DataFormWebPart.GetXPathNavigator(String viewPath)   
 at Microsoft.SharePoint.WebPartPages.DataFormWebPart.PrepareAndPerformTransform(Boolean bDeferExecuteTransform)

Was auch immer der mir wieder sagt.

Ich habe das ganze 1zu1 im Designer (daher stammt mein xslt und der aufbau der datasource) und da geht es aber!

Was stimmt also hier noch nicht? Leider gibt es beim Debugen keine offensichtlichen fehler, da das DFWP alles wegkapselt.

Kennt wer eine mögliche Lösung? Die liste gibt es und alle felder auch.

Einen ähnlichen Fehler hatte ich schonmal, da lag es an "allow anonymus users". doch das ist aus. also scheint es woanders her zu kommen :(

SharePoint Enthusiast

Ich helfe gern, wenn es mein Zeit zu lässt :)
Gern auch per direkter Anfrage auf XING

Ohne Rang
367 Beiträge
Christian Merkel Als Antwort am 11 Apr. 2012 13:30
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Ich konnte es lösen :)

Es lag an der Embeded-Ressource. Die XML-Datei hatte ich noch mit der standard-xml-Zeile versehen als erste Zeile:

<?xml version="1.0" encoding="utf-8" ?>

Danach kam dann diese Zeile:

<xsl:stylesheet xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:x="http://www.w3.org/2001/XMLSchema" xmlns:d="http://schemas.microsoft.com/sharepoint/dsp" version="1.0" exclude-result-prefixes="xsl msxsl ddwrt" xmlns:ddwrt="http://schemas.microsoft.com/WebParts/v2/DataView/runtime" xmlns:asp="http://schemas.microsoft.com/ASPNET/20" xmlns:__designer="http://schemas.microsoft.com/WebParts/v2/DataView/designer" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:msxsl="urn:schemas-microsoft-com:xslt" xmlns:SharePoint="Microsoft.SharePoint.WebControls" xmlns:ddwrt2="urn:frontpage:internal">

 

Mit dem entfernen der xml-Zeile ging es dann auch :D

Manchmal sind es die einfachsten sachen :(

SharePoint Enthusiast

Ich helfe gern, wenn es mein Zeit zu lässt :)
Gern auch per direkter Anfrage auf XING