The video gives a quick tour of the SharePoint Designer interface and then goes into the four main areas of customization in SharePoint Designer.
- Create data sources
- Create custom views and forms
- Create custom workflows
- Design and brand a site
But there are some tasks in SharePoint Designer that give SharePoint administrators real heartburn because of the potential problems it creates for them.
Here are the big 3:
So on one hand, SharePoint Designer 2010 gives you a lot of power and flexibility in how you change the appearance or functionality of a SharePoint site. But on the other, if it’s used incorrectly, it can create issues for you, your site, and of course, your administrator.
The SharePoint Designer Settings page
In SharePoint 2010, you and your administrator will be happy to learn about the SharePoint Designer Settings page, which looks like this.
The SharePoint Designer Settings page helps you manage how SharePoint Designer 2010 is used in your organization by giving you control of these settings:
In Central Admin and Site Collection Admin
There are not one but two SharePoint Designer Settings pages that you can use to manage how SharePoint Designer 2010 is used in your organization:
Use one or both pages to manage how SharePoint Designer 2010 is used in your organization without fear of it detaching pages, removing corporate brands, or breaking sites. You may even choose to temporarily enable and disable certain SharePoint Designer features depending on where you’re at with your SharePoint deployment.
What’s next?
Once you determine how SharePoint Designer should be used, your next step will likely be adding and removing users to and from the Designers and Owners groups. In SharePoint 2010, you can do this from the Site Settings page as well as in SharePoint Designer 2010!
Want to see it in action? Check out this video where I go over these same points, show you the SharePoint Designer Settings pages, and what things look like in SharePoint Designer when you enable and disable each setting.
With this simple article, I'm walking you through the process of uploading any file to your Document Library.
Note; Since this is done through the local API, you need to have this code running on the server. That means that it's ideal to use in for example a FeatureReceiver or EventReceiver. You cannot run this code on the client in e.g. a Windows Form, then you'll need to utilize the SharePoint WebServices instead.
Use the following code to get you started in uploading a file using the object model. It really isn't that hard :-)
// Getting a reference to the document library
var sp = new SPSite("http://localhost");
var site = sp.OpenWeb();
var folder = site.GetFolder("Documents");
var files = folder.Files;
// Opening a filestream
var fStream = File.OpenRead("C:\\MyDocument.docx");
var contents = new byte[fStream.Length];
fStream.Read(contents, 0, (int)fStream.Length);
fStream.Close();
// Adding any metadata needed
var documentMetadata = new Hashtable {{"Comments", "Hello World"}};
// Adding the file to the SPFileCollection
var currentFile =
files.Add("Documents/MyDocument.docx", contents, documentMetadata, true);
site.Dispose();
sp.Dispose();
As you can see in the image below, the metadata "Comments" has been filled in as per the metadata I specified in the code above.
Simple as that. Over and out!
In this article I will guide you through the very basics of getting started with Business Data Catalog, BDC:
Alright - We've got our databases, now we need to start thinking about how we will get data from our SQL server into SharePoint. This is done by creating/generating an Application Definition File (ADF) as you will see in the next section.
Alright, there's a few different options to create your ADF (Application Definition File). I will show you how to get started with using the free tool called "Application Definition Editor" that comes with the latest SharePoint Server SDK.
Note: See the bottom section in this article for a summary of links to all resources mentioned in the article.
After you have installed the latest SDK, you can choose to install the "Microsoft BDCTool" located here by default: "C:\Program Files\2007 Office System Developer Resources\Tools\BDC Definition Editor". Which will give you the following item in your Start Menu:
Click the application and launch the editor. You will see an interface like this:
There's basically two alternatives when it comes to editing an ADF (Application Definition File).
One is to create a new one (which I will guide you through first), and the other is to import an existing one (which I will show you after the first alternative).
If you don't want to do everything from scratch or you've already got an ADF file that you wish to modify, you can do so by importing an existing ADF file into the Definition Editor. Here's how:
Note: I will not detail how you create filters, finders, methods etc. in this article. You can read more about that here:
http://msdn.microsoft.com/en-us/library/ms145931(SQL.90).aspx
I may cover the topic of ADF-functionality in another article later on.
I really don't need to tell you this, but there's a button called "Export" which you use to export the definition you've created using the definition editor to an xml file:
If we have gotten this far, we might as well get the last few bits in place.
What we now need to do is to import our ADF file into SharePoint, since that's where it should reside. Follow along with these few simple steps to make sure you're properly importing your file into SharePoint.
In order for all users to be able to select/read data from your BDC Application, you'll need to make sure they've got the appropriate permissions to actually do so.
Usually I do this setting on each of the imported entities, in case you want specific permissions on different entities - instead of on the entire application.
Now we have created or imported an ADF file with the Business Data Catalog Definition Editor tool, exported it to an .xml file, imported it into SharePoint, set basic permissions on the entities.
Next, we should make sure that the application works in SharePoint by adding a Business Data Catalog-WebPart to a page.
Awesome. Now that we have gotten this far by importing an ADF file into SharePoint and set appropriate permissions on the entities - We're ready to actually use the ADF connection to view stuff in our database.
Note: I have created a new blank site where I can easily show the built-in BDC Web Parts - so that's where I am adding my Web Parts.
Now we've got one BDC List Web Part which will list all employees, and one BDC Item Web Part that will display details about the employee we select.
In order for this to work we must connect the two Web Parts.
This article is a basic step-by-step guide to getting started with BDC in MOSS 2007. I've shown you every step from creating the databases required (in our case some sample databases) to creating the ADF file and to finally utilize the BDC connection from a site, using the BDC Web Parts.
Microsoft has released a couple of sneak peek videos about SharePoint 2010 at http://www.microsoft.com/sharepoint
Here are some of my notes from these videos
Business Value
The SharePoint pie from MOSS 2007 has been changed for 2010. Instead of focusing on generic portal topics, the focus is more on the business value of SharePoint. Here is the new pie
Sites
Sites are all about sharing info with employees/partners/customers – empowering customers across all mediums
Team Sites, Internet Facing sites, extranets for customers and partners
Communities
Ad-Hoc Communities
Communities in terms of hierarchy (comes from AD)
Communities now include Business Partners. You could search for users who are non-employees
Content
Collaboration Content
Line of Business Content
People Centric Content
Search
FAST Search is integrated into SharePoint
Highly scalable Search engine
Emphasis on getting the right results on the first page
Enhanced People Search
Enhanced Business Data Search
Insights
Combination of all the above
Microsoft’s vision is a decision engine that brings other tools into unison
Composites
Help rapidly create dynamic business solutions
End user applications
Business Processes
Tools and integration with SharePoint Designer, Visual Studio
New Features
Functionality previously available under the Content and Structure pages are now available in the main library
Multi select documents to checkout /check -in/delete etc.
Customization Capabilities
SilverLight
Theming
Visio Services
BDC is now Business Connectivity Services
Whats New for Developers
Whats New for Administrators
The big question is ofcourse.. "Robin.. why on earth did you build this" Well it has something to do with posts I made in the past ((Approval) Workflow thingies continued & (Approval) workflow thingies) where I copied information from the promoted columns of the form into a tasklistitem. By doing this, an user can easily see what he/she needs to approve in just one or two click(s). Now I was getting tired to copy every promoted column by hand in SPD for each Action I created per step. So I decided to build a webpart which did the following :
Now within defining the workflow in SPD, the only thing I need to copy each time into a new taskitem is the ID of the form and the person who must approve that step. The webpart takes care of the rest by using that information. How? Well you drag the webpart onto the 'editform.aspx' page of the task list. Using this page, it will give me the ID of the task (querystring in the URL) and by having both ID's (task and form) I can display and update the information.
Now a screenshot tells you more than a lot of words so here's what it looks like:

Pretty impresive eh? (I know I need to fix the layout;) .. Now the only input this webpart needs is the following :
So how does the code look like? Well.. it's quite big so I will only post the relevant stuff.
writer.Write("");
SPWeb web = SPControl.GetContextWeb(Context); SPList tasklist = web.Lists[_tasklist]; SPListItem taskitem = tasklist.GetItemById(Convert.ToInt32(Page.Request.QueryString["ID"])); SPList formlist = web.Lists[_formlibrary]; SPListItem formitem = formlist.GetItemById(Convert.ToInt32(taskitem["ListItemID"].ToString()));
SPFieldChoice status = (SPFieldChoice)formlist.Fields["Status"]; writer.Write(""); foreach (string _status in status.Choices) { if (_status == formitem["Status"].ToString()) { writer.Write(""); } else { writer.Write(""); } } writer.Write("");
"); writer.Write(_status.ToString()); writer.Write(" "); writer.Write("You are here"); writer.Write(" "); writer.Write(_status.ToString()); writer.Write(" "); writer.Write(" "); writer.Write("
//Render the columns with their values based on the view that is selected writer.Write(""); SPView view = formlist.Views[_view]; System.Collections.Specialized.StringCollection strCollection = view.ViewFields.ToStringCollection(); for (int i = 0; i < splitter =" {" seperator =" _separators.Split(splitter);" x =" 0;" _splitter =" {" colom =" seperator[x].Split(_splitter);" y =" 0;" i ="=">"); } break; } } } finally { //Write all the columns that are in the view with their values writer.Write(""); writer.Write(""); } } catch (Exception error) { writer.Write(error.Message.ToString()); } } writer.Write("");
" + colom[1] + " "); if (formitem.Fields.GetFieldByInternalName(strCollection[i]).Title != null) { //ColumnName writer.Write(formitem.Fields.GetFieldByInternalName(strCollection[i]).Title); } writer.Write(" "); if (formitem[(strCollection[i])] != null) { //ColumnValue writer.Write(formitem[(strCollection[i])].ToString()); } writer.Write("