Home Page Icon
Home Page
Table of Contents for
2. User Interface
Close
2. User Interface
by Bernd Pehlke, Jörg Krause, Christian Langhirt, Martin Döring, Alexander Sterff
SharePoint 2010 as a Development Platform
Copyright
About the Authors
About the Technical Reviewer
Acknowledgments
Introduction
What Does This Book Cover?
Conventions Used in This Book
Who Is This Book For?
Prerequisites
How This Book Is Organized
Support
Welcome to SharePoint Development
SharePoint Applications
The SharePoint Community
Windows SharePoint Foundation for Developers
The Execution Environment
The Data Layer
The Business Logic Layer
The User Interface Layer
Silverlight Integration
The Security Layer
The Developer Toolbox
Microsoft SharePoint Server for Developers
Content
Search
Dashboards
Forms and Workflows
Community
Content Publishing
Applications Make the World Go Round
1. Basic Tasks
1. Developer Basics
1.1.
1.1.1. Before You Start
1.1.2. Setting Up a Development Environment for SharePoint
1.1.2.1. Working Outside a Server
1.1.2.1.1. Considering Remote Development
1.1.2.2. Installation Scenarios
1.1.2.2.1. Developer Workstation on Windows Server 2008
1.1.2.2.2. Developer Workstation on Windows Vista or Windows 7
1.1.2.2.3. Steps for Vista SP1 Only
1.1.2.2.4. Installing Required Windows Features
1.1.2.2.5. Installing and Configuring SharePoint
1.1.2.2.6. Installing Visual Studio 2010
1.1.2.3. Team Development
1.1.2.4. Optimizing Your Development Experience
1.1.2.5. Preparing to Use .NET 3.5
1.1.3. SharePoint's Developer Support at a Glance
1.1.3.1. Bridging the Gap
1.1.3.2. Connecting Your Systems
1.1.3.3. Advantages of SharePoint Functions
1.1.3.3.1. Understanding the API
1.1.3.4. Critical Tasks
1.1.3.5. Debugging the Server
1.1.3.5.1. Looking into the Event Log for SharePoint
1.1.3.5.2. Looking into the SharePoint and IIS Logs
1.1.3.5.3. Using Common Debugging Techniques
1.1.3.6. The Developer Dashboard
1.1.3.6.1. Activating the Developer Dashboard Using stsadm
1.1.3.6.2. Activating the Developer Dashboard Using PowerShell
1.1.3.6.3. Activating the Developer Dashboard Using Code
1.1.3.6.4. Working with the Developer Dashboard
1.1.3.6.5. Making Your Code Dashboard-Aware
1.1.3.7. Debugging the Client
1.1.3.7.1. Using Fiddler to Understand What's Going on the Wire
1.1.3.7.2. Using Developer Tools to Investigate What's Running in the Browser
1.1.4. Introducing Visual Studio 2010's SharePoint Support
1.1.4.1. Visual Studio 2010
1.1.4.1.1. Preparing Visual Studio
1.1.4.1.2. The SharePoint Development Templates
1.1.4.1.3. Adding Items to a Project
1.1.4.1.4. Investigating a Package
1.1.4.1.5. The Feature Designer
1.1.4.1.6. Working with SharePoint Designer Workflows
1.1.4.1.7. Importing Packages
1.1.4.1.8. Creating a Package
1.1.4.1.9. Building and Deploying
1.1.4.2. SharePoint Designer 2010 vs. Visual Studio 2010
1.1.5. SharePoint Designer 2010 for Professional Developers
1.1.5.1. Installation Hints
1.1.5.2. Features at a Glance
1.1.5.2.1. SharePoint Designer Rights
1.1.5.2.2. New Dashboard Interface
1.1.5.2.3. Simplified Object Creation
1.1.5.2.4. Easy Use of Content Types
1.1.5.2.5. Resource Management
1.1.5.2.6. XSLT Views
1.1.5.2.7. Accessing Data Sources
1.1.5.2.8. Managing Business Data Connectivity Services
1.1.5.2.9. Managing Workflows
1.1.5.2.10. Master and Site Pages
1.1.6. SharePoint as a Development Toolkit and Framework
1.1.6.1. Command-Line Tools
1.1.6.1.1. psconfig.exe
1.1.6.1.2. stsadm.exe
1.1.6.1.3. SPMetal.exe
1.1.6.2. Graphical Tools
1.1.6.2.1. psconfigui.exe
1.1.7. Handling 64-Bit Quirks
1.1.7.1. Programming SharePoint Using a Console Application
1.1.7.2. Programming SharePoint Using ASP.NET
1.1.7.2.1. Preparing ASP.NET for the x64 Platform
1.1.7.2.2. Configuring IIS to Run with the Right Account
1.1.8. Summary
2. Architecture
2.1.
2.1.1. The Architectural View
2.1.1.1. SharePoint 2010 Foundation
2.1.1.2. SharePoint Server
2.1.1.3. Why Develop with the SharePoint Platform?
2.1.2. The Technical Integration
2.1.2.1. IIS and ASP.NET
2.1.2.1.1. What Is ASP.NET?
2.1.2.1.2. From ISAPI to ASP.NET
2.1.2.1.3. The IIS 7 Integrated Pipeline
2.1.2.1.4. IIS Sites, Applications, and Virtual Directories
2.1.2.1.5. The Request Pipeline
2.1.2.2. ASP.NET Extensibility
2.1.2.2.1. Modules, Handlers, and IIS
2.1.2.2.2. The Provider Model
2.1.2.2.3. The Configuration Model
2.1.2.2.4. Virtual Path Provider
2.1.2.3. SharePoint Integration with ASP.NET
2.1.2.3.1. Understanding the Web Application
2.1.2.3.2. Understanding the Configuration
2.1.2.3.3. Using the Virtual Path Provider
2.1.2.4. SharePoint and Ajax
2.1.2.4.1. What Is Ajax?
2.1.2.5. Security Model
2.1.2.5.1. Safe Mode
2.1.2.5.2. Safe Controls
2.1.2.5.3. Manipulating web.config to Add Safe Controls Programmatically
2.1.2.5.4. Making a Web Part Safe by Default
2.1.3. The Foundation's Object Model
2.1.3.1. Data-Related Building Blocks
2.1.3.1.1. Lists and Document Libraries
2.1.3.1.2. Files and Documents
2.1.3.1.3. Columns and Field Types
2.1.3.1.4. Content Types
2.1.3.1.5. Queries and Views
2.1.3.2. Deployment- and Maintenance-Related Building Blocks
2.1.3.2.1. Features
2.1.3.2.2. Solutions
2.1.3.2.3. Web Sites and Site Collections
2.1.3.3. Building Blocks to Create the UI
2.1.3.3.1. Pages and UI Support Elements
2.1.3.3.2. Ribbon
2.1.3.3.3. Web Parts
2.1.3.4. Control Flow, Action, and Events
2.1.3.4.1. Event Handling
2.1.3.4.2. Alerts
2.1.3.4.3. Workflows
2.1.4. The Administrative Object Model
2.1.4.1. Overview of Namespaces
2.1.4.2. An Administrative View
2.1.4.2.1. The Database Architecture
2.1.4.2.2. The Server Architecture
2.1.4.2.3. Working with Top-Level Objects
2.1.4.2.4. Site Architecture
2.1.4.3. The Administrative Server Object Model Organization
2.1.4.3.1. Physical Hierarchy
2.1.4.3.2. Content Hierarchy
2.1.4.3.3. Services Hierarchy
2.1.5. Summary
3. Accessing the API
3.1.
3.1.1. Finding the Entry Points
3.1.1.1. Establishing the Site Context
3.1.2. Utilities, Helper Classes, and Support Classes
3.1.2.1. Examining the Namespaces
3.1.2.2. SPUtility Class Examples
3.1.2.2.1. Formatting a Date Using SPUtility.FormatDate
3.1.2.2.2. Getting the 14 Hive File System Path
3.1.2.2.3. Getting the Full (Absolute) URL
3.1.2.2.4. Redirecting to Another Page
3.1.2.2.5. Redirecting to SharePoint Success or Error Pages
3.1.2.2.6. Formatting Scalar Data
3.1.2.3. Common Utility Classes
3.1.2.3.1. The DateOptions Class
3.1.2.3.2. The SPUrlUtility Class
3.1.2.3.3. The SPHttpUtility Class
3.1.2.3.4. The SPDiffUtility Class
3.1.3. Object Disposal Issues
3.1.3.1. Best Practice Advice
3.1.3.1.1. Handling Objects Used in a Publishing Web
3.1.3.1.2. Disposing of Objects and Collections
3.1.3.1.3. Objects Owned by SharePoint
3.1.3.2. Example of Incorrect Disposal
3.1.3.3. Finding Incorrectly Disposed-Of Objects
3.1.4. SharePoint Security: Users and Roles
3.1.4.1. Security Primer
3.1.4.1.1. Authentication
3.1.4.1.2. Access
3.1.4.1.3. Search
3.1.4.2. Users, Groups, and Roles
3.1.4.2.1. Retrieving Users
3.1.4.2.2. Retrieving the Current User
3.1.4.2.3. Getting a Specific SPUser Object
3.1.4.2.4. Working with Groups
3.1.4.3. Security Issues in Custom Code
3.1.4.3.1. Running with Elevated Privileges
3.1.4.3.2. Securing Objects
3.1.4.3.3. Handling Authorization Failures
3.1.4.3.4. Using Helper Classes
3.1.5. The Isolated Programming Style
3.1.5.1. Console-Based Applications
3.1.5.1.1. Creating a Console Application
3.1.5.1.2. Controlling a Console Application Using Parameters
3.1.5.1.3. Handling Output of a Console Application
3.1.5.1.4. Using Object Constructors
3.1.5.1.5. Console Example
3.1.5.2. Windows Forms and WPF Applications
3.1.6. Summary
4. Data Access
4.1.
4.1.1. Organizing Data in Lists
4.1.1.1. Lists and Their Elements
4.1.1.1.1. Lists and Content Types
4.1.1.1.2. Content Type Elements
4.1.1.2. Working with Lists
4.1.1.2.1. The Built-in Lists
4.1.1.2.2. Creating a List Programmatically
4.1.1.2.3. Adding Fields to the List
4.1.1.2.4. Changing Field Properties
4.1.1.2.5. Enumerating the Fields Collection
4.1.1.2.6. Adding Items to the List
4.1.1.2.7. Working with Collections
4.1.1.2.8. Working with Attachments
4.1.1.2.9. Handle Huge Lists
4.1.1.3. Define and Use Views
4.1.1.3.1. Modifying an Existing View
4.1.1.3.2. Creating a New View Programmatically
4.1.1.4. Custom Field Types
4.1.1.5. Content Types
4.1.1.5.1. Difference between Lists and Libraries
4.1.1.5.2. Parts of a Content Type
4.1.1.5.3. When to Use Content Types Programmatically
4.1.1.6. Item- and List-Level Event Receivers
4.1.1.6.1. Synchronous vs. Asynchronous Events
4.1.1.6.2. List Item Events
4.1.1.6.3. List Events
4.1.1.7. Developing and Deploying an Event Receiver
4.1.1.7.1. The Elements.xml
4.1.1.7.2. The Event Handler Code
4.1.2. Document Libraries and Document Sets
4.1.2.1. Libraries, Folders, and Documents
4.1.2.1.1. Example: Reading a File from the Shared Documents Library
4.1.2.1.2. Example: Adding a Folder to a Library
4.1.2.1.3. Example: Saving Data to Libraries
4.1.2.1.4. Example: Deleting a File
4.1.2.2. Working with Office Documents
4.1.2.2.1. Enriching a Word Document with Placeholders
4.1.2.2.2. Creating Documents from Templates
4.1.2.2.3. Working with Open Packaging Convention Packages
4.1.2.2.4. Creating the Report
4.1.2.3. Document Sets
4.1.2.3.1. Advantages of Document Sets
4.1.2.3.2. Prepare Document Sets
4.1.2.3.3. Access a Document Set Programmatically
4.1.2.3.4. Reading the Properties
4.1.2.3.5. Example: Checking Whether an Item Is in a Set
4.1.3. Query Data Using CAML and LINQ
4.1.3.1. CAML vs. LINQ
4.1.3.2. Obsolete Methods in SharePoint 2010
4.1.3.2.1. Avoid Using SharePoint Data Providing Web Services
4.1.3.2.2. Avoid Direct Calls to owssvr.dll
4.1.4. Query Data Using CAML
4.1.4.1. Understanding CAML
4.1.4.1.1. Using CAML to Retrieve Data
4.1.4.1.2. How to Create a CAML Query
4.1.4.1.3. The Query Schema
4.1.4.1.4. Working with Lists, Joins, and Projections
4.1.4.1.5. Using List Joins and Projections in Site Templates
4.1.5. Understanding LINQ
4.1.5.1. Examining the LINQ Basics
4.1.5.1.1. Architecture of LINQ
4.1.5.1.2. Keywords
4.1.5.1.3. Enumerations
4.1.5.1.4. Operators
4.1.5.1.5. Simple Queries
4.1.5.1.6. Aggregators
4.1.5.1.7. Selectors
4.1.5.2. LINQ to SharePoint
4.1.5.2.1. Understanding the LINQ to SharePoint Provider
4.1.5.2.2. Writing Data
4.1.5.3. Creating the Layer with SPMetal.exe
4.1.5.3.1. Where to Get SPMetal?
4.1.5.3.2. How to Use SPMetal?
4.1.5.3.3. Advanced Configuration
4.1.5.3.4. What SPMetal Generates
4.1.5.4. Using LINQ
4.1.5.4.1. Example: Reading Data
4.1.5.4.2. Example: Read Joined Data
4.1.5.4.3. Example: Inserting Items Using EntityList<T>
4.1.5.4.4. Example: Deleting Items
4.1.5.4.5. Example: Updating Properties Using the ForEach Pattern
4.1.5.5. Advanced List Examples
4.1.5.5.1. Handle Queries Containing Functions
4.1.5.5.2. Customize the Mapping
4.1.5.5.3. Track Changes
4.1.5.5.4. Declare Your Own Type Classes
4.1.5.5.5. Examine Relationships
4.1.5.5.6. Understanding LINQ to CAML Conversion
4.1.6. Summary
5. External Data Access
5.1. Introducing External Data Access
5.2. Query Data Using Data Services
5.2.1. The WCF Data Services Framework
5.2.2. Introducing REST
5.2.2.1. What About SOAP?
5.2.2.2. Constraints and Opportunities
5.2.2.3. Addresses for Resources
5.2.2.4. Reading the Response
5.2.3. Install and Use WCF Data Services
5.2.3.1. Download the Data Services Update
5.2.3.2. Installing the Package
5.2.3.3. Programming WCF Data Services with SharePoint
5.2.4. Data Services URIs and URI Parameters
5.2.4.1. Options for Data Representation
5.2.5. Querying Data
5.2.5.1. Examples
5.2.5.2. Work with Data Services
5.3. External Data: Business Connectivity Services
5.3.1. Business Connectivity Architecture at a Glance
5.3.2. External Content Types
5.3.2.1. Create an External Content Type Using SharePoint Designer
5.3.2.2. Manage Appropriate Security Settings
5.3.2.3. Access External Data
5.3.2.4. Create an External List Using the Browser UI
5.3.3. Access External Data Through the Object Model
5.3.4. Access External Data Through the Client Object Model
5.4. Highly Efficient Data Access
5.4.1. Using LINQ to SQL
5.4.1.1. Understanding the Content Database
5.4.1.2. Creating SQL Views for SharePoint Lists
5.4.1.3. Querying with LINQ to SQL
5.4.1.4. Limitations of This Method
5.4.1.5. Conclusion
5.4.2. Efficient Access to Huge Lists
5.4.2.1. Using Paging in Advanced Scenarios
5.5. Summary
6. Web Parts
6.1.
6.1.1. Fundamentals
6.1.1.1. Usage Scenarios
6.1.1.2. Distinctions Between SharePoint and ASP.NET Web Parts
6.1.1.3. Web Part Primer
6.1.1.3.1. Creating a Simple Web Part
6.1.1.3.2. Built-In Web Parts
6.1.1.3.3. Web Part Properties
6.1.1.3.4. Web Part in a Chrome
6.1.1.3.5. Securing Web Parts
6.1.1.4. Visual Web Parts
6.1.1.4.1. Understanding the Project Structure
6.1.1.4.2. Running Visual Web Parts in a Sandbox
6.1.1.4.3. Creating Visual Web Parts
6.1.2. Understanding ASP.NET Web Parts
6.1.2.1. How It Works
6.1.2.1.1. The Zone Concept
6.1.2.1.2. Structure of a Web Part Page
6.1.2.2. SPWebPartManager
6.1.2.2.1. WebPartZone
6.1.2.2.2. EditorZone
6.1.2.2.3. CatalogZone
6.1.2.2.4. ConnectionsZone
6.1.2.2.5. WebPart's Class Hierarchy
6.1.3. Advanced Web Part Development
6.1.3.1. Personalizing Web Parts
6.1.3.2. Customizing the Property Pane
6.1.3.2.1. Understanding Properties
6.1.3.2.2. Global Settings
6.1.3.3. Editing Complex Properties with Editor Parts
6.1.3.3.1. Using Editor Parts to Edit Properties
6.1.3.3.2. Creating a Custom Editor Part Example
6.1.3.3.3. Editing Complex Properties Using a Pop-Up
6.1.4. Connectable Web Parts
6.1.4.1. Understanding Data Connections
6.1.4.2. Developing Connected Web Parts
6.1.4.2.1. Creating the Web Part Definition Files
6.1.4.2.2. Coding a Connected Web Part
6.1.4.3. Advanced Connection Scenarios
6.1.4.3.1. Using Generic Interfaces
6.1.4.3.2. Enhancing Web Parts Using Ajax
6.1.4.4. The Web Part Page Services Component
6.1.5. Creating Private Actions Using Verbs
6.1.5.1. Adding Entries to the Web Part Drop-Down Menu
6.1.5.2. Using Client Script to Handle Menu Clicks
6.1.5.3. Adding Server-Side and Client-Side Handlers
6.1.6. Asynchronous Web Parts
6.1.6.1. Making a Web Part Asynchronously
6.1.6.2. Creating an Asynchronous Data Source
6.1.7. Best Practices for Developing Web Parts for SharePoint
6.1.7.1. Avoiding Error-Prone Web Parts
6.1.7.1.1. Handling All Exceptions to Prevent Web Part Page Failures
6.1.7.1.2. Checking Permissions Before Rendering Your Web Part
6.1.7.1.3. Validating Properties Before Saving Changes to the Database
6.1.7.1.4. Specifying Custom Error Messages When Appropriate
6.1.7.1.5. Validating All User Input
6.1.7.2. Optimizing Performance
6.1.7.2.1. Registering the Client-Side Script Shared by Multiple Web Parts to Improve Performance
6.1.7.2.2. Techniques to Improve Web Part Performance
6.1.7.3. Supporting the End User
6.1.7.3.1. Specifying Whether Web Part Properties Can Be Exported
6.1.7.3.2. Supporting SharePoint Designer and the Visual Studio Design-Time Experience
6.1.7.3.3. Making Properties User-Friendly in the Tool Pane
6.1.7.3.4. Encoding All User Input Rendered to the Client
6.1.7.3.5. Checking Web Part Zone Properties Whenever You Attempt to Save Changes
6.1.7.3.6. Using Simple Types for Custom Properties You Define
6.1.7.3.7. Making Properties Independent of Each Other If They Both Appear in the Tool Pane
6.1.7.3.8. Making Web Parts Easily Searchable in the Galleries
6.1.7.3.9. Providing a Preview of Your Web Part for the Web Part Gallery
6.1.7.3.10. Localizing Your Custom Properties
6.1.7.3.11. Supporting Anonymous Access
6.1.7.3.12. Help Using Resources
6.1.8. Summary
7. Templates
7.1. Templates Overview
7.2. Column Templates
7.3. List Templates
7.3.1. List Definitions vs. List Templates
7.3.2. Custom List Definitions
7.3.3. List Template Definition Files
7.3.3.1. The List Element
7.3.3.2. The ContentTypes Element
7.3.3.3. The Fields Element
7.3.3.3.1. Lookup Fields
7.3.3.4. The Views Element
7.3.3.4.1. XSL-Based Rendering
7.3.3.4.2. Joins and Projections
7.3.3.4.3. The ViewFields Element
7.3.3.4.4. The Query Element
7.3.3.5. Forms
7.3.4. Using List Templates
7.4. Site Templates
7.4.1. Visual Studio 2010 Support
7.4.2. SiteTemplate vs. SiteDefinition
7.4.3. Site Definition Structure
7.4.3.1. webTemp.xml
7.4.3.1.1. Site Provisioning Provider
7.4.3.2. default.aspx
7.4.3.3. Onet.xml
7.4.3.3.1. The NavBars Element
7.4.3.3.2. The ListTemplates Element
7.4.3.3.3. Document Templates
7.4.3.3.4. Modules
7.4.3.3.5. Configurations
7.4.4. Using a Site Definition
7.4.4.1. stsadm.exe
7.4.4.2. Create Workspace or Site Collection via the UI
7.4.4.3. Custom Code
7.5. Summary
8. Application Techniques
8.1.
8.1.1. Application Pages
8.1.1.1. Creating Application Pages Using Visual Studio
8.1.1.2. Using the Base Class
8.1.1.3. Using Inline Code
8.1.1.4. Using Code-Behind
8.1.1.5. Using the Master Page
8.1.1.6. Integrating Application Pages
8.1.1.7. Security Considerations
8.1.2. Resources and Localization
8.1.2.1. Resource Primer
8.1.2.1.1. Defining Resources in SharePoint
8.1.2.1.2. Usage Scenarios in SharePoint
8.1.2.2. Using Resources in Web Parts
8.1.2.2.1. Using Resources for Static Data in Web Parts
8.1.2.2.2. Using Resources for Localization with Embedded Resource Files
8.1.2.2.3. Using Resources to Localize Web Part Attributes
8.1.2.2.4. Using Resources for Linked Data
8.1.2.2.5. The Resource Manager
8.1.2.3. Using Resources to Localize a Feature
8.1.3. The Event Model
8.1.3.1. The Event Receiver Principles
8.1.3.2. Events at a Glance
8.1.3.3. Events at the Deployment Stage: Feature Receivers
8.1.3.3.1. Creating a Feature with the Application Page's Navigation
8.1.3.3.2. Creating the Feature Receiver
8.1.3.3.3. Registering the Event
8.1.3.4. Events at the Site and Site Collection Levels
8.1.3.4.1. Defining the Event Receiver
8.1.3.4.2. Creating a Web Event Receiver Class
8.1.3.4.3. Dealing with Error Conditions
8.1.4. Sending E-mail
8.1.4.1. Sending E-mail Using ASP.NET
8.1.4.2. Using SharePoint's Mail-Sending Classes
8.1.4.3. Sending E-Mail from a WCF Service
8.1.5. Custom Helper Classes
8.1.5.1. Data Manager Functions
8.1.5.1.1. Getting a Web with Elevated Privileges
8.1.5.1.2. Getting a List Instance
8.1.5.1.3. Getting a List with a Data Model Behind the Scenes
8.1.5.1.4. Extension Methods Elaborated
8.1.5.1.5. Caching Queries to Improve Performance
8.1.6. Summary
9. Solution Deployment
9.1.
9.1.1. SharePoint Features
9.1.2. Solution Packages
9.1.3. Sandboxed Solutions
9.1.3.1. Restrictions of Sandboxed Solutions
9.1.3.2. The Sandbox Architecture
9.1.3.3. Life Cycle of a Sandboxed Solution
9.1.3.3.1. Deploying a Sandboxed Solution
9.1.3.3.2. Upgrading a Sandboxed Solution
9.1.3.4. Monitoring Sandboxed Solutions
9.1.3.5. Sandboxed Solution Validators
9.1.3.6. Sandboxed Solution Full-Trust Proxies
9.1.4. Deploying Solution Packages Using PowerShell Cmdlets
9.1.4.1.
9.1.4.1.1. Cmdlets
9.1.4.1.2. An Interactive Environment
9.1.4.1.3. The PowerShell Scripting Language
9.1.4.1.4. Scripting with PowerShell and the PowerShell Integrated Scripting Environment
9.1.4.2. PowerShell and SharePoint 2010
9.1.4.2.1. PowerShell Cmdlets for SharePoint 2010 Overview
9.1.4.2.2. Getting Help: What Are Cmdlets Good For?
9.1.4.3. Deploying a Farm Solution Package
9.1.4.4. Deploying a Sandboxed Solution using PowerShell
9.1.5. Deploying Solution Packages Using stsadm
9.1.5.1. Adding a Solution Package
9.1.5.2. Removing Solutions
9.1.5.3. Installing Features
9.1.6. Creating a Solution Package Step by Step
9.1.6.1. Step 1: Creating the Folder Structure
9.1.6.2. Step 2: Building the Feature
9.1.6.3. Step 3: Creating a Solution Definition
9.1.6.4. Step 4: Creating a DDF
9.1.6.5. Step 5: Creating the Solution Package
9.1.7. How To: Creating a Solution Package Using Visual Studio 2010
9.1.7.1. Using the Project Templates
9.1.7.2. Site and Security Level for Debugging
9.1.7.3. Adding SharePoint Items and Features to Your Project
9.1.7.4. Editing Your Features
9.1.7.5. Editing Your Solution Package
9.1.7.6. Project Properties and Deployment Configuration
9.1.7.7. Debugging the Solution
9.1.7.8. Packaging the Solution
9.1.8. How To: Creating a Sandboxed Solution Using Visual Studio 2010
9.1.8.1. Debugging the Solution
9.1.8.2. Creating a Full-Trust Proxy
9.1.8.2.1. Deploying the Full-Trust Proxy DLL to the GAC
9.1.8.2.2. Registering the Full-Trust Proxy Using a Feature Receiver
9.1.8.2.3. Using the Full-Trust Proxy to Extend a Sandboxed Solution
9.1.8.3. Creating a Solution Validator
9.1.8.3.1. Creating an Error Page for the Solution Validation
9.1.8.3.2. Deploying and Registering the Solution Validator
9.1.9. Upgrading Custom Developed Solutions to SharePoint 2010
9.1.9.1. Backward Compatibility Mode
9.1.9.2. Reasons for Upgrading
9.1.9.3. Upgrading a VSeWSS Solution
9.1.9.4. Upgrading a WSP Package
9.1.9.5. Upgrading Custom Solutions
9.1.9.6. Using Existing SharePoint 2007 Code in SharePoint 2010
9.1.9.7. Deprecated APIs
9.1.10. Summary
2. User Interface
10. Extending the User Interface
10.1.
10.1.1. Master Pages
10.1.1.1. Master Page Types
10.1.1.1.1. System Master Page(Default Master Page)
10.1.1.1.2. Site Master Page (Custom Master Page)
10.1.1.1.3. Application Master Pages
10.1.1.1.4. Dialog Master Pages
10.1.1.1.5. Content Pages vs. Application Pages
10.1.1.1.6. Conclusion
10.1.1.2. Master Page Tokens
10.1.1.2.1. Dynamic Tokens
10.1.1.2.2. Static Tokens
10.1.1.3. Master Page Gallery
10.1.1.4. Example: Applying a Master Page Recursively
10.1.2. Navigation
10.1.2.1. Navigation Controls
10.1.2.1.1. Top Link Bar Navigation
10.1.2.1.2. Quick Launch Navigation
10.1.2.1.3. Breadcrumb Navigation
10.1.2.1.4. Tree View Navigation
10.1.2.2. Understanding ASP.NET Site Map Providers
10.1.2.3. SharePoint Foundation Navigation Providers
10.1.2.3.1. The SPNavigationProvider Class
10.1.2.3.2. The SPSiteMapProvider Class
10.1.2.3.3. The SPContentMapProvider Class
10.1.2.3.4. The SPXmlContentMapProvider Class
10.1.2.4. SharePoint Server Navigation Providers
10.1.2.5. Example: Browsing Through Navigation Providers
10.1.3. Themes
10.1.3.1. Understanding Themes
10.1.3.1.1. Customization Levels
10.1.3.1.2. Applying Fonts and Colors
10.1.3.1.3. Dynamic Stylesheets
10.1.3.1.4. Correlation with Office THMX Files
10.1.3.1.5. Separation of Design and Implementation
10.1.3.2. SharePoint Theming
10.1.3.2.1. Themes in SharePoint 2010
10.1.3.2.2. Theming Prerequisites
10.1.3.2.3. Theme Colors and Variations
10.1.3.2.4. Dynamic Stylesheets
10.1.3.2.5. Applying Themes
10.1.3.2.6. Creating Themable Application Pages
10.1.4. Extending the UI
10.1.4.1. Custom Actions
10.1.4.2. Custom Action Examples
10.1.4.2.1. Listing All Custom Actions
10.1.4.2.2. Extending Site Settings
10.1.4.2.3. Adding Nested Menus
10.1.4.3. Using Ribbons
10.1.4.3.1. Adding a Button
10.1.4.3.2. Removing a Button
10.1.4.3.3. Replacing a Button
10.1.5. Summary
11. Using Web Controls
11.1.
11.1.1. Overview
11.1.2. Field Controls
11.1.2.1. Understanding the BaseFieldControl Base Class
11.1.2.2. Custom Field Controls
11.1.2.2.1. Field Type Definition
11.1.2.2.2. XSL Stylesheets for Custom Fields
11.1.2.2.3. The Field Class
11.1.2.2.4. The Field-Rendering Control Class
11.1.2.2.5. The Field-Rendering Template
11.1.2.2.6. Getting the Custom Field to Work
11.1.2.3. Custom Field Properties
11.1.2.3.1. Field Editor User Control: Web Form (ASCX)
11.1.2.3.2. Field Editor User Control: Code-Behind (CS)
11.1.3. Input Form Controls
11.1.3.1. Sections
11.1.3.2. Text Controls
11.1.3.3. Check Boxes and Radio Buttons
11.1.3.4. Using Validator Controls
11.1.3.4.1. InputFormRequiredFieldValidator
11.1.3.4.2. InputFormCompareValidator
11.1.3.4.3. InputFormRangeValidator
11.1.3.4.4. InputFormRegularExpressionValidator
11.1.3.4.5. InputFormCustomValidator
11.1.3.5. Security Trimming
11.1.3.5.1. Deriving from SPSecurityTrimmedControl
11.1.4. Pickers and Selector Controls
11.1.4.1. Useful Controls
11.1.4.1.1. Selectors for WebApplication, SiteCollection, Site, and List
11.1.4.1.2. Schedule Picker
11.1.4.1.3. People Picker
11.1.4.2. Implementing Custom Pickers
11.1.4.2.1. The Data Source
11.1.4.2.2. Dialog Editor Class
11.1.4.2.3. Dialog Picker Class
11.1.4.2.4. Query Control Class
11.1.4.2.5. Getting the Custom Picker to Work
11.1.5. Toolbar and Ribbon Controls
11.1.5.1. Toolbar Control
11.1.5.2. Ribbon Control
11.1.5.2.1. Ribbon Basics
11.1.5.2.2. Ribbon Communication
11.1.5.2.3. Ribbon Controls Overview
11.1.5.3. Customizing the Ribbon
11.1.5.3.1. Prerequisites for a Custom Ribbon
11.1.5.3.2. Creating a Feature with a Ribbon Definition
11.1.5.3.3. Creating an Application Page and Displaying the Ribbon Bar
11.1.5.3.4. Creating Client-Side JavaScript Code for a PageComponent Implementation
11.1.5.3.5. Implementing Server-Side Event Handlers
11.1.6. Data Controls
11.1.6.1. Working with the SPGridView Control
11.1.6.1.1. Example: Implementing a Grid for a SharePoint List
11.1.6.1.2. Example: Using the DataTable Class
11.1.6.1.3. Example: Adding Custom Menus
11.1.6.1.4. Example: Enabling Sorting
11.1.6.1.5. Example: Enabling Sorting and Filtering Using a LINQ Data Source
11.1.6.2. Working with the JS Grid Control
11.1.6.2.1. Features
11.1.6.2.2. Example: Using the JS Grid Control
11.1.7. Summary
12. Client Programming
12.1.
12.1.1. Understanding the Client Object Model
12.1.1.1. Getting Started
12.1.1.1.1. .NET Managed Applications
12.1.1.1.2. Silverlight Applications
12.1.1.1.3. JavaScript Applications
12.1.1.2. Namespaces Overview
12.1.1.3. The Client Context
12.1.1.3.1. Authentication Modes
12.1.1.3.2. Client and Value Objects
12.1.1.3.3. Automatically Obtaining Object Identity
12.1.1.4. Working with Data
12.1.1.5. Data Loading and Querying
12.1.1.6. Differences and Limitations
12.1.1.6.1. Absolute and Relative URLs Within the Constructors
12.1.1.6.2. Different Data Types
12.1.1.6.3. Specifying the Authentication Mode
12.1.1.6.4. Using the Digest Web Control
12.1.1.7. Summary
12.1.2. Using the Dialog Framework
12.1.2.1. Working with Modal Pop-Up Dialogs
12.1.2.2. Using Callback Functions and Return Values
12.1.2.3. Building Dialog Pages
12.1.3. Working with Status Information and Notifications
12.1.3.1. Status API
12.1.3.2. Notification API
12.1.4. Development Best Practices
12.1.4.1. Preparing Visual Studio for JavaScript
12.1.4.1.1. Workaround to Enable JavaScript IntelliSense in Custom Application Pages
12.1.4.1.2. Using JavaScript IntelliSense Within JS Files
12.1.5. Programming Examples
12.1.5.1. Common Pitfalls
12.1.5.1.1. Objects Cannot Be Accessed Until They Are Loaded
12.1.5.1.2. Not All Values Are Retrieved
12.1.5.1.3. The Difference Between Value Objects and Client Objects
12.1.5.2. Accessing Webs and Sites
12.1.5.2.1. How to Retrieve Site and Web Properties
12.1.5.2.2. How to Retrieve Specific Properties Only
12.1.5.2.3. How to Update Properties
12.1.5.2.4. How to Create a New Web Site
12.1.5.3. Accessing Lists
12.1.5.3.1. How to Retrieve All SharePoint Lists in a Web Site
12.1.5.3.2. How to Retrieve List Field Information
12.1.5.3.3. How to Create a New SharePoint List
12.1.5.3.4. How to Modify an Existing SharePoint List
12.1.5.3.5. How to Delete a SharePoint List
12.1.5.4. Accessing List Items
12.1.5.4.1. How to Retrieve All Items in a SharePoint List
12.1.5.4.2. How to Retrieve List Items Using CAML Queries
12.1.5.4.3. How to Create a New List Item
12.1.5.4.4. How to Update a List Item
12.1.5.4.5. How to Delete a List Item
12.1.5.5. Accessing Users and Roles
12.1.5.5.1. How to Add Users to a SharePoint Group
12.1.5.5.2. How to Retrieve Members of a SharePoint Group
12.1.5.5.3. How to Create a Role
12.1.5.5.4. How to Add Users or Groups to Roles
12.1.5.5.5. How to Create a New SharePoint Group and Assign the Group to a Role
12.1.5.5.6. How to Break the Role Inheritance
12.1.5.6. Accessing Web Parts
12.1.5.6.1. How to Update the Title of a Web Part
12.1.5.6.2. How to Add a Web Part to a Page
12.1.5.6.3. How to Delete a Web Part from a Page
12.1.5.7. Advanced Examples
12.1.5.7.1. How to Use Exception-Handling Scope
12.1.5.7.2. How to Use Conditional Scope
12.1.5.7.3. How to Access Large Lists
12.1.6. Summary
13. Integrating Silverlight
13.1.
13.1.1. Introducing Silverlight
13.1.1.1. Being Prepared for Silverlight
13.1.1.2. The Architecture of Silverlight
13.1.1.2.1. The Client Library
13.1.1.2.2. The Core Libraries
13.1.1.2.3. The Presentation Core
13.1.1.3. Silverlight and XAML
13.1.1.3.1. Describing a Silverlight UI Using XAML
13.1.1.3.2. Events
13.1.1.3.3. The Layout Manager
13.1.2. Silverlight Hosting and Distribution
13.1.2.1. Setup and Deployment
13.1.2.1.1. Treat Silverlight as an External Application
13.1.2.2. Cross-Domain Security
13.1.2.2.1. Managing the Client-Access Policy
13.1.2.2.2. Creating an HTTP Request Forwarder
13.1.2.2.3. Activating the Handler Using an External Application Provider
13.1.2.3. Integrating Silverlight
13.1.2.3.1. Using Silverlight in an Application Page
13.1.2.3.2. Using Silverlight in a Web Part
13.1.3. Accessing SharePoint Data
13.1.3.1. Using the SharePoint Client Object Model
13.1.3.2. Executing Queries
13.1.3.3. Example: Reading List Data from SharePoint and Writing Changes Back
13.1.3.3.1. Limitations
13.1.3.4. Example: Accessing Lists
13.1.3.4.1. Retrieving All SharePoint Lists in a Web Site
13.1.3.4.2. Retrieving List Field Information
13.1.3.4.3. Creating a New SharePoint List
13.1.3.4.4. Retrieving List Items Using CAML Queries
13.1.3.5. Example: Accessing Users and Roles
13.1.3.5.1. How to Add Users to a SharePoint Group
13.1.4. Summary
14. Integrating Charts and Maps
14.1.
14.1.1. Data Access Scenarios
14.1.2. Integrating Charts
14.1.2.1. Understanding Microsoft Chart Controls
14.1.2.1.1. Prerequisites
14.1.2.1.2. Features
14.1.2.1.3. Setting Up
14.1.2.2. Using Microsoft Chart Control
14.1.2.2.1. Chart Elements
14.1.2.2.2. Working with Data
14.1.2.2.3. Chart Types and Examples
14.1.2.2.4. Conclusion
14.1.2.3. Using the Google Chart API
14.1.2.3.1. Chart Types
14.1.2.3.2. Using the Google Chart API with SharePoint
14.1.2.4. Using the Google Visualization API
14.1.2.4.1. Chart Types
14.1.2.4.2. Using the Google Visualization API with SharePoint
14.1.3. Integrating Map Services
14.1.3.1. Bing Maps
14.1.3.1.1. Integrating Bing Maps into Application Pages
14.1.3.1.2. Integrating Bing Maps into Web Parts
14.1.3.1.3. Populating Bing Maps Using the JavaScript Client Object Model
14.1.3.2. Google Maps
14.1.3.2.1. Integrating Google Maps into Application Pages
14.1.3.2.2. Integrating Google Maps into Web Parts
14.1.3.2.3. Populating Google Maps Using the JavaScript Client Object Model
14.1.3.3. Bing Maps vs. Google Maps
14.1.3.3.1. Limitations When Using SSL/HTTPS
14.1.3.3.2. Licensing
14.1.4. Summary
3. Advanced Techniques
15. Forms Services and InfoPath
15.1. Internals of InfoPath Forms
15.1.1. InfoPath Form Template
15.1.1.1. Form Definition Files
15.1.1.2. Form Schema File (XSD)
15.1.1.3. Form Views (XSL)
15.1.1.4. Form XML Template (XML)
15.1.2. InfoPath Form Data
15.2. Designing Browser-Enabled Form Templates
15.2.1. Defining the Data Structure
15.2.2. Designing the Form Templates
15.2.3. Adding Rules and Validation
15.2.4. Accessing External Data
15.2.5. Forms Security
15.2.6. Enabling Browser Support
15.2.6.1. Setting Form Compatibility
15.2.6.2. Configuring Interface Options for InfoPath Forms Services
15.2.6.3. Configuring Submit Options
15.3. Deploying InfoPath Forms to SharePoint
15.3.1. Using InfoPath Forms in SharePoint
15.3.2. Publishing and Deploying Using the InfoPath Wizard
15.3.2.1. Publishing Form Templates to Document Libraries
15.3.2.2. Publishing Form Templates as a Separate Content Type
15.3.2.3. Publishing Form Templates as Administrator-Approved Templates
15.3.2.4. Publishing Form Templates to a Network Location
15.3.3. Embedding Forms into SharePoint Features
15.3.4. Deploying Forms Using Command-Line Utilities
15.3.4.1. stsadm.exe
15.3.4.2. PowerShell Cmdlets
15.3.5. Deploying Forms with Code
15.4. Programming InfoPath Forms
15.4.1. Attaching Managed Code
15.4.2. InfoPath Object Model
15.4.2.1. Events
15.4.2.2. Accessing the Form Data
15.4.2.3. Maintaining State in Browser-Based Forms
15.4.2.4. Accessing Views
15.4.2.5. Handling Errors
15.5. InfoPath Forms Services
15.5.1. Preparing InfoPath Forms Services Support
15.5.1.1. State Service
15.5.1.2. Configuring InfoPath Forms Services
15.5.2. Configuring Libraries
15.5.3. Managing Form Templates
15.5.4. Displaying Forms in the InfoPath Form Web Part
15.5.5. Customizing the Browser View Using XmlFormView
15.5.5.1. Integrating XmlFormView in an Application Page
15.5.5.2. Accessing the XmlForm Object
15.5.6. Integrating InfoPath Forms with the Environment
15.5.6.1. Property Promotion and Demotion of XML Documents
15.5.6.1.1. Configuring Promotion/Demotion Using InfoPath
15.5.6.1.2. Configuring Promotion/Demotion Within a List Feature
15.5.6.2. Web Part Connection Parameters
15.5.6.3. Passing Parameters from SharePoint to InfoPath Forms
15.6. Summary
16. Workflows
16.1. Workflows in SharePoint
16.1.1. SharePoint Workflow Basics
16.1.1.1. Workflow Building Blocks
16.1.1.1.1. Activities
16.1.1.1.2. Working on Content
16.1.1.1.3. User Interaction
16.1.1.2. Workflow Architecture
16.1.1.2.1. Workflow Hosting Environment
16.1.1.2.2. Workflow Types
16.1.1.2.3. Workflow Structure
16.1.1.3. SharePoint Workflow Life Cycle
16.1.1.3.1. Association
16.1.1.3.2. Initiation
16.1.1.3.3. Execution and Modification
16.1.1.3.4. Completion
16.1.2. Using Workflows in SharePoint
16.1.2.1. SharePoint Out-Of-the-Box Workflows
16.1.2.2. Associate Workflows with SharePoint Items
16.1.2.3. Starting Workflows
16.1.2.4. Managing and Monitoring Running Workflows
16.1.2.5. User Interaction Using Tasks
16.1.3. Tools for Workflow Development
16.1.3.1. Visio 2010: Process Design
16.1.3.2. SharePoint Designer 2010: Declarative Workflow
16.1.3.2.1. Workflows
16.1.3.2.2. Workflow Settings
16.1.3.2.3. Workflow Editor
16.1.3.3. Visual Studio 2010: Custom Workflows
16.1.3.4. Tool Comparison
16.2. Workflows with SharePoint Designer
16.2.1. Creating Workflows with SharePoint Designer
16.2.1.1. Declaring a Workflow using Actions and Conditions
16.2.1.2. Actions and Conditions
16.2.1.3. Working with Steps and Branches
16.2.1.4. Working with Tasks
16.2.1.5. Source Files of SharePoint Designer Workflows
16.2.2. Developing Custom Activities for SharePoint Designer
16.2.2.1. Setting Up the Visual Studio Solution
16.2.2.2. Implementing the Activity Class
16.2.2.3. Describing a SharePoint Designer Action in the .ACTIONS File
16.2.2.4. Applying Settings to the Configuration
16.3. Custom Workflows with Visual Studio
16.3.1. Understanding Workflow Foundation
16.3.1.1. WF Activities and Their Facets
16.3.1.2. Dependency Properties and Activity Binding
16.3.1.3. Correlation Tokens
16.3.2. SharePoint Workflow Object Model
16.3.2.1. SPWorkflow
16.3.2.2. SPWorkflowTemplate
16.3.2.3. SPWorkflowAssociation
16.3.2.4. SPWorkflowManager
16.3.2.5. SPWorkflowTask
16.3.2.6. SPWorkflowModification
16.3.2.7. SPWorkflowEventReceiver
16.3.2.8. SPItemKey
16.3.3. Developing Workflows with Visual Studio 2010
16.3.3.1. Modeling the Workflow
16.3.3.2. Developing the Workflow
16.3.3.3. Deploying Workflows
16.3.3.4. Using ASPX Workflow Forms
16.3.3.4.1. Custom Workflow Association Form
16.3.3.4.2. Custom Workflow Task Form
16.3.3.5. Integrate InfoPath Forms with Workflows
16.4. Summary
17. Administrative Tasks
17.1.
17.1.1. Introduction
17.1.1.1. Why Automate Tasks?
17.1.2. Creating Objects
17.1.2.1. Creating a Web Application
17.1.2.2. Creating a Site Collection
17.1.2.3. Creating a Web
17.1.3. Working with Site Configurations
17.1.3.1. Working with Site Properties
17.1.3.2. Maintaining Settings in web.config Programmatically
17.1.3.3. Setting Up the Configuration
17.1.3.4. Accessing the Current Settings
17.1.4. Working with Features
17.1.5. Working with Site Information
17.1.6. Retrieving the Configuration Database
17.1.7. Summary
18. Enterprise Features
18.1. Enterprise Search
18.1.1. Search Products
18.1.2. Preparing Index and Query Services
18.1.3. Query Results from the Index
18.2. User Profiles and My Sites
18.2.1. Using User Profiles
18.2.2. Work Within the Context of My Sites
18.2.3. Personalize a User's Settings
18.3. Web Content Management
18.3.1. Working with SPPublishingWeb Class
18.3.2. Content Deployment
18.3.3. What's New in SharePoint 2010 Web Content Management
18.3.3.1. Page Authoring Experience
18.3.3.2. Rich Media Integration
18.3.3.3. Content Query Web Part
18.3.3.4. Web Analytics
18.4. Advanced Document Management and Metadata
18.4.1. Document Management
18.4.1.1. Working with Metadata Navigation
18.4.1.2. Working with Metadata Taxonomies
18.4.2. Check In and Check Out
18.4.3. Versioning
18.5. Records Management
18.5.1. Moving Documents to the Records Center Using the API
18.5.2. Maintain Retention Policies
18.6. Summary
Search in book...
Toggle Font Controls
Playlists
Add To
Create new playlist
Name your new playlist
Playlist description (optional)
Cancel
Create playlist
Sign In
Email address
Password
Forgot Password?
Create account
Login
or
Continue with Facebook
Continue with Google
Sign Up
Full Name
Email address
Confirm Email Address
Password
Login
Create account
or
Continue with Facebook
Continue with Google
Prev
Previous Chapter
9. Solution Deployment
Next
Next Chapter
10. Extending the User Interface
Part 2. User Interface
Add Highlight
No Comment
..................Content has been hidden....................
You can't read the all page of ebook, please click
here
login for view all page.
Day Mode
Cloud Mode
Night Mode
Reset