Patrick Tisseghem made some nice video tutorials about Enterprise Search. Watch and learn how to create and expose search scopes in Microsoft Office SharePoint Server 2007 Enterprise Search.
If you're looking for some more video tutorials about enterprise search... surf to Msn and use the search engine.
Thursday, November 29, 2007
Wednesday, November 21, 2007
Coding against the SharePoint Object Model (Some useful code snippets)
I thought it might be handy to write down some useful code snippets. These snippets are often used when you code against the SharePoint Object Model...
Delete all items in a document library:
----------------------------------------------------
using (SPSite sitecollection = new SPSite("http://..."))
{
using (SPWeb web = sitecollection.OpenWeb())
{
SPList myList = web.Lists["Document library"];
int amountOfFiles = myList.Items.Count;
for (int i = amountOfFiles - 1; i >= 0; i--)
{
//Delete Document Library item
web.AllowUnsafeUpdates = true;
myList.Items.Delete(i);
web.AllowUnsafeUpdates = false;
}
}
}
Uploading a file to a document library:
----------------------------------------------------
using (SPSite sitecollection = new SPSite("http://..."))
{
using (SPWeb web = sitecollection.OpenWeb())
{
SPFolder docFolder = web.GetFolder("document library");
FileStream fStream = File.OpenRead(urlOfDocumentOnServer);
Byte[] ContentsContents = new byte[Convert.ToInt32(fStream.Length)];
fStream.Read(Contents, 0, Convert.ToInt32(fStream.Length)); }
web.AllowUnsafeUpdates = true;
docFolder.Files.Add(filename, Contents);
web.AllowUnsafeUpdates = false;
}
}
Add a Contenttype to a ListItem:
---------------------------------------------
using (SPSite sitecollection = new SPSite("http://..."))
{
using (SPWeb web = sitecollection.OpenWeb())
{
SPList list = web.Lists["document library"];
SPContentTypeCollection ctcollection = list.ContentTypes;
SPContentType contenttype = ctcollection[itemcontenttype];
SPListItem item = list.Items[0];
item["ContentTypeId"] = contenttype.Id;
web.AllowUnsafeUpdates = true;
item.Update();
web.AllowUnsafeUpdates = false;
}
}
Add an Eventhandler on a SharePoint list:
--------------------------------------------------
SPList list = web.Lists["List"];
SPEventReceiverType type = SPEventReceiverType.ItemAdded;
string assembly = "";
string className = "";
list.EventReceivers.Add(type, assembly, className);
list.Update();
Delete an EventHandler from a SharePoint list:
-------------------------------------------------
Guid guid = ...;
list.EventReceivers[guid].Delete();
Start a workflow on an item
-------------------------------------
Guid wfBaseId = new Guid("{6BE0ED92-BB12-4F8F-9687-E12DC927E4AD}");
SPSite site = ...;
SPWeb web = site.OpenWeb();
SPList list = web.Lists["listname"];
SPListItem item = list.Items[0];
SPWorkflowAssociation associationTemplate= list.WorkflowAssociations.GetAssociationByBaseID(wfBaseId);
site.WorkflowManager.StartWorkflow(item, associationTemplate, "");
Note: the workflow base ID can be found in the workflow.xml in the feature folder
Source: Steven Van de Craen
-------------------------------------------------
Delete all items in a document library:
----------------------------------------------------
using (SPSite sitecollection = new SPSite("http://..."))
{
using (SPWeb web = sitecollection.OpenWeb())
{
SPList myList = web.Lists["Document library"];
int amountOfFiles = myList.Items.Count;
for (int i = amountOfFiles - 1; i >= 0; i--)
{
//Delete Document Library item
web.AllowUnsafeUpdates = true;
myList.Items.Delete(i);
web.AllowUnsafeUpdates = false;
}
}
}
Uploading a file to a document library:
----------------------------------------------------
using (SPSite sitecollection = new SPSite("http://..."))
{
using (SPWeb web = sitecollection.OpenWeb())
{
SPFolder docFolder = web.GetFolder("document library");
FileStream fStream = File.OpenRead(urlOfDocumentOnServer);
Byte[] ContentsContents = new byte[Convert.ToInt32(fStream.Length)];
fStream.Read(Contents, 0, Convert.ToInt32(fStream.Length)); }
web.AllowUnsafeUpdates = true;
docFolder.Files.Add(filename, Contents);
web.AllowUnsafeUpdates = false;
}
}
Add a Contenttype to a ListItem:
---------------------------------------------
using (SPSite sitecollection = new SPSite("http://..."))
{
using (SPWeb web = sitecollection.OpenWeb())
{
SPList list = web.Lists["document library"];
SPContentTypeCollection ctcollection = list.ContentTypes;
SPContentType contenttype = ctcollection[itemcontenttype];
SPListItem item = list.Items[0];
item["ContentTypeId"] = contenttype.Id;
web.AllowUnsafeUpdates = true;
item.Update();
web.AllowUnsafeUpdates = false;
}
}
Add an Eventhandler on a SharePoint list:
--------------------------------------------------
SPList list = web.Lists["List"];
SPEventReceiverType type = SPEventReceiverType.ItemAdded;
string assembly = "";
string className = "";
list.EventReceivers.Add(type, assembly, className);
list.Update();
Delete an EventHandler from a SharePoint list:
-------------------------------------------------
Guid guid = ...;
list.EventReceivers[guid].Delete();
Start a workflow on an item
-------------------------------------
Guid wfBaseId = new Guid("{6BE0ED92-BB12-4F8F-9687-E12DC927E4AD}");
SPSite site = ...;
SPWeb web = site.OpenWeb();
SPList list = web.Lists["listname"];
SPListItem item = list.Items[0];
SPWorkflowAssociation associationTemplate= list.WorkflowAssociations.GetAssociationByBaseID(wfBaseId);
site.WorkflowManager.StartWorkflow(item, associationTemplate, "");
Note: the workflow base ID can be found in the workflow.xml in the feature folder
Source: Steven Van de Craen
Detect an item published in ItemUpdating eventReceiver
How (not) to complete workflow tasks using code in WSS3
Modifying SharePoint Workflow Task Programmatically Problem
How to create MySite Programmatically
Add users of an AD Group to the SharePoint Site
Monday, November 19, 2007
Using Custom XML islands together with Content Controls
To realize a link between Word 2007 Content Controls and Custom XML you can either do it with a tool such as Word 2007 content control toolkit or do it programmatically with XPath and add a dataBinding node for each Structured Document Tag(SDT) like this example:
w:dataBinding w:prefixMappings="" w:xpath="/myXml/dataRow/dataField" w:storeItemID="{CFD5333D-3117-4F96-8B72-CC1D814E0755}"
If you want to fill the custom xml dynamically - try the following:
using (Package p = Package.Open(generatedPath, FileMode.Open, FileAccess.ReadWrite))
{
// Now we can get the path to our custom XML in the template
Uri partUri = new Uri("/customXml/item1.xml", UriKind.Relative);
PackagePart part = p.GetPart(partUri);
// Overwrite existing part, therefore open with FileMode.Create
using (Stream s = part.GetStream(FileMode.Create))
{
// Now use the XmlSerialize to write back the content
XmlSerializer serializer = new XmlSerializer(typeof(Employee));
serializer.Serialize(s, employee);
}
// Flush memory-content back to the package
p.Flush();
Just navigate to MzCool if you need an explanation of the whole context...
w:dataBinding w:prefixMappings="" w:xpath="/myXml/dataRow/dataField" w:storeItemID="{CFD5333D-3117-4F96-8B72-CC1D814E0755}"
If you want to fill the custom xml dynamically - try the following:
using (Package p = Package.Open(generatedPath, FileMode.Open, FileAccess.ReadWrite))
{
// Now we can get the path to our custom XML in the template
Uri partUri = new Uri("/customXml/item1.xml", UriKind.Relative);
PackagePart part = p.GetPart(partUri);
// Overwrite existing part, therefore open with FileMode.Create
using (Stream s = part.GetStream(FileMode.Create))
{
// Now use the XmlSerialize to write back the content
XmlSerializer serializer = new XmlSerializer(typeof(Employee));
serializer.Serialize(s, employee);
}
// Flush memory-content back to the package
p.Flush();
Just navigate to MzCool if you need an explanation of the whole context...
Thursday, November 15, 2007
Xperimenting with OpenXML
When you start experimenting with WordProcessingML (or Open XML in general), you definitely must take a look at the following tools:
Word 2007 Content Control Toolkit
This light-weight tool can open any word open xml
document and lists all content controls and available XML parts. It also enables mapping between content controls and custom XML. This all by using the System.IO.Packaging library available in .NET 3.0.
Package Explorer
This tool let you look inside a Open XML package, edit XML parts,...
[Thx to Maarten, who recommended me to made use of these]
If you need a lot of information about OpenXML - Download this great book (Open XML: The Markup explained)
Word 2007 Content Control Toolkit
This light-weight tool can open any word open xml
document and lists all content controls and available XML parts. It also enables mapping between content controls and custom XML. This all by using the System.IO.Packaging library available in .NET 3.0.
Package Explorer
This tool let you look inside a Open XML package, edit XML parts,...
[Thx to Maarten, who recommended me to made use of these]
If you need a lot of information about OpenXML - Download this great book (Open XML: The Markup explained)
Thursday, November 8, 2007
Silverlight MSDN event
On Halloween evening, I attended a MSDN event in Utopolis Mechelen dedicated to Silverlight. If you're curious about the content of the event - Take a look at the presentation slide decks and demo's.
Subscribe to:
Posts (Atom)