Thanks to visit codestin.com
Credit goes to www.scribd.com

0% found this document useful (0 votes)
64 views37 pages

Programming Sharepoint Object Model, Web Services, and Events

This document discusses programming with the SharePoint object model, web services, and events. It provides an overview of the .NET support in SharePoint, the object model, example objects, ASP.NET security, and getting started with the object model. It also demonstrates adding users, working with lists and list data, and building a client for the web services.

Uploaded by

dhiru08484
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
64 views37 pages

Programming Sharepoint Object Model, Web Services, and Events

This document discusses programming with the SharePoint object model, web services, and events. It provides an overview of the .NET support in SharePoint, the object model, example objects, ASP.NET security, and getting started with the object model. It also demonstrates adding users, working with lists and list data, and building a client for the web services.

Uploaded by

dhiru08484
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 37

Programming SharePoint

Object Model, Web


Services, and Events
Michael Morton
4/15/03
Summary of .NET support
 SharePoint will use ASP.NET instead of
ISAPI for base page execution
 Web Part Framework
 Server Object Model for programmatic
access to SharePoint data
 We offer functionality as XML web
services for access from remote
machines
.NET Object Model
 Managed code object model on the
server
 Accessible via ASP.NET or any other
server process
 Implemented in C#
 Exposes almost of all of the data stored
in WSS
NET Object model
 Examples of what can be done with the Object
Mode:
 Add, edit, delete, and retrieve data from SharePoint
Lists
 Create new lists and set list metadata (e.g. the fields in
a list)
 Set web properties
 Work with documents in document libraries.
 Perform administrative tasks such as creating webs,
adding users, creating roles, etc.
 Pretty much any functionality in the UI can be
automated through the OM!
Example Objects
 List Data  Security
 SPField
 SPGroup
 SPFieldCollection
 SPListCollection
 SPGroupCollection
 SPList  SPSite
 SPListItemCollection  SPUser
 SPListItem  SPUserCollection
 SPView

 Documents
 Administration
 SPDocumentLibrary
 SPGlobalAdmin
 SPQuota
 SPFile
 SPVirtualServer  SPFileCollection
 SPFolder
ASP.Net Security
 For content stored in WSS, only registered
set of web custom controls will run in pages
 Inline script in the page will not execute
 Code behind in pages can be made to work
 All Executable code (e.g. web custom
controls, web parts, and code-behind
classes) needs to be installed on physical
web server
Getting Started with OM
 Build a web part
 This is the best option to write code that
functions are part of a WSS site or
solution
 There will be lots of documentation with
the beta on how to build a web part.
 Web Part is reusable and can be managed
using all of the web part tools and UI.
Getting Started with the OM
 Build an ASPX page
 Code cannot live inline in a page within the site.
 Creating pages underneath the /_layouts
directory is often the best option for custom
ASPX apps on top of SharePoint
 This lets your page be accessible from any web. For
example, if you build mypage.aspx in _Layouts, it is
accessible from the following URLs:
 http://myweb/_layouts/myapp/mypage.aspx
 http://myweb/subweb1/_layouts/myapp/mypage.aspx
 ASPX page will run using the context of the web under
which it is running.
Getting Started with the OM
 Windows Executable or any other
application
 Object model can be called from pretty
much any code context. It is not limited
to just web parts or ASP.Net
 For example, you could build a command-
line utility to perform certain actions
Demo
 Hello World Web Part
Working with the OM
 The object model has three top-level objects:
 SPWeb (represents an individual site)
 SPSite (represents a site collection, which is a
set of web sites)
 SPGlobalAdmin (used for global administration
settings)
 In order to perform actions on data within a
web, you must first get an SPWeb object.
Adding our namespace
 You should add references to the
WSS namespaces to your source
files
using Microsoft.SharePoint;
using Microsoft.SharePoint.WebControls;
using Microsoft.SharePoint.Administration;

Key Object – SPWeb
 Starting point to get at the Lists, Items,
Documents, Users, Alerts, etc. for a web site.
 Example Properties:
 Web.Lists (returns a collection of lists)
 Web.Title (returns the title of the site)
 Web.Users (returns the users on the site)
 In a web part or ASPX page, you can use the
following line to get a SPWeb:
SPWeb myweb = SPControl.GetContextWeb(Context);
Demo
 Showing Web and List Properties
Accessing data in a WSS
List
 Get a SPList or SPDocumentLibrary object.
SPList mylist = web.Lists[“Events”];
 You can then call the .Items property to get
all of the items:
SPListItemCollection items = mylist.Items;
 If you only want a subset of the items, call
the GetItems method and pass a SPQuery
object
SPListItemCollection items =
mylist.GetItems(query);
Accessing data in a list
 To get data for a field, specify the field
name in the indexer for an SPListItem
foreach(SPListItem item in items)
{
Response.Write(item["Due Date"].ToString());
Response.Write(item["Status"].ToString());
Response.WRite(item["Title"].ToString());
}
Full Example
SPWeb web = SPControl.GetContextWeb(Context);

SPList tasks = web.Lists["Tasks"];


SPListItemCollection items=tasks.Items;
foreach(SPListItem item in items)
{
output.Write(item["Title"].ToString() +
item["Status"].ToString() + "<br>");
}
Updating data
 Most objects in WSS do not immediately
update data when you change a property
 You need to first call the Update() method on
the object
 This helps performance by minimizing SQL queries
underneath the covers
 Example:
SPList mylist = web.Lists[“Tasks”];
mylist.Title=“Tasks!!!”;
mylist.Description=“Description!!”;
Mylist.Update();
Updating List Data
 SPListItem is another example of an
object where you need to call update:
 Example:
SPListItem item = items[0];
item["Status"]="Not Started";
item["Title"]="Task Title";
item.Update();
FormDigest Security
 By default, the object model will not allow data
updates if the form submitting the data does not
contain the ‘FormDigest’ security key.
 FormDigest is based on username and site. It will
time out after 30 minutes.
 Best solution is to include <FormDigest
runat=“Server”/> web folder control in ASPX page.
 If you do not need the security the FormDigest
provides, you can set to
SPWeb.AllowUnsafeUpdates to bypass this check.
Adding Users to a web
 Get the appropriate SPRole object:
SPRole admins = web.Roles["Administrator"];
 Call the AddUser method:
admins.AddUser("redmond\\gfoltz","[email protected]
m","Greg Foltz","");
Demo
 Adding users to the site via the OM
Keep objects around
 If you create and destroy objects frequently, you
may do extra SQL queries and have code that is
incorrect:
 Bad Example:
SPWeb web = SPControl.GetContextWeb(Context);
web.Lists["Tasks"].Title="mytitle";
web.Lists["Tasks"].Description="mydescription";
web.Lists["Tasks"].Update();
 Good Example:
SPWeb web = SPControl.GetContextWeb(Context);
SPList mylist = web.Lists["Tasks"];
mylist.Title="mytitle";
mylist.Description="mydescription";
mylist.Update();
Web Services in WSS
 SharePoint will have web services APIs for
accessing content. The web services layer
will be built on top of the server OM.
 Allows manipulation of Lists, Webs, Views,
List Items, etc.
 Functionality will be similar to server object
model, but with fewer interfaces optimized to
minimize transactions.
 Office11 (e.g. Excel, DataSheet, Work,
Outlook, FrontPage, etc) use web services to
access data from WSS.
Web Service Methods
 GetListCollection
 GetListItems
 GetWebCollection
 UpdateList
 UpdateListItems
 GetWebInfo
 GetWebPart
 GetSmartPageDocument
 And more…
Getting Started With Web Services
 Create a Windows Application
 In Visual Studio, choose ‘Add Web
Reference’
 Enter http://<server>/_vti_bin/lists.asmx to
access the lists web service
 Other services include:
 UserGroups.asmx – users and groups
 Webs.asmx – Web information
 Views.asmx – View information
 Subscription.asmx – Subscriptions
Getting Started with Web Services
 To send the logged on users’
credentials from the client, add the
following line in the web reference
object’s constructor:
public Lists() {
this.Url =
"http://mikmort3/_vti_bin/lists.asmx";

this.Credentials=System.Net.CredentialCache.De
faultCredentials;
}
Demo
 Building a Web Service Client
Events
 We support events on document
libraries.
 Operations such as add, update, delete,
check-in, check-out, etc.
 Events are asynchronous
 Events call IListEventSink managed
interface.
 Documentation and Sample in the SDK
Optimizing Performance of
OM
 The biggest goal is to minimize the number
of SQL queries.
 It may be helpful to use the SQL profiler to
monitor what the OM is doing underneath the
covers
 Minimizing managed/unmanaged transitions
also a goal, though this is mostly taken care
within the OM.
What about CAML?
 Page Execution will no longer be
driven by CAML (XML schema used in
SharePoint)
 CAML is still used in several places
 Field Type Definitions
 Site and List Templates
 View definitions
SDK Available
 Documentation about V2 available at
http://msdn.microsoft.com/sharepoint/
Questions?
Code Example -- Enumerate Lists and
Webs
private void ShowSubWebs(HtmlTextWriter output)
{
SPWeb web = SPControl.GetContextWeb(Context);
SPWebCollection mywebs = web.Webs;
foreach (SPWeb myweb in mywebs)
{
output.Write(myweb.Title + "<br>");
}
}

private void ShowSubWebsWithLists(HtmlTextWriter output)


{
SPWeb web = SPControl.GetContextWeb(Context);
SPWebCollection mywebs = web.Webs;
foreach (SPWeb myweb in mywebs)
{
output.Write("<b>" + myweb.Title + "<br>" + "</b>");
SPListCollection lists = myweb.Lists;
foreach (SPList list in lists)
{
if (list.ItemCount>10)
{
output.Write(list.Title + ": " + list.ItemCount +
"<br>");
}
}

}
}
Code Snippet – Copy Files
private SPWeb web;

private void Page_Load(object sender, System.EventArgs e)


{
web = SPControl.GetContextWeb(Context);
}

private void Button1_Click(object sender, System.EventArgs e)


{
int maxsize = Convert.ToInt32(TextBox1.Text);
SPFolder myfolder=web.GetFolder("Shared Documents");
SPFileCollection myfiles = myfolder.Files;
foreach (SPFile file in myfiles)
{
if (file.Length>(maxsize*1024))
{
Response.Write(file.Name + ": " +
file.Length/1024 + "kb<br>");
file.CopyTo("Archive/"+file.Name,true);
}
}
}
Code Snippet – Add users
private void Button1_Click(object sender,
System.EventArgs e)
{
SPWeb web = SPControl.GetContextWeb(Context);
string username = TextBox1.Text;
string displayname = TextBox2.Text;
string email = TextBox3.Text;

SPRole admins = web.Roles["Administrator"];


try
{
admins.AddUser(username,email,displayname,"");
Label4.Text="Successfully added user";
}
catch(Exception ex)
{
Label4.Text=ex.ToString();
}
}

You might also like