Toon posts:

[MOSS2007] Item toevoegen aan map in lijst

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik wil in een koppelingenlijst een item toevoegen in een map, maar ik heb geen idee wat ik moet toevoegen aan de CAML. Het toevoegen van een item in de root van de lijst is geen probleem.

Gerard

  • Glorix Jim
  • Registratie: Februari 2000
  • Laatst online: 03-02 15:05
Kan je misschien wat specifieker zijn of iig je code plaatsen zodat we kunnen zien wat je probeert te doen? Ik neem aan dat je met een koppelingslijst een lookup field bedoelt oid?

Verwijderd

Topicstarter
Met een koppelingenlijst bedoel ik een lijst waar je links in kunt plaatsen. In deze lijst kun je mappen structuur aanmaken. Deze mapjes kan ik inmiddels uitlezen, maar ik wil er nu ook iets aan toevoegen.

Stukkie code:
string sBatch = string.Empty;
sBatch = "<Method ID=\"1\" Cmd=\"New\">";
sBatch += "<Field Name=\"ID\">New</Field>";
sBatch += string.Format("<Field Name=\"Title\"><![CDATA[{0}]]></Field>", item.Title);
sBatch += string.Format("<Field Name=\"URL\"><![CDATA[{0}]]></Field>", item.Url);
sBatch += string.Format("<Field Name=\"Comments\"><![CDATA[{0}]]></Field>", item.Comments);
sBatch += string.Format("<Field Name=\"Created\">{0}</Field>", System.DateTime.Now );
sBatch += "</Method>";
System.Xml.XmlDocument xDoc = new System.Xml.XmlDocument();
System.Xml.XmlElement xBatch = xDoc.CreateElement("Batch");
xBatch.SetAttribute("OnError", "Return");
xBatch.InnerXml = sBatch;


System.Xml.XmlNode xReturn = listService.UpdateListItems("Favorieten", xBatch);
MessageBox.Show(xReturn.OuterXml);

Hiermee kan ik een item toevoegen aan de lijst, maar hoe krijg ik hem in een (sub)mapje?

Gerard
PS: Misschien is dit iets meer voor 'Programming'?

  • Glorix Jim
  • Registratie: Februari 2000
  • Laatst online: 03-02 15:05
Ja waarschijnlijk wel, al is Sharepoint heel moeilijk te categoriseren (infra, database, proggen, opmaak), ik heb trouwens niet de oplossing voor je met webservices maar wel via het OM nl :

SPList myList = myWeb.Lists["My First List"];
SPFolder myFolder = dm.myList.Folders[3];
SPListItem myNewItem = dm.myList.Items.Add(myFolder.ServerRelativeUrl, SPFileSystemObjectType.File, null);

myNewItem["Title"] = "New Item";
myNewItem["Url"] = Url;
myNewItem.Update();


Ik weet trouwens wel hoe je een map/folder aanmaakt via de webservice:
<Method ID="1" Cmd="New">
<Field Name="ID">New</Field>
<Field Name="FSObjType">1</Field>
<Field Name="BaseName">Name</Field>
</Method>

Daarnaast vraag ik me af of je wel het veld "Created" mag setten, ik dacht dat dit een read-only veld was?

Verwijderd

Topicstarter
Ik vind het zo-wie-zo lastig om goede informatie over MOSS ontwikkeling. Het blijft meestal bij wat starters info, dus als je nog wat tips hebt...


Het heeft inderdaad weinig zin om "Created" te zetten, het veld wordt automatisch op de tijd gezet dat het item wordt toegevoegd.

Gerard

  • Glorix Jim
  • Registratie: Februari 2000
  • Laatst online: 03-02 15:05
Ik zou je aanraden om de SDK van de vorige Sharepoint te gebruiken (WSS v2) aangezien daar meer bruikbare informatie in staat dan in de huidige SDK van WSSv3/MOSS.
En struin Sharepoint blogs af! Zo heb ik het geleerd :)

Verwijderd

Topicstarter
Uitgaande van de sdk zou je volgens mij FileRef moeten toevoegen. Dan krijg je dus:

string sBatch = string.Empty;
sBatch = "<Method ID=\"1\" Cmd=\"New\">";
sBatch += "<Field Name=\"ID\">New</Field>";
sBatch += string.Format("<Field Name=\"Title\"><![CDATA[{0}]]></Field>", item.Title);
sBatch += string.Format("<Field Name=\"URL\"><![CDATA[{0}]]></Field>", item.Url);
sBatch += string.Format("<Field Name=\"Comments\"><![CDATA[{0}]]></Field>", item.Comments);
sBatch += string.Format("<Field Name=\"FileRef\"><![CDATA[{0}]]></Field>", @"http://dodewaard/Lists/Favorieten/submap");
sBatch += "</Method>";
System.Xml.XmlDocument xDoc = new System.Xml.XmlDocument();
System.Xml.XmlElement xBatch = xDoc.CreateElement("Batch");
xBatch.SetAttribute("OnError", "Return");
xBatch.InnerXml = sBatch;

Als ik dit uitvoer krijg ik de volgende error:
"De bewerking is mislukt omdat er een onverwachte fout is opgetreden", 0x80040e2f

Door de geweldige melding kan ik nog niet achterhalen wat er fout gaat.

Gerard

  • Glorix Jim
  • Registratie: Februari 2000
  • Laatst online: 03-02 15:05
Ik neem aan dat je er try/catch blok om je code heen hebt zitten? Misschien daar in de details kijken van de error.

Anders zou ik het proberen op te lossen via het Objectmodel ipv de webservice

Verwijderd

Topicstarter
Dit is de melding welke de webservice terug geeft.

Ik ontwikkel aan een clientside applicatie dus het objectmodel is geen optie...

Gerard
Pagina: 1