più tipi di campo 0x81020014One o non sono installati correttamente. Vai alla pagina delle impostazioni lista per eliminare questi campi
-
18-09-2019 - |
Domanda
in SharePoint quando si cerca di aggiornare un elenco sto ottenendo l'errore:
0x81020014One or more field types are not installed properly. Go to the list settings page to delete these fields.
Il Caml che si sta creando è:
<Batch PreCalc='TRUE' OnError='Continue'>
<Method ID='1' Cmd='Update'>
<Field Name='ID'>4</Field>
<Field Name='Flagged'>False</Field>
</Method>
</Batch>
Quando eseguo il Caml da U2U funziona aggiornamenti sottili e il campo. Quando metto a punto il mio codice in VS ottengo l'errore di cui sopra.
Il codice di creazione e chiamando il batch è qui sotto:
var ws = new com.freud.intranet.lists.Lists {
Url = WebServiceHelper.wsContactsList,
Credentials = WebServiceHelper.AdminCredentials
};
var batch = "<Batch PreCalc='TRUE' OnError='Continue'><Method ID='1' cmd='Update'><Field Name='ID'>" + contactID
+ "</Field><Field Name='Flagged'>" + flag + "</Field></Method></Batch>";
var document = new XmlDocument();
var stringReader = new StringReader(batch);
var xmlReader = XmlReader.Create(stringReader);
var node = document.ReadNode(xmlReader);
ws.UpdateListItems("Master Contact Joining Table", node);
Perché il lavoro caml in U2U e non in VS?
Da Googling il problema potrebbe essere perché non sto usando i nomi intrnal tuttavia viene eseguito in U2U è per questo che mi sono confuso.
Soluzione 2
Stavo usando la lista sbagliata nel codice da qui l'errore.
Altri suggerimenti
Il trucco per lavorare con una lista è quello di ottenere il servizio Web posizione corretta, l'URL nel servizio Web di riferimento impostato nella posizione corretta, e utilizzare i nomi dei campi così come sono definiti nella lista.
private void ReadTaskandAddtask()
{
try
{
tcfifsharepoint.Lists listServiceBase = new tcfifsharepoint.Lists();
// SharePoint Web Serices require authentication
listServiceBase.Credentials = System.Net.CredentialCache.DefaultCredentials;
listServiceBase.Url = "http://SPServer/Site/_vti_Bin/lists.asmx";
String newIssueTitle = "Programmatically added issue 3";
String listGUID = "FC519894-509A-4B66-861E-2813DDE14F46";
String activeItemViewGUID = "C93FFC02-368B-4D06-A8AE-3A3BA52F4F0C";
listGUID = "{FC519894-509A-4B66-861E-2813DDE14F46}";
activeItemViewGUID = "{DCF35B63-F85C-463B-B1A1-716B4CF705C5}";
// first check if item is already in the list
XmlNode activeItemData = listServiceBase.GetListItems(listGUID, activeItemViewGUID, null, null, "", null, "");
if (!activeItemData.InnerXml.Contains(newIssueTitle))
{
//*********************This is Working *********************************
StringBuilder sb_method = new StringBuilder();
sb_method.Append("<Method ID=\"1\" Cmd=\"New\">");
sb_method.Append("<Field Name=\"Title\">Some Title 14</Field>");
sb_method.Append("<Field Name=\"AssignedTo\">Name to assign</Field>");
sb_method.Append("<Field Name=\"Status\">In Progress</Field>");
sb_method.Append("<Field Name=\"Priority\">(3) Low</Field>");
sb_method.Append("<Field Name=\"DueDate\">");
sb_method.Append(DateTime.Parse(DateTime.Now.ToString()).ToString("yyyy-MM-ddTHH:mm:ssZ"));
sb_method.Append("</Field>");
sb_method.Append("<Field Name=\"PercentComplete\">.34</Field>");
sb_method.Append("<Field Name=\"Body\">Something entered into the description field.</Field>");
sb_method.Append("<Field Name=\"Author\">Your Author</Field>");
sb_method.Append("<Field Name=\"Editor\">This is Modified By</Field>");
sb_method.Append("</Method>");
XmlDocument x_doc = new XmlDocument();
XmlElement xe_batch = x_doc.CreateElement("Batch");
xe_batch.SetAttribute("OnError", "Return");
xe_batch.InnerXml = sb_method.ToString();
XmlNode xn_return = listServiceBase.UpdateListItems("Task List Name", xe_batch);
}
catch (Exception e)
{
string sMessage = e.Message;
}
}
È possibile visualizzare i nomi interni utilizzati per le voci di elenco (Colonne) nella lista di SharePoint selezionando "Impostazioni" a tendina e selezionando la voce "Impostazioni elenco". Una volta nelle Impostazioni elenco cliccare su una colonna e poi guardare l'URL per vedere il "campo = Nome". Questo è il nome che si necessario utilizzare quando si creano i campi.
Inoltre, è possibile provare ad aprire fino SharePoint Designer e prendendo una sbirciatina a qualsiasi forma lista data o vista.
Se si caccia in giro un po 'di tempo si trova l'elenco GUID, Vista GUID, e dopo che tutte le colonne dell'elenco. Guardando in SPD è particolarmente utile quando si recuperano le voci di elenco utilizzando GetListItems ed è necessario analizzare il codice XML utilizzando "ows_" + ColumnName.