"Diese Aktion kann nicht abgeschlossen werden" wenn Sie versuchen, bereitstellen list-Instanz mit Website TaxonomyField
Fair warning: Das setup für diese Frage ist lange, so geduldig zu sein und bei mir bleiben.
Habe ich zwei Funktionen in meiner Lösung Paket. Die erste ist eine Reihe von Website, die Felder und Inhaltstypen; nennen wir dies eine Verfügen über Eine. Zwischen den Feldern ein Feld vom Typ "TaxonomyFieldType" und assoziiertes Feld "Hinweis" (eine Erläuterung der Hinweis-Feld).
<Elements ...>
<Field ID="{956a1078-ec35-4c04-83c4-0a3742119496}"
Name="TaxonomyTextField"
Type="Note" DisplayName="Tags_0"
ShowInViewForms="FALSE"
Required="FALSE"
Group="MyGroup"
Hidden="TRUE"/>
<Field ID="{92BC866B-0415-45F0-B431-D4DF69C421CC}"
Name="Tags"
DisplayName="Custom Tags"
Type="TaxonomyFieldType"
ShowField="Term1033"
Required="FALSE"
Group="MyGroup"
>
<Customization>
<ArrayOfProperty>
<Property>
<Name>IsPathRendered</Name>
<Value xmlns:q7="http://www.w3.org/2001/XMLSchema" p4:type="q7:boolean" xmlns:p4="http://www.w3.org/2001/XMLSchema-instance">true</Value>
</Property>
<Property>
<Name>TextField</Name>
<Value xmlns:q6="http://www.w3.org/2001/XMLSchema" p4:type="q6:string" xmlns:p4="http://www.w3.org/2001/XMLSchema-instance">{956a1078-ec35-4c04-83c4-0a3742119496}</Value>
</Property>
</ArrayOfProperty>
</Customization>
</Field>
</Elements>
und
<Elements xmlns="http://schemas.microsoft.com/sharepoint/">
<!-- Parent ContentType: Item (0x01) -->
<ContentType ID="0x0100b61c774f4c0e4a89bf230cbb44cd4f75"
Name="MyContent"
Group="MyGroup"
Description="Description of My Content Type"
Inherits="FALSE"
Overwrite="TRUE"
Version="0">
<FieldRefs>
<FieldRef ID="{52578fc3-1f01-4f4d-b016-94ccbcf428cf}" DisplayName="Comments" Name="Comments" Required="FALSE"/>
<FieldRef ID="{956a1078-ec35-4c04-83c4-0a3742119496}" Name="TimeTrackerTaxonomyTextField"/>
<FieldRef ID="{92BC866B-0415-45F0-B431-D4DF69C421CC}" DisplayName="Tags" Name="Tags" Required="FALSE"/>
</FieldRefs>
</ContentType>
</Elements>
In der feature-Empfänger für die erste Funktion (nennen wir es mal die Funktion A), die ich programmgesteuert abrufen dieser TaxonomyField
und
sicherzustellen, dass Sie so konfiguriert ist, abrufen, Begriffe aus einem vorgegebenen Begriff setzen:
public override void FeatureActivated(SPFeatureReceiverProperties properties)
{
SPWeb web = GetWebObj(properties.Feature.Parent);
Guid fieldId = new Guid("92BC866B-0415-45F0-B431-D4DF69C421CC");
TaxonomyField field = web.Fields[fieldId] as TaxonomyField;
string groupName = properties.Feature.Properties["TaxonomyGroupName"].Value;
string termSetName = properties.Feature.Properties["TermSetName"].Value;
DiagnosticService logger = DiagnosticService.Local;
TermSet set = null;
TaxonomySession session = new TaxonomySession(web.Site);
TermSetCollection termSets = session.GetTermSets(termSetName, System.Threading.Thread.CurrentThread.CurrentUICulture.LCID);
if (termSets == null || termSets.Count == 0)
{
logger.WriteTrace(1, logger[CategoryId.Deployment], TraceSeverity.Medium,
"Activity Tags term set not found. Ensuring '{0}' group and '{1}' term set.", groupName, termSetName);
//create the term set in the default store
var store = session.DefaultSiteCollectionTermStore;
var group = store.EnsureGroup(groupName);
set = group.EnsureTermSet(termSetName);
store.CommitAll();
logger.WriteTrace(1, logger[CategoryId.Provisioning], TraceSeverity.Verbose, "created taxonomy group '{0}' and term set '{1}'", group, set);
}
else
{
logger.WriteTrace(1, logger[CategoryId.Deployment], TraceSeverity.Verbose, "term set found.");
//need to make sure we grab the one in the right group, or it might be someone else's term set.
foreach (var termSet in termSets)
{
if (String.Equals(termSet.Group.Name,groupName))
{
if (set == null)
{
set = termSet;
}
else
{
logger.WriteTrace(1, logger[CategoryId.Deployment], TraceSeverity.Unexpected,
"Multiple term sets named '{0}' found in more than one taxonomy group.", termSetName);
throw new SPException(String.Format("Multiple term sets named '{0}' found in more than one taxonomy group. "+
"Was there a previous installation that was not removed properly?", termSetName));
}
}
}
if (set == null)
{
//term set found, but in an unrecognized group. leave it alone and do like above
logger.WriteTrace(1, logger[CategoryId.Deployment], TraceSeverity.Verbose,
"Term set '{0}' found, but in unrecognized group. Provisioning new group and term set as configured.", termSetName);
var store = session.DefaultSiteCollectionTermStore;
var group = store.EnsureGroup(groupName);
set = group.EnsureTermSet(termSetName);
store.CommitAll();
logger.WriteTrace(1, logger[CategoryId.Provisioning], TraceSeverity.Verbose, "created taxonomy group '{0}' and term set '{1}'", group, set);
}
}
//set termSets to the newly created term set
field.SspId = set.TermStore.Id;
field.TermSetId = set.Id;
field.TargetTemplate = String.Empty;
field.AnchorId = Guid.Empty;
field.Open = true;
field.AllowMultipleValues = true;
field.Update();
}
Die zweite Funktion enthält eine Liste von Vorlagen und Instanzen, von denen verwendet, die oben genannten Inhalte geben; nennen wir diese Funktion Funktion B.
Hier ist die Liste schema für die Liste, die explodiert, wenn bereitgestellt (ListInstance
element nicht angezeigt):
<?xml version="1.0" encoding="utf-8"?>
<List xmlns:ows="Microsoft SharePoint" Title="My List" FolderCreation="FALSE" Direction="$Resources:Direction;" Url="Lists/MyList" BaseType="0" xmlns="http://schemas.microsoft.com/sharepoint/">
<MetaData>
<ContentTypes>
<ContentTypeRef ID="0x0100b61c774f4c0e4a89bf230cbb44cd4f75"></ContentTypeRef>
</ContentTypes>
<Fields>
<Field ID="{956a1078-ec35-4c04-83c4-0a3742119496}" Name="TaxonomyTextField" Type="Note"/>
<Field ID="{92bc866b-0415-45f0-b431-d4df69c421cc}" Name="Tags" Type="TaxonomyFieldType"/>
<Field ID="{52578FC3-1F01-4f4d-B016-94CCBCF428CF}" Name="_Comments" Type="Note"/>
</Fields>
<Views>
<View BaseViewID="1" Type="HTML" WebPartZoneID="Main" DisplayName="$Resources:core,objectiv_schema_mwsidcamlidC24;" DefaultView="TRUE" MobileView="TRUE" MobileDefaultView="TRUE" SetupPath="pages\viewpage.aspx" ImageUrl="/_layouts/images/generic.png" Url="AllItems.aspx">
<Toolbar Type="Standard" />
<XslLink Default="TRUE">main.xsl</XslLink>
<RowLimit Paged="TRUE">30</RowLimit>
<ViewFields>
<!-- <FieldRef Name="Tags"></FieldRef> -->
<FieldRef Name="_Comments"></FieldRef>
</ViewFields>
<Query>
<OrderBy>
<FieldRef Name="ID">
</FieldRef>
</OrderBy>
</Query>
<ParameterBindings>
<ParameterBinding Name="NoAnnouncements" Location="Resource(wss,noXinviewofY_LIST)" />
<ParameterBinding Name="NoAnnouncementsHowTo" Location="Resource(wss,noXinviewofY_DEFAULT)" />
</ParameterBindings>
</View>
</Views>
<Forms>
<Form Type="DisplayForm" Url="DispForm.aspx" SetupPath="pages\form.aspx" WebPartZoneID="Main" />
<Form Type="EditForm" Url="EditForm.aspx" SetupPath="pages\form.aspx" WebPartZoneID="Main" />
<Form Type="NewForm" Url="NewForm.aspx" SetupPath="pages\form.aspx" WebPartZoneID="Main" />
</Forms>
</MetaData>
</List>
Nachdem die Lösung implementiert ist, ich bin in der Lage zu aktivieren Verfügen über Eine, ohne Frage. Die Websitespalten und Inhaltstypen erstellt werden. Wenn ich versuche zu aktivieren Funktion B, die die Aktivierung der Funktion call-stack explodiert und die Ergebnisse in eine Fehler-Seite mit dem folgenden stack trace:
[COMException (0 x 80004005): diese Aktion kann Nicht abgeschlossen werden. Bitte versuchen Sie es erneut.] Microsoft.SharePoint.Bibliothek.SPRequestInternalClass.UpdateField(String bstrUrl, String bstrListName, String bstrXML) +0 Microsoft.SharePoint.Bibliothek.SPRequest.UpdateField(String bstrUrl, String bstrListName, String bstrXML) +134 [SPException: diese Aktion kann Nicht abgeschlossen werden. Bitte versuchen Sie es erneut.] Microsoft.SharePoint.Verwaltung.SPElementDefinitionCollection.ProvisionListInstances(SPFeaturePropertyCollection Requisiten, SPSite site, SPWeb web, Boolean fForce) +23649702 Microsoft.SharePoint.Verwaltung.SPElementDefinitionCollection.ProvisionElements(SPFeaturePropertyCollection Requisiten, SPWebApplication webapp, SPSite site, SPWeb web, Boolean fForce) +197 Microsoft.SharePoint.SPFeature.Aktivieren(SPSite siteParent, SPWeb webParent, SPFeaturePropertyCollection props, Boolean fForce) +25437263 Microsoft.SharePoint.SPFeatureCollection.AddInternal(SPFeatureDefinition featdef, Version version, SPFeaturePropertyCollection Eigenschaften, Boolean force, Boolean fMarkOnly) +27496735 Microsoft.SharePoint.SPFeatureCollection.AddInternalWithName(Guid featureId, String featureName, Version version, SPFeaturePropertyCollection Eigenschaften, Boolean force, Boolean fMarkOnly, SPFeatureDefinitionScope featdefScope) +150 Microsoft.SharePoint.SPFeatureCollection.Add(Guid featureId, Boolean force, SPFeatureDefinitionScope featdefScope) +83 Microsoft.SharePoint.WebControls.FeatureActivator.ActivateFeature(Guid featid, SPFeatureDefinitionScope featdefScope) +699 Microsoft.SharePoint.WebControls.FeatureActivatorItem.BtnActivateFeature_Click(Objekt objSender, EventArgs evtargs) +140 System.Web.UI.WebControls.- Taste.OnClick(EventArgs e) +115 System.Web.UI.WebControls.- Taste.RaisePostBackEvent(String eventArgument) +140 System.Web.UI.Seite.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +29 System.Web.UI.Seite.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +2981
Ich bin ziemlich sicher, dass es etwas falsch mit der Art, wie ich die Konfiguration der TaxonomyField
im Verfügen über Eine; die Assoziation mit einer list-Instanz an die provisioning-Zeit ist die Ursache des Fehlers (ich habe bestimmt dies durch das auskommentieren der Stücke und die Bereitstellung über und über). Es scheint sehr wenig Dokumentation, oder auch blogger-Erfahrungen mit TaxonomyFields
- und provisioning-Sie in der Liste Instanzen, so bin ich ein wenig ratlos. Hat jemand eine Idee, was falsch läuft?
InformationsquelleAutor Ben Collins | 2011-02-17
Du musst angemeldet sein, um einen Kommentar abzugeben.
Folgte ich Bereitstellen von SharePoint 2010 Managed Metadata Spalten von Wictor Wilén und war in der Lage, etwas zu bekommen ähnliche arbeiten (werden sicher auch die änderung von dieser Kommentar).
InformationsquelleAutor Rich Bennema
Landete ich öffnen Sie eine support-Anfrage mit microsoft, um dies herausgefunden. Schließlich, Ihre service-rep verfolgt Sie nach unten, um die Einstellung der Eigenschaft
DisallowContentTypes="FALSE"
auf der Liste Vorlage undEnableContentTypes="TRUE"
auf der Liste schema. Das löste mein provisioning Problem.Allerdings hab ich noch ein Problem mit der Lage, tatsächlich Elemente erstellen, die auf der neu bereitgestellten Listen, die mit dem hidden Feld, muss begleiten die Taxonomie-Feld (grrr). Ich bereitgestellt haben, eine Hinweis-Feld in der Website, und ich habe verwiesen wird, in der Liste meiner Vorlage, und ich hab die TextField-Eigenschaft, die ID dieses Feld Hinweis in sowohl für die site-definition für die Spalte und in der Feld-definition.
Wictor macht zu erwähnen, dass (wenn ich mich vom Lesen von seinem post), aber es gibt noch mehr hier: http://www.sharepointconfig.com/2011/03/the-complete-guide-to-provisioning-sharepoint-2010-managed-metadata-fields/
Ich bin derzeit fest auf die Ausnahme, die ausgelöst wird bei der item Erstellung Zeit, zu sagen:
Scheint, Sie verpasste hinzufügen einer versteckten Hinweis-Feld, um Ihre Inhalte geben.
InformationsquelleAutor Ben Collins
Habe ich immer die gleiche Fehlermeldung beim aktivieren eine Sandbox-Funktion, enthält ListInstance-elements für ein Sandbox-benutzerdefinierte Liste Vorlage enthält ein benutzerdefiniertes ContentTypeRef. Die Liste ist erstellt, aber die Funktion Fehler bei der Erstellung. Weiter enthält die Liste eine auto-generated-Content-Typ, eher als die, die in der Liste angegebenen definition. Wenn Sie halten zu versuchen, um die Funktion zu aktivieren, bis alle Listen erstellt werden, die Funktion schließlich aktivieren.
Weiter habe ich bemerkt, dass ich nicht aktualisieren können Sandkastenlösungen benutzerdefinierte Feld Eigenschaften von Sandbox-Lösungen in MOSS 2010. Ich bekomme die gleiche Art von Fehlermeldung, die angibt, dass es nicht den Vorgang abzuschließen, wenn SPListItem.UpdateField wird aufgerufen, auf ein benutzerdefiniertes Feld definiert über XML-Code in einer Sandbox-Lösung.
Ich bin jetzt zu dem Schluss, dass Sandbox-Feld-updates werden nicht unterstützt von Sandbox-Lösungen für MOSS 2010.
Statt programmgesteuert aktualisieren Felder von Sandkastenlösungen benutzerdefinierte Inhaltstypen, sollten Sie vollständig zu definieren, das Feld komplett in das XML-Feld-definition und Liste-template-Feld XML-element.
Den Weg, um Ihre Liste um Ihre benutzerdefinierten Inhaltstyp und aktivieren, ohne dass "Diese Aktion kann Nicht Abgeschlossen" Fehlermeldung lautet wie folgt:
1) Verwenden Sie ein Standard-ContentTypeRef in Ihre Liste definition, anstelle der benutzerdefinierten man Sie erstellt.
https://msdn.microsoft.com/en-us/library/office/ms452896(v=office.14).aspx
Zum Beispiel:
0x01 Default Inhaltstyp Element
0x0101 Standard-Inhaltstyp Dokument
In der Liste Schema.xml Datei, wenn Sie Ihre Content-Typ ist auf der Grundlage der Standard-Inhaltstyp Element, Sie würden es zu ändern:
2) Fügen Sie eine Funktion Aktiviert, Event-Empfänger, um die Funktion, die code ausführt, konfigurieren Sie die Liste mit den content-type.
Schrieb ich eine Funktion, die im Grunde wird der Inhaltstyp für die Liste und entledigt sich von anderen content-Typen, die der Liste zugeordnet. Ihre Funktion Aktivierung der Ereignis-Empfänger kann diese Funktion ausführen und festlegen der Inhaltstypen für Listen, die es sein sollte. Die Funktion unterhalb davon ausgegangen, dass die content-Typen werden eindeutig benannt. Sie können fügen Sie einen Scheck für den content Typ name der Gruppe, als auch, wenn nötig.
Sollte ermöglichen Sie, um Ihre Liste instanziiert und die Art des Inhalts, um Ihre benutzerdefinierten Inhaltstyp.
Wenn Sie die Liste basiert off der Event-Typs 0x0102, dann ist die obige Funktion kann nicht funktionieren, ohne dass ein Fehler in einer Sandbox-Lösung.
Für den Event-Typ, verwendet habe ich das Standard-Event-Content-Typ und ran-code zum anpassen der Liste (hinzufügen von Spalten), wie gebraucht.
InformationsquelleAutor WWC