Il presente articolo è stato tradotto automaticamente.
Componenti aggiuntivi di Office
Tre soluzioni per accedere ai dati di SharePoint in Office 2010
Donovan Follette
Scaricare il codice di esempio
Milioni di persone di utilizzare le applicazioni client di Microsoft Office a supporto delle loro lavoro quotidiano per comunicare, ripulire dati, numeri masticare, creare documenti, offrire presentazioni e prendere decisioni aziendali. In continuo aumento numeri, molti interagisce con Microsoft SharePoint come un portale per la collaborazione e come piattaforma per l'accesso ai dati condivisi e servizi.
Alcuni sviluppatori dell'organizzazione non sono state ancora usufruire dell'opportunità per creare funzionalità personalizzate nelle applicazioni di Office, ovvero funzionalità in grado di fornire una perfetta integrazione per gli utenti di accedere direttamente ai dati di SharePoint da applicazioni di produttività familiare. Per le aziende osservando modi per migliorare la produttività degli utenti finali, la disponibilità dei dati di SharePoint direttamente nelle applicazioni Office è un'opzione importante da considerare.
Con il rilascio di SharePoint 2010, esistono numerosi nuovi modi per accedere ai dati di SharePoint e presentarli all'utente di Office. Questi compreso tra soluzioni praticamente senza codice rese possibili tramite SharePoint Workspace 2010 (precedentemente noto come Groove), la sincronizzazione diretta tra SharePoint in Outlook, la nuova API REST di SharePoint e il nuovo modello a oggetti client. Esattamente come in Microsoft Office SharePoint Server (MOSS) 2007, è disponibile in SharePoint 2010 anche per un'ampia gamma di servizi Web.
In questo articolo ci sarà descrivono un paio di soluzioni senza codice e Mostra come generare alcune soluzioni più complesse utilizzando le nuove funzionalità in SharePoint 2010.
Origini dati esterne
Avviare Let’s eseguendo un'occhiata veloce i tipi di elenco di SharePoint, è possibile utilizzare come origini dati.
Un'origine dati particolarmente utile è un elenco esterno vengono visualizzati i dati recuperati tramite una connessione a un sistema di linea di business (LOB). MOSS 2007 consentono di connettersi a dati LOB utilizzando Business Data Catalog (BDC), che viene fornito l'accesso in lettura ai sistemi back-end. 2010 SharePoint fornisce Business Connectivity Services (BCS), che è un'evoluzione del BDC che supporti l'accesso completo in lettura e scrittura dei dati LOB.
Motivo per cui si desidera importare i dati LOB in SharePoint Si consideri il caso di utilizzo in cui si dispone di un sistema di customer relationship management (CRM) può accedere direttamente a un numero limitato di persone nell'organizzazione. Tuttavia, vi è una tabella clienti nel database con nome e indirizzo dati che potrebbero essere utilizzati da molti altri se fosse disponibile. In reali, probabilmente finisce con utenti di copiare le informazioni da varie fonti non attendibili e incollare nei documenti Office. Sarebbe meglio accedere ai dati cliente dal sistema CRM autorevole ed esporlo in SharePoint come un elenco esterno possono accedere i client di Office.
SharePoint Designer 2010 è lo strumento utilizzato per configurare l'accesso a un sistema LOB e rendere i dati disponibili in un elenco esterno di SharePoint. Esistono un paio di passaggi necessari per eseguire questa operazione.
Il primo passaggio consiste nel creare un nuovo esterni Content Type (ECT). Il ECT contiene metadati che descrivono la struttura dei dati back-end, ad esempio campi e metodi CRUD che SharePoint utilizzerà per interagire con esso. Dopo aver creato il ECT, può essere generato da essa un elenco esterno in qualsiasi sito di SharePoint. Elenchi esterni aspetto e agiscono come qualsiasi altro elenco standard di SharePoint, ma i dati esterni non è memorizzato in SharePoint. Invece, viene recuperato tramite ECT quando vi si accede da un utente finale.
SharePoint Designer include il supporto predefinito per la connessione a origini dati esterne, ad esempio SQL Server, Windows Communication Foundation (WCF) e Microsoft .NET Framework. Pertanto, un ECT possono essere creati facilmente per la connessione a qualsiasi tabella di database SQL Server o visualizzazione, servizio WCF o servizio Web. È possibile creare soluzioni personalizzate di .NET in Visual Studio 2010 utilizzando il nuovo modello di progetto modello di connettività dei dati di SharePoint 2010 business.
Ai fini di questo articolo, il tipo di origine dati di SQL Server utilizzato per creare un ECT per una tabella di database. Quindi il ECT è stato utilizzato per creare un elenco esterno. Figura 1 Mostra risultante “ clienti da CRM ” ECT dopo aver completato la configurazione di SharePoint Designer.
Figura 1 di configurazione ECT per CRM esterni l'accesso ai dati
Esistono un paio di cose per evidenziare. Notare innanzitutto nel Pannello informazioni sul tipo di contenuto esterno che è impostato il valore della proprietà tipo di elemento di Office al contatto. Durante il processo di configurazione, è possibile mappare i campi di dati esterni per un tipo di elemento di Office corrispondente come contatto. Questo non è un requisito, ma poiché è possibile mappare correttamente i dati dal database di CRM nome e indirizzo per un contatto di Outlook, è stato scelto questa assegnazione. È possibile utilizzare in seguito il risultato di questa opzione di configurazione di Outlook.
Notare in secondo luogo, nel Pannello operazioni di tipo contenuti esterni che sono stati attivati metodi CRUD completi per questo ECT. Ciò era dovuto a selezioni effettuate nella configurazione guidata. Tuttavia, è certamente possibile ragioni commerciali per limitare le operazioni di sistema LOB in sola lettura. In tal caso, è possibile selezionare semplicemente le operazioni di lettura elenco ed elemento di lettura durante la configurazione. Questi sono solo due operazioni necessarie per creare un ECT.
Una volta creato il ECT, è un semplice passaggio per creare un elenco esterno da esso. Per eseguire questa operazione creando un elenco esterno nuovo da all'interno di SharePoint o SharePoint Designer.
Elenchi standard di SharePoint
Naturalmente, è possibile utilizzare gli elenchi SharePoint standard per visualizzare i dati aziendali. Si supponga, ad esempio, che il reparto gestisce il contenuto del corso di formazione. Mantenere due elenchi di SharePoint: Categoria del corso e corsi. Questi elenchi contengono informazioni sul corso dipendenti su altri team utilizzano per creare clienti corrispondenza, brochure o campagne pubblicitarie. I dati gestiti da un team di piccole dimensioni, ma devono essere immediatamente disponibili per l'utilizzo da numerosi utenti dell'azienda.
2010 SharePoint è una nuova funzionalità mediante il quale le ricerche modulo relazioni tra elenchi. Quando la creazione di una nuova colonna in un elenco, una delle opzioni è rendere la colonna tipo di ricerca, indicare un altro elenco all'interno del sito come origine. SharePoint supporta le ricerche a valore singolo per le relazioni uno-a-molti o ricerca multivalore per le relazioni molti a molti. Se si sceglie SharePoint gestisce inoltre l'integrità referenziale tra gli elenchi supportano le eliminazioni a catena o con restrizioni. Fornisce numerose opzioni di come impostare e utilizzare gli elenchi di SharePoint.
Tornando al nostro esempio, è possibile creare facilmente una colonna di ricerca di corsi elenco denominata categoria originato dall'elenco categoria corsi come illustrato in di Figura 2.
Figura 2 con un elenco di ricerca per i dati di origine corso categoria
Trasferire dati elenco SharePoint per Office
Finora abbiamo abbiamo esaminato come superficie dati esterni come elenchi di SharePoint utilizzando le nuove funzionalità BCS in SharePoint 2010. Gli utenti possono accedere ai dati tramite il browser su un computer o un dispositivo mobile, ma probabilmente gli utenti apprezzeranno l'esperienza dell'applicazione client Office completa. Attivare Let’s ora l'attenzione a utilizzare i dati dell'elenco SharePoint sul client in due modi. Innanzitutto, si vedrà come accedere a dati senza scrivere codice utilizzando area di lavoro SharePoint e Outlook.
Quando si sviluppa la soluzione di esempio CRM, esistono due Connetti & Esporta i pulsanti nella barra multifunzione di SharePoint per l'elenco di clienti esterni: Sincronizzazione di area di lavoro SharePoint e connettersi a Outlook (vedere di Figura 3). Se nel computer client è installato SharePoint Workspace 2010, sincronizzazione nell'area di lavoro SharePoint consente di sincronizzare elenchi e raccolte documenti per il client con un solo clic. Una copia memorizzata nella cache locale del contenuto sarà disponibile per l'utente nell'area di lavoro SharePoint se l'utente è in linea o non in linea. Quando l'utente è in uno stato non in linea e consente di modificare una voce di elenco o un documento e salvarlo localmente, il documento o la voce di elenco verrà sincronizzato con SharePoint automaticamente quando l'utente è nuovamente in linea.
Figura 3 Connect & Esporta Opzioni barra multifunzione SharePoint
Si tratta di una soluzione senza codice richiesto. I dati vengono resi accessibili nell'applicazione client area di lavoro SharePoint visualizzato in di Figura 4. E poiché i metodi CRUD completi definiti nel ECT, eventuali modifiche apportate ai dati del cliente nell'area di lavoro di SharePoint verranno aggiornati nel database di CRM.
Figura 4 accesso ai dati esterni di elenco in un'area di lavoro SharePoint
Perché abbiamo mappato i campi di database CRM per il tipo di elemento di contatto Office durante la configurazione ECT, SharePoint può offrire dati elenco esterno a Outlook come contatti nativi. Facendo clic su Connetti al pulsante della barra multifunzione di Outlook SharePoint consente di sincronizzare questo elenco esterno direttamente da Outlook. Nuovamente, nessun codice obbligatorio, con i dati di SharePoint di destinazione nel client di Office.
Utilizzando l'API REST
Soluzioni di codice No, ad esempio quelli attivati tramite connettività elenco di aree di lavoro SharePoint e Outlook, sono molto utili, ma esistono alcune esperienze utente che richiedono una soluzione personalizzata in più. Per soddisfare questi, dobbiamo fornire accesso ai dati di riepilogo nelle applicazioni di Office in modo che ci consente di personalizzare ulteriormente la soluzione.
Uno dei modi più semplici per gli sviluppatori di accedere ai dati di libreria di elenco e documenti SharePoint è probabilmente tramite la nuova API REST (listdata.svc). La maggior parte dei dati di SharePoint viene esposto come un endpoint RESTful. Il percorso standard per i servizi SharePoint è _vti_bin, pertanto se sufficiente digitare nel browser l'URL del sito e aggiungere /_vti_bin.listdata.svc, verrà visualizzato nuovamente un ATOM standard servizi documento che descrive gli insiemi disponibili sul sito (vedere di Figura 5).
Figura 5 Document Services ATOM
Si noti che sono presenti elenchi di corsi e CourseCategory. Da ulteriormente aggiungendo /Course all'URL, è possibile recuperare tutti i corsi nell'elenco oppure è possibile recuperare alcun uno corso specifico aggiungendo un numero. Ad esempio, viene restituito il terzo corso:
http://intranet.contoso.com/sites/SPC/_vti_bin/listdata.svc/Course(3)
È possibile eseguire query più avanzate aggiungendo il filtro di proprietà seguenti:
?$filter=startswith(propertyname,'value')
Ma una query avanzata dell'importante è che può restituire i corsi con i rispettivi dati associati CourseCategory. Aggiungendo il seguente URL del sito, è possibile recuperare la struttura del corso e CourseCategory combinata in un singolo payload:
/_vti_bin.listdata.svc/Course?$expand=Category
Si vedrà questo implementato in un componente aggiuntivo di Word nella sezione successiva.
Creazione di un componente aggiuntivo di Word
Una volta imparato a sfruttare le API REST per acquisire l'accesso ai dati, può superficie dei dati in applicazioni client in cui gli utenti hanno una ricca esperienza di modifica. In questo esempio ci sarà creare un componente aggiuntivo di Word e presentare i dati all'utente in modo significativo. L'applicazione avrà un elenco a discesa per le categorie di corso, una casella di riepilogo viene caricato con i corsi corrispondenti per la selezione di categoria e un pulsante per inserire testo sul corso nel documento di Word.
In Visual Studio 2010, creare un nuovo Office 2010 aggiuntivo progetto Word in C#.
Aggiungere una nuova origine dati di servizio. Nel pannello della procedura guidata Aggiungi riferimento al servizio, immettere l'URL del sito di SharePoint e aggiungere /_vti_bin/listdata.svc. Ad esempio:
http://intranet.contoso.com/_vti_bin/listdata.svc
Dopo aver immesso l'URL, fare clic su Vai. Consente di recuperare i metadati per il sito di SharePoint. Quando si sceglie OK, WCF Data Services genera classi fortemente tipizzate è utilizzando Entity Framework. Questo completamente estrae il fatto che l'origine dati SharePoint o un producer OData che fornisce i dati tramite il protocollo Open. Da questo punto in poi sufficiente utilizzare i dati come classi .NET familiare.
Per l'interfaccia utente, verrà creato un riquadro attività personalizzato, che fornisce un'interfaccia utente nelle applicazioni di Office può essere ancorata nella parte superiore, inferiore, sinistra o destra dell'applicazione. I riquadri attività possono avere aggiunti ad essi, tra cui il controllo utente di Windows Presentation Foundation (WPF) che verrà utilizzato i controlli Windows Form.
Aggiungere un controllo utente WPF al progetto utilizzando la finestra di dialogo Aggiungi nuovo elemento e denominarlo CoursePicker. Quando si apre la finestra di progettazione, è possibile sostituire l'elemento Grid con il frammento di XAML illustrato in di Figura 6. Questo semplicemente aggiunge il controllo ComboBox, Button e ListBox e impostate alcune proprietà. Alcuni eventi verranno aggiunti successivamente.
Figura 6 di Word Markup aggiuntivo dell'interfaccia utente
<StackPanel>
<ComboBox
Name="cboCategoryLookup" Width="180" Margin="5"
HorizontalAlignment="Center" IsEditable="False"
ItemsSource="{Binding}"
DisplayMemberPath="CategoryName"
SelectedValuePath="CategoryName" />
<Button Name="button1"
Content="Insert Course Information" Margin="5" />
<ListBox Name="courseListBox" ItemsSource="{Binding}">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel>
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding Path=CourseID}"
FontWeight="Bold" />
<TextBlock Text=": " FontWeight="Bold" />
<TextBlock Text="{Binding Path=Name}" />
</StackPanel>
<TextBlock Text="{Binding Path=Description}"
Margin="5 0 0 0" />
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</StackPanel>
Aprire il file CoursePicker.xaml.cs. Subito dopo lo spazio dei nomi verranno aggiunti due istruzioni, uno per il riferimento al servizio, ServiceReference1 e uno per System.NET:
namespace Conf_DS {
using ServiceReference1;
using System.Net;
Nella classe CoursePicker primo ordine di azienda è creare un'istanza dell'oggetto di contesto dati. Qui, si passa l'URL al sito, aggiunti nuovamente dalla definizione _vti_bin/listdata.svc:
public partial class CoursePicker : UserControl {
Office2010DemoDataContext dc = new Office2010DemoDataContext(
new Uri("http://intranet.contoso.com/sites/spc/_vti_bin/listdata.svc"));
Successivamente sarà necessario una variabile a livello di classe List per memorizzare nella cache gli elementi recuperati corso e salvare round trip al server:
List<CourseItem> courses = null;
Il codice per recuperare i corsi e dati sono la OnInitialized CourseCategory esegue l'override del metodo. Innanzitutto è necessario designare le credenziali da passare al server connesso. Le categorie di corso vengono quindi recuperate tramite l'oggetto contesto dati e associate alla categoria ComboBox. Infine, utilizzando l'opzione di espansione, corsi vengono restituiti con la categoria associata e caricati nell'oggetto elenco di corsi. Questo memorizza nella cache i corsi localmente per migliorare le prestazioni:
protected override void OnInitialized(EventArgs e) {
dc.Credentials = CredentialCache.
DefaultCredentials;
// Load Category dropdown list
cboCategoryLookup.DataContext =
dc.CourseCategory;
cboCategoryLookup.SelectedIndex = 0;
// To cache data locally for courses
// Expand to retrieve the Category as well.
courses = dc.Course.Expand("Category").ToList();
base.OnInitialized(e);
}
A questo punto è necessario aggiungere un paio di eventi. Tornare alla finestra di progettazione CoursePicker e fare doppio clic sul pulsante per creare l'evento click. Successivamente, fare clic sulla casella combinata e nel menu proprietà, fare clic sulla scheda eventi e fare doppio clic sull'evento SelectionChanged. Aggiungere il codice al gestore eventi SelectionChanged è simile al seguente:
private void cboCategoryLookup_SelectionChanged(
object sender, SelectionChangedEventArgs e) {
courseListBox.DataContext = from c in courses
where c.Category.CategoryName == cboCategoryLookup.SelectedValue.ToString()
orderby c.CourseID
select c;
}
In questo caso, una semplice query LINQ Cerca l'oggetto elenco di corsi (quella caricata con dati recuperati utilizzando l'opzione di espansione) per individuare tutti i corsi che hanno un nome di categoria che corrisponde al nome della categoria corso selezionato nella casella combinata. Inoltre, gli ordini i risultati per fornire un'esperienza utente parziale.
Infine, aggiungere codice al gestore eventi del pulsante per eseguire il cast dell'elemento casella di riepilogo selezionata in un oggetto CourseItem. Quindi è possibile adottare diversi elementi di dati da presentare all'utente e inserirli nel documento nella posizione del punto di inserimento:
private void button1_Click(
object sender, RoutedEventArgs e) {
CourseItem course = (CourseItem)courseListBox.SelectedItem;
Globals.ThisAddIn.Application.Selection.InsertAfter(
String.Format("{0}: {1} \n{2}\n", course.CourseID,
course.Name, course.Description));
}
E questo è tutto, veramente semplice codice di accesso ai dati di SharePoint tramite WCF Data Services.
Aprire il file ThisAddIn.cs. Questo è il punto di ingresso principale per tutti i componenti aggiuntivi per Office. Qui è possibile aggiungere il codice per creare un'istanza del riquadro attività:
private void ThisAddIn_Startup(object sender, System.EventArgs e) {
UserControl wpfHost = new UserControl();
ElementHost host = new ElementHost();
host.Dock = DockStyle.Fill;
host.Child = new CoursePicker();
wpfHost.Controls.Add(host);
CustomTaskPanes.Add(wpfHost, "Training Courses").Visible = true;
}
Impossibile aggiungere il controllo utente WPF CoursePicker direttamente all'insieme di oggetti riquadro attività personalizzato. Devono essere ospitato in un controllo ElementHost, che fornisce il collegamento tra controlli WPF e controlli Windows Form. Si noti che l'oggetto CoursePicker viene aggiunto come figlio dell'oggetto ElementHost e quindi l'oggetto ElementHost viene aggiunto all'insieme di oggetti riquadro attività personalizzato. Un'applicazione di Office può avere più di un riquadro attività personalizzato installato e disponibile per l'utente in qualsiasi momento, quindi il riquadro attività per questo componente aggiuntivo appena saranno nell'insieme. Figura 7 viene illustrato il componente aggiuntivo completato.
Figura 7 Il componente aggiuntivo Word in ufficio
I dati presenti nell'applicazione di Office, è possibile eseguire ulteriormente la soluzione aggiungendo codice che interagisce con l'API di Word. Ad esempio, è possibile aggiungere codice in modo che quando un utente seleziona un corso, le informazioni inserite e formattate nel documento. L'applicazione Office API ricche e consentono di aggiungere ulteriori funzionalità per le soluzioni personalizzate che consentono agli utenti più produttivi. Successivamente, si vedrà un esempio con i controlli contenuto di Word collegato a un modello a oggetti SharePoint lato client.
Utilizzo del modello a oggetti client
Utilizzando le API REST per accedere ai dati è uno tra alcune opzioni disponibili. Ad esempio, sono disponibili anche tre nuove API per 2010 di SharePoint forniscono un modello di programmazione coerente in JavaScript, le applicazioni .NET gestito e i client Silverlight. Questi modelli a oggetti tre client interagiscono utilizzando un sottoinsieme delle funzionalità di modello di oggetto server SharePoint ed essenzialmente interagiscono con SharePoint a livello della raccolta siti e sotto: siti Web, elenchi, listitems, tipi di contenuto, campi ed elenchi esterni. Se si ha familiarità con il modello di oggetti server, sarà familiarità con il modello di oggetti client.
Per dimostrare l'utilizzo del modello di oggetti client, utilizzeremo l'elenco esterno contenente i clienti CRM per creare un componente aggiuntivo Word a livello di documento in cui viene caricato il riquadro azioni con i clienti. Si tratta di un caso in cui è necessario utilizzare il modello a oggetti client perché il servizio dati List non forniscono accesso agli elenchi esterni. In questo esempio, l'utente può selezionare un cliente e inserire il suo nome e indirizzo informazioni in controlli contenuto in un modello di documento di offerta.
Nell'esempio precedente per categoria e corsi era un componente aggiuntivo a livello di applicazione. Un componente aggiuntivo Word a livello di applicazione saranno presente ogni avvio di Word. A livello di documento aggiuntivi, tuttavia, sono associati a un documento e caricherà solo se viene aperto un documento di un determinato tipo. In questo caso, l'elenco di clienti esterni solo verrà visualizzato all'utente quando si lavora su un documento di offerta.
In Visual Studio, iniziare creando un nuovo progetto documento di Word 2010. Nella procedura guidata, sarà necessario selezionare un documento predefinito o un documento sono già state salvate. Nel mio caso, ho utilizzato un documento di offerta che avevo già salvato. Il documento verrà aperto all'interno di Visual Studio e Word diventa la finestra di progettazione del documento.
È possibile utilizzare la casella degli strumenti per inserire controlli direttamente sulla superficie del documento come se si trattasse di un'applicazione Windows Form. Qui è possibile aggiungere controlli contenuto di Word per le informazioni di nome e indirizzo. Questi controlli contenuto verranno popolati con i dati cliente selezione dell'utente in fase di esecuzione.
Per aggiungere un controllo contenuto del documento, selezionare il testo del documento che si desidera includere nel controllo contenuto. Quindi trascinare un RichTextContentControl da controlli Word nella casella degli strumenti e rilasciarlo sul testo selezionato. Fornire un nome per il controllo e un valore di testo nella finestra Proprietà. A tale scopo per ID cliente e società nome, indirizzo, città e clienti in modo che il documento simile Figura 8 .
Figura 8 Creazione documento offerta
Poiché il modello di oggetti client non fornisce dati fortemente tipizzati dal server, è necessario aggiungere al progetto una classe Customer. La classe Customer verrà utilizzata per associare i dati restituiti dal modello di oggetti client:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace CSOM_Quote {
public class Customer {
public string CustomerID { get; set; }
public string CompanyName { get; set; }
public string ContactName { get; set; }
public string Address { get; set; }
public string City { get; set; }
}
}
Per utilizzare il modello a oggetti client che è necessario fare riferimento Microsoft.SharePoint.Client e Microsoft.SharePoint.Client.Runtime.
Come nel caso dell'esempio precedente, recupero dei dati avviene nel metodo di override OnIntitialized. Esistono due differenze principali tra codice a fronte del modello a oggetti client e WCF Data Services. Il modello a oggetti client prevede innanzitutto di avere familiarità con SharePoint e la relativa struttura. Con WCF Data Services, che viene astratto stoccaggio e intervenire solo i dati. In secondo luogo, con il modello di oggetti client, i dati restituiti non sono fortemente tipizzati. Si è responsabile del recupero di dati in oggetti che è possibile utilizzare per le query LINQ e l'associazione dati.
Di Figura 9 è illustrato il codice di accesso ai dati. Il contesto client è qui l'oggetto centrale. Passare l'URL del sito per creare una nuova istanza del contesto client. Quindi è possibile avviare la creazione di oggetti di SharePoint utilizzando la procedura seguente:
- Creare un sito
- Creare un insieme di elenchi di siti
- Ottenere un elenco con un nome specifico
- Ottenere tutti gli elementi nell'elenco
- Carica la query nel contesto
- Eseguire la query
Figura 9 CRM aggiuntivo Code Access Data
protected override void OnInitialized(EventArgs e) {
SPClientOM.ClientContext context = new ClientContext("http://intranet.contoso.com/sites/spc");
SPClientOM.Web site = context.Web;
SPClientOM.ListCollection lists = site.Lists;
var theBCSList = lists.GetByTitle("Customers");
SPClientOM.CamlQuery cq = new SPClientOM.CamlQuery();
IQueryable<SPClientOM.ListItem> bcsListItems = theBCSList.GetItems(cq);
bcsList = context.LoadQuery(bcsListItems);
context.ExecuteQuery();
var bcsCustomerData =
from cust in bcsList
select new Customer {
CustomerID = cust.FieldValues.ElementAt(1).Value.ToString(),
ContactName = cust.FieldValues.ElementAt(2).Value.ToString()
+ " "
+ cust.FieldValues.ElementAt(3).Value.ToString(),
CompanyName = cust.FieldValues.ElementAt(4).Value.ToString(),
Address = cust.FieldValues.ElementAt(5).Value.ToString(),
City = cust.FieldValues.ElementAt(6).Value.ToString(), };
foreach (var x in bcsCustomerData) {
Customer tempCustomer = new Customer();
tempCustomer.CustomerID = x.CustomerID;
tempCustomer.CompanyName = x.CompanyName;
tempCustomer.ContactName = x.ContactName;
tempCustomer.Address = x.Address;
tempCustomer.City = x.City;
customers.Add(tempCustomer);
}
customerListBox.DataContext = customers;
base.OnInitialized(e);
}
Prima di chiamare il metodo ExecuteQuery, tutte le istruzioni sono in coda e quindi solo inviate al server quando esegue query viene chiamato. In questo modo, si controlla la larghezza di banda e il payload. La query restituisce i risultati, il codice rimanente associa i dati in un oggetto elenco di clienti può essere associato al controllo listbox di cliente.
Anche in questo esempio viene utilizzato un controllo utente WPF. Poiché XAML è simile all'esempio precedente, non viene visualizzata qui. Il codice per creare un'istanza di un riquadro azioni a livello di documento anziché un riquadro attività a livello di applicazione è un po' diverso, come illustrato di seguito:
public partial class ThisDocument {
private CustomersCRM CustomerActionPane = new CustomersCRM();
private void ThisDocument_Startup(object sender, System.EventArgs e) {
ElementHost host = new ElementHost();
host.Dock = DockStyle.Fill;
host.Child = new CustomerPicker();
CustomerActionPane.Controls.Add(host);
this.ActionsPane.Controls.Add(CustomerActionPane);
}
...
Si noti che la selezione di clienti controllo utente WPF viene aggiunto a ElementHost, l'oggetto ElementHost viene aggiunto al riquadro azione cliente controlla l'insieme e il riquadro azioni cliente viene quindi aggiunto all'insieme di controlli del riquadro azioni.
L'ultimo passaggio consiste nell'aggiungere il pulsante click a popolare i controlli contenuto di Word con il nome appropriato e le informazioni di indirizzo, come illustrato in di Figura 10.
Figura 10 Aggiunta pulsante Click eventi ai controlli contenuto di Word
private void button1_Click(
object sender, RoutedEventArgs e) {
Customer customer = (Customer)customerListBox.SelectedItem;
Globals.ThisDocument.wccContactName.Text = customer.ContactName;
Globals.ThisDocument.wccCompanyName.Text = customer.CompanyName;
Globals.ThisDocument.wccAddress.Text = customer.Address;
Globals.ThisDocument.wccCity.Text = customer.City;
Globals.ThisDocument.wccCustomerID.Text = customer.CustomerID;
}
Innanzitutto, è il cast elemento casella di riepilogo selezionata in un oggetto cliente.Dati dall'oggetto cliente viene quindi utilizzati per popolare i controlli contenuto.Il risultato sarà simile a di Figura 11.
Figura 11 Il componente aggiuntivo di CRM in Word
Servizi Web come servizi social
Finora abbiamo visto in diversi modi che i dati SharePoint accessibili dalle applicazioni client di Office.La tecnica finale che esamineremo utilizza servizi Web.SharePoint offre servizi Web come il modo principale per accedere in modalità remota i dati SharePoint.I servizi Web di SharePoint 2010 fornisce accesso a quasi tutte le funzionalità di SharePoint Server.A differenza di alcune delle altre tecnologie di dati si è visto, ad esempio REST e il modello di oggetti client, copertine di servizi Web sia l'accesso ai dati e l'accesso alle funzionalità amministrative.
Tutti i servizi Web preferiti sono ancora in tale posizione, ad esempio i servizi Lists.asmx e Search.asmx.Servizi Web di SharePoint vengono implementati come servizi ASP.NET Web con estensione ASMX e la maggior parte dei nuovi servizi di SharePoint 2010 vengono inoltre scritti come servizi ASMX.Scopo principalmente per la compatibilità con altri strumenti e prodotti più ampia.
Un nuovo obiettivo di servizi Web di SharePoint è servizi sociali.Il centro di tutte le applicazioni sociali è l'utente.SharePoint è un UserProfileService che consente di accedere a tutte le informazioni di profilo per un utente.UserProfileService include le proprietà standard, ad esempio nome e indirizzo, ma include anche altre proprietà, ad esempio hobby, competenze, scuole e colleghi.I colleghi (o amici come che sta richiamate in altri siti di social pubbliche) sono una funzionalità chiave nella struttura sociale SharePoint.
Un altro aspetto importante delle applicazioni sociali è opinione personale sul contenuto che si verificano.SharePoint è un SocialDataService consente agli utenti di tag, tasso e commento sui dati, documenti e pagine all'interno dei siti.
Attività di pubblicazione e sottoscrizione di attività che generano i colleghi il terzo aspetto sociale importante di SharePoint.SharePoint fornisce un ActivityFeed e API per pubblicare le attività come un feed.
Poiché questo non è un articolo sulle nuove funzionalità in SharePoint sociali, abbiamo non verrà esaminato in dettaglio su questi ma forniscono un contesto importante negli esempi riportati di seguito in questo articolo.Consultare il Centro per sviluppatori SharePoint o “ di gestire reti sociali con Microsoft Office SharePoint Server 2007 ” white paper per ulteriori dettagli.
Estensione di Outlook con i servizi Web
Abbiamo visto come SharePoint e Office forniscono numerose scelte si sta per determinare il modo migliore per accedere ai dati per le applicazioni di Office.Un altro modo include l'utilizzo di servizi Web di SharePoint.In questo esempio, creeremo una nuova barra multifunzione di Outlook che consente di estrarre tutti i colleghi di SharePoint in Outlook come contatti.Si è anche in grado di superficie immagine del profilo dell'utente in Outlook, come si è abituati a vedere con contatti forniti da Microsoft Exchange.
Iniziare creando un componente aggiuntivo di Outlook nuovo in Visual Studio 2010.Intendiamo scrivere in C#, ma se si preferisce, è possibile utilizzare Visual Basic.Nelle versioni precedenti, Visual Basic ha un leggero vantaggio con supporto per funzionalità quali parametri facoltativi, ma C# supporta ora, troppo.
La barra multifunzione consente di interagire con tutte le applicazioni di Office in modo semplice e coerenza.2010 Outlook ora include una barra multifunzione per lo schermo principale.In questo esempio, verrà aggiunta una nuova barra multifunzione qui.Visual Studio 2010 semplifica la creazione di barre multifunzione di Office con una finestra di progettazione della barra multifunzione in visual.È possibile semplicemente trascinare controlli dalla casella degli strumenti a sinistra e rilasciarli nell'area di progettazione.
In questo esempio, è sufficiente impostare alcune proprietà, ad esempio l'etichetta per la scheda e il gruppo.Aggiungere un controllo pulsante sulla superficie.Dopo aver ottenuto un pulsante aggiunto al gruppo della barra multifunzione, è possibile impostare le dimensioni grandi e impostare un'immagine per il pulsante.La barra multifunzione sarà simili a di Figura 12.
Figura 12 Creazione di una nuova barra multifunzione di Outlook
L'ultima cosa da fare è impostare la proprietà per determinare quando verrà visualizzata la barra multifunzione.Per impostazione predefinita, la barra multifunzione viene visualizzata in Esplora soluzioni Mail.Si tratta della finestra che viene visualizzato quando si apre un elemento di posta.In questo esempio, si desidera che la barra multifunzione per visualizzare nella schermata principale.Selezionare la barra multifunzione e impostare la proprietà RibbonType Microsoft.Outlook.Explorer.È possibile visualizzare un numero di posizioni in cui venga visualizzati sulla barra multifunzione, compresa la Contact Explorers e.
Fare doppio clic sul pulsante della barra multifunzione per creare codice code-behind scegliere gestore eventi.Questo è l'evento che verrà utilizzato per creare il contatto di Outlook.
Si è ora pronti per aggiungere il codice che crea un contatto in Outlook.Visual Studio 2010 rende semplice da eseguire.Facile di suddividere il problema in più parti più piccole.Innanzitutto creato il componente aggiuntivo di Outlook, quindi è stata creata la barra multifunzione.Dopo ogni procedura, assicurarsi di che premere F5 per compilare ed eseguire l'applicazione.È possibile creare un contatto di Outlook utilizzando valori hardcoded.Dopo aver verificato che questo sia funzionante, è possibile aggiungere il codice che chiama SharePoint.Ancora una volta, ogni fase verificare che tutto funzioni correttamente prima di passare al passaggio successivo.
Figura 13 viene illustrato il codice per creare un nuovo contatto a livello di codice.Per creare un nuovo oggetto ContactItem utilizza il metodo CreateItem.È possibile impostare le proprietà dell'oggetto ContactItem e chiamare il metodo Save per salvare le modifiche.
Figura 13 di codice boilerplate per la creazione di un contatto
Outlook.ContactItem newContact = Globals.ThisAddIn.Application.CreateItem(Outlook.OlItemType.olContactItem);
newContact.FirstName = "Paul";
newContact.LastName = "Stubbs";
newContact.Email1Address = "pstubbs@microsoft.com";
newContact.CompanyName = "Microsoft";
newContact.JobTitle = "Technical Evangelist";
newContact.CustomerID = "123456";
newContact.PrimaryTelephoneNumber = "(425)555-0111";
newContact.MailingAddressStreet = "1 Microsoft Way";
newContact.MailingAddressCity = "Redmond";
newContact.MailingAddressState = "WA";
newContact.AddPicture(@"C:\me.png");
newContact.Save();
La parte solo davvero difficile è che consente di impostare la fotografia del contatto per chiamare il metodo AddPicture, che accetta un percorso di un'immagine su disco. Tale situazione è problematica perché si desidera scaricare immagini da SharePoint. Verrà illustrato come effettuare questa operazione nella sezione successiva. Dopo aver verificato che il funzionamento del codice e un contatto viene creato in Outlook, è possibile chiamare SharePoint e aggiungere contatti reali.
Utilizzo del servizio profili utente
UserProfileService è un servizio SharePoint Web che è possibile utilizzare per accedere alle informazioni di profilo, compreso un elenco dei colleghi e le relative informazioni di profilo. Per utilizzare questo servizio, iniziare aggiungendo un riferimento al progetto. Poiché si tratta di un servizio Web e non un servizio WCF, è necessario selezionare la scheda avanzata della finestra di dialogo Aggiungi servizio, quindi scegliere il pulsante Aggiungi servizio Web. Verrà visualizzata la finestra di dialogo Aggiungi servizio Web vecchio da ricordare da Visual Studio 2005.
Dopo aver aggiunto il riferimento, è possibile aggiungere il codice per recuperare i colleghi:
// Instantiate the Web service.
UserProfileService userProfileService = new UserProfileService();
// Use the current user log-on credentials.
userProfileService.Credentials = System.Net.CredentialCache.DefaultCredentials;
Questo codice crea un'istanza del servizio e passa le credenziali correnti al servizio. Successivamente, chiamare il metodo GetUserColleagues passando l'utente che si desidera recuperare i colleghi per. Restituisce una matrice di oggetti ContactData:
ContactData[] contacts = userProfileService.GetUserColleagues("contoso\\danj");
È ora possibile scorrere tutti gli oggetti ContactData rappresentano i dati di profilo per i colleghi dell'utente in SharePoint. Chiamando il metodo GetUserProfileByName, che restituisce una matrice di PropertyData contenente coppie chiave / valore per ciascun collega è recuperare le proprietà estese:
// Add each Colleague as an Outlook Contact
foreach (ContactData contact in contacts) {
// Get the users detailed Properties
PropertyData[] properties = userProfileService.GetUserProfileByName(contact.AccountName);
// Create a new Outlook Contact
Outlook.ContactItem newContact = Globals.ThisAddIn.Application.CreateItem(Outlook.OlItemType.olContactItem);
Ora abbiamo converte le coppie di chiave/valore nelle proprietà di contatto:
// Set the Contact Properties
newContact.FullName = contact.Name;
newContact.FirstName = properties[2].Values[0].Value.ToString();
newContact.LastName = properties[4].Values[0].Value.ToString();
newContact.Email1Address = properties[41].Values[0].Value.ToString();
...
Infine, abbiamo afferrare la foto del contatto e salvare il nuovo contatto:
// Download the users profile image from SharePoint
SetContactImage(properties, newContact);
newContact.Save();
L'ultima parte del puzzle sta recuperando l'immagine del contatto da SharePoint. Una delle proprietà estese include un percorso a una miniatura dell'immagine del profilo dell'utente. È necessario scaricare l'immagine in un file temporaneo sul disco in modo che l'API di Outlook possono aggiungere all'oggetto ContactItem:
private static void SetContactImage(
PropertyData[] properties,
Outlook.ContactItem newContact){
// Download image to a temp file
string userid = properties[16].Values[0].Value.ToString();
string imageUrl = properties[15].Values[0].Value.ToString();
string tempImage = string.Format(@"C:\{0}.jpg", userid);
WebClient Client = new WebClient();
Client.Credentials = CredentialCache.DefaultCredentials;
Client.DownloadFile(imageUrl, tempImage);
newContact.AddPicture(tempImage);
}
È tutto!A questo punto si dispone di un Outlook aggiuntivo Ribbon chiama SharePoint per estrarre dati sociali nei contatti di Outlook.Quando si esegue l'applicazione, si vedrà un oggetto ContactItem popolato con i dati di SharePoint, incluse le informazioni sul profilo e l'immagine.
Conclusioni
Ora si è visto quanto sia semplice per recuperare i dati da SharePoint in client di Office.È stato illustrato numerose opzioni da soluzioni senza codice altamente adattabile soluzioni utilizzando C# o Visual Basic.
Utilizzo di WCF Data Services per accedere ai dati degli elenchi SharePoint fornisce un modello comune per gli sviluppatori .NET di rapida e semplice da implementare.Il modello a oggetti client fornisce il mezzo per accedere a SharePoint esterni vengono elencati e apre un mondo di opportunità per trasferire i dati LOB in Office.E, infine, consente l'accesso ai dati più flessibile di servizi Web di SharePoint, ma richiede anche un po' più di impegno in termini di codifica e test.
Rendere disponibile agli utenti come elenchi di dati in SharePoint è un passaggio importante consente un'ottima esperienza nel browser.Richiede un passaggio ulteriore, è possibile utilizzare numerose opzioni di accesso ai dati per portare i dati nelle applicazioni di Office sono familiari agli utenti.Visual Studio 2010 tutto ciò rende più semplice creare, eseguire il debug e distribuire.Come si può vedere, questi rappresentano alcune delle funzionalità nuove e importanti di sviluppo che è possibile sfruttare con le nuove versioni del prodotto.
Più formazione, esempi e informazioni sono reperibili in linea in Office e sviluppatori di SharePoint centri.
Donovan Follette un evangelista tecnico Microsoft collabora con tecnologie, tra cui Active Directory Lightweight Directory Services e Active Directory Federation Services.Ora si occupa di sviluppo di Office e la creazione di soluzioni integrate di SharePoint 2010.Visitare il suo blog all'indirizzo blogs.msdn.com/b/donovanf/ .
Paul Stubbs è un evangelista tecnico Microsoft che si concentra sulla comunità di sviluppo informazioni lavoro per SharePoint e Office, Silverlight e Web 2.0 social networking. Egli ha scritto tre libri sullo sviluppo di soluzioni con Office, SharePoint e Silverlight. Leggere il suo blog all'indirizzo blogs.msdn.com/b/pstubbs/ .
*Grazie all'esperto di tecnica seguente per la revisione di questo articolo:*John Durant