Tengo un problema en una lista de SharePoint: algunos campos aparecen dos veces en el formulario de visualización, en el formulario de nuevo artículo y en la página de configuración de la lista. Ambos campos tienen la misma ID y la misma página de propiedades (misma URL), por lo que ocultar una oculta la otra.
Usando SharePoint Manager Solo puedo ver un campo, pero tal vez miré en los lugares equivocados? ¿Alguien ha experimentado algo similar y cómo puedo solucionar este problema?Sharepoint: el campo aparece dos veces en Ver/Nuevo elemento
Respuesta
No es aconsejable actualizar el xml que crea el tipo de contenido. Si desea agregar campos más adelante al tipo de contenido, hágalo a través de una nueva función, consulte este enlace.
Nota el siguiente texto
Bajo ninguna circunstancia deberá actualizar el archivo de definición de tipo de contenido para un tipo de contenido después de haber instalado y activado ese tipo de contenido. Windows SharePoint Services no realiza un seguimiento de los cambios realizados en el archivo de definición de tipo de contenido. Por lo tanto, no tiene ningún método para reducir los cambios realizados en los tipos de contenido del sitio a los tipos de contenido secundarios. Para obtener información sobre las mejores prácticas al realizar cambios en los tipos de contenido que se han instalado y activado, consulte Actualización de tipos de contenido.
Yepp, he tenido esos problemas trabajando con tipos de contenido agregados a las listas. Cuando realicé actualizaciones sobre los tipos de contenido de alguna manera, a veces obtuve duplicados. Cuando los he visto, parecen ser los mismos Id. Y Nombres, pero la identificación es realmente diferente.
La solución que he usado (funciona con los tipos de contenido al menos) es comparar los enlaces de campo en los tipos de contenido del sitio con los enlaces de campo en el archivo xml real (función) que contiene el tipo de contenido. Si no son la misma cantidad de enlaces de campo ... tome medidas para eliminar los duplicados.
Hola Johan, gracias! Tiene toda la razón, por cierto, este es un tipo de contenido agregado a la lista por una función (no la mía, sin embargo). ¿Dónde puedo encontrar estos enlaces de campo? ¿Se hace programáticamente? – Kobi
Me refiero a
Tengo el mismo problema, después de agregar la columna en la definición de la lista, comienzan a aparecer dos veces en los formularios nuevos/editar/ver elementos. Acabo de cambiar el orden de las columnas en la configuración de la lista y el problema fue resuelto.
Solución interesante, gracias. De hecho, sé de varios problemas en SharePoint que pueden resolverse exactamente por eso ... – Kobi
Usar este comando de PowerShell para limpiar dublicates:
Clear-Host
Add-PSSnapin microsoft.sharepoint.powershell -ErrorAction SilentlyContinue
[System.Reflection.Assembly]::Load("Microsoft.SharePoint, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c")
$web=Get-SPWeb "http://weburl.here"
function cleanFieldLinks($listName){
$list = $web.GetList($listName)
$ct = $list.ContentTypes[0];
$flDub = $ct.FieldLinks | group-object DisplayName | where { $_.Count -gt 1 }
foreach($fl in $flDub) {
$skipFirst = $fl.Group | select-object -skip 1
foreach($flDel in $skipFirst){
$ct.FieldLinks.Delete($flDel.Id)
}
}
$ct.Update()
}
cleanFieldLinks("lists/listurl")
$web.Dispose()
1) En primer lugar, quería mencionar que me encontré con este tema ya que estaba trabajando para hacer que mi paquete de soluciones de MOSS 2007 compatible con MOSS 2013. MOSS 2013 no parece gustarles los nombres de campo duplicados. Entonces, si tiene campos personalizados que tienen el mismo nombre que un campo que viene con MOSS 2013, obtendrá un error de nombre de campo duplicado.
2) Esto me obligó a tener que volver y actualizar mis campos personalizados y tipos de contenido. Me encontré con el problema por el que mis nombres de campo aparecían varias veces después de realizar los cambios en los campos personalizados que causaban el problema del nombre de campo duplicado.
3) Escribí una página de formularios web para resolver el problema de que el campo aparezca varias veces en su vista, nuevo y modifique formularios. Simplemente tendrá que modificar el código para especificar la lista que desea verificar. Esta versión eliminará la primera instancia de fieldref y conservará la segunda instancia:
using System;
using System.Collections;
using System.Configuration;
using System.Data;
//using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
//using System.Xml.Linq;
using Microsoft.SharePoint;
using System.Text;
using System.Collections.Generic;
public partial class FixDuplicateFieldIssue : Microsoft.SharePoint.WebControls.LayoutsPageBase
{
protected void Page_Load(object sender, EventArgs e)
{
if (SPContext.Current.Web.CurrentUser == null)
{
Response.Write("You must be logged in to view this page.");
Response.End();
return;
}
if (!SPContext.Current.Web.DoesUserHavePermissions(SPBasePermissions.ManageWeb))
{
Response.Write("You do not have permissions to view this page.");
Response.End();
return;
}
lblOutput.Text = "";
StringBuilder sbOutput = new StringBuilder();
using (SPSite site = new SPSite(SPContext.Current.Site.ID))
{
using (SPWeb web = site.OpenWeb(SPContext.Current.Web.ID))
{
try
{
hlBack.NavigateUrl = web.Url;
//open the List **** SPECIFY THE LISTNAME HERE ***
SPList spList = web.Lists["LISTNAME"];
if (spList != null)
{
//Check FieldLinks
sbOutput.Append("<table border='1'>");
foreach (SPContentType ct in spList.ContentTypes)
{
sbOutput.Append("<tr>");
sbOutput.Append("<td>" + ct.Name + "</td>");
sbOutput.Append("<td>");
Dictionary<string, Guid> GuidDictionary = new Dictionary<String, Guid>();
List<Guid> RepeatList = new List<Guid>();
//SEARCH THE CONTENT TYPE FOR REPEAT SPFieldLinks
foreach (SPFieldLink spfl in ct.FieldLinks)
{
if (!GuidDictionary.ContainsKey(spfl.Name.ToLower()))
{
GuidDictionary.Add(spfl.Name.ToLower(), spfl.Id);
}
else if (GuidDictionary[spfl.Name.ToLower()].ToString().ToLower()!=spfl.Id.ToString().ToLower())
{
//Record the GUID of the repeat SPFieldLink you want to delete in the RepeatList. In this case, we're recording the first item. If you want to delete the second one, add the spfl.Id instead.
RepeatList.Add(GuidDictionary[spfl.Name.ToLower()]);
sbOutput.Append("<span style='color:red;'>*</span>");
}
sbOutput.Append(spfl.Name + "," + spfl.Id + "," + spfl.DisplayName +"<br />");
}
sbOutput.Append("</td>");
sbOutput.Append("<td>");
sbOutput.Append("Repeats found: " + RepeatList.Count + "<br />");
//DELETE THE Repeat Field Links
foreach (Guid idToDelete in RepeatList)
{
sbOutput.Append("Deleting FieldRef with ID= " + idToDelete.ToString() + "<br />");
web.AllowUnsafeUpdates = true;
ct.FieldLinks.Delete(idToDelete);
ct.Update();
web.AllowUnsafeUpdates = false;
}
sbOutput.Append("</td>");
sbOutput.Append("</tr>");
}
sbOutput.Append("</table>");
}
}
catch (Exception ex)
{
sbOutput.Append("Error Occurred: " + ex.ToString());
}
}
}
lblOutput.Text = sbOutput.ToString();
}
}
esto es solo un loco, fu * k Micro $ oft – krtek
- 1. campo Sharepoint LookUp en el campo Elección?
- 2. Encuentra el elemento con la distancia más larga en una matriz determinada donde cada elemento aparece dos veces?
- 3. Xml simple - Elemento declarado error dos veces
- 4. Cómo mostrar cuántas veces aparece un elemento de matriz
- 5. Oracle cursor que atraviesa el último elemento dos veces
- 6. Cómo utilizar JsonTextReader dos veces
- 7. establecer mediante programación el valor del campo de listitem SharePoint
- 8. Obtiene el elemento que aparece la mayoría de las veces en una matriz
- 9. Sharepoint de campo calculado para creado por
- 10. Sharepoint propiedad elemento web personalizado no aparece en la caja de herramientas
- 11. subcadena más larga que aparece n veces
- 12. CheckBox cambia el valor dos veces
- 13. Prevenir el mensaje de destello que aparece dos veces (en la página con el error y en la página siguiente)
- 14. Listview ItemSelectionChanged dispara dos veces?
- 15. restar dos veces en pitón
- 16. log4j registrando dos veces
- 17. WP7: navegue dos veces
- 18. applicationDidBecomeActive llamarse dos veces
- 19. Liberar memoria dos veces
- 20. Evento jQuery blur desencadenado dos veces en Chrome
- 21. UIGestureRecognizer ¿disparando dos veces?
- 22. keyboardWillShow llamado dos veces
- 23. ¿Es posible abrir el UINavigationController dos veces?
- 24. Criterios de Spring Mongo que consultan dos veces el mismo campo
- 25. Negamax - el jugador se mueve dos veces
- 26. Función de campo calculado de Sharepoint Referencia
- 27. ¿Por qué mi aplicación aparece 4 veces en mi dispositivo?
- 28. El trabajo programado se ejecuta dos veces en el clúster
- 29. Marco de juego - Scala, el método se define dos veces
- 30. Formulario anidado dinámico link_to_add llamado dos veces
El problema existía en la producción, y teníamos datos reales. Creamos nuevas columnas y les copiamos los datos, y eliminamos las columnas duplicadas. Entonces, de alguna manera, tu solución es lo que hicimos, nada. :-) – Kobi