Archive for November, 2012

Office365でSilverlightを動かしてみる #実装編

「Office365でSilverlightを動かしてみる #コーディング編」で、サンドボックス ソリューションとしての Silverlight Webパーツのコーディングも終わりましたので、実際にOffice365へ実装してみたいと思います。 実装する前にひとつ注意点を挙げます。 Office365にアップする際のパーツの名前です。 上記では「SilverlightWebPart1」として追加されます。 よって、ここの名前を分かり易い名前にしておくのが良いでしょう。 Ⅰ.ローカルでの動作検証 1. まずはローカル環境で動作するか試してみましょう。   ただローカルはSharePoint環境であって、Office365(SharePoint Online)環境ではないのでローカルで   動作してもOffice365では動作しない可能性もあるので注意が必要です。   F5を押します。   SharePointのログイン画面が表示されるので、ログインしましょう。    2. ログインすると、SharePointのTOP画面が表示されます。   「編集」マークのようなタブを選択します。    3. 「編集ツール」メニューが表示されます。   「挿入」を選択すると「Webパーツ」というメニューが表示されるので選択します。    4. 「Webパーツ」を選択するとカテゴリが表示されます。   カスタムパーツは「Custom」カテゴリとして表示されます。      今回作成したのは、「SilverlightWebPart1」なので選択して「追加」ボタンを押します。 5. 「SilverlightWebPart1」が追加できました。   必ず「保存して閉じる」を押しましょう。でないと、画面に追加したパーツが保存されません。    6. それでは追加したパーツが正しく動作するか試してみましょう。   適当な動画ファイルをSharePoint上に配置しておきます。   「サイトの操作」→「SharePoint Designerで編集」を選択します。    7. 「SharePoint Designer」のログイン画面が表示されるので、SharePoint同様にログインしましょう。   ログインしたら「SharePoint Designer」のトップ画面が表示されます。      なんか見たかんじエクスプローラっぽい表示ですね。   サイトもフォルダになっているので、ドラッグアンドドロップでファイルをアップロードできます。   「11」サイトを作ってテストしているので、とりあえず、「11」→「images」に動画ファイルを置きます。    8. Silverlight WebパーツのURL欄にさきほどアップした動画のURLを入力します。   URLを入力したら「Play」ボタンを押します。(URLをコピーして貼り付けた方が早いです)   動画が表示されれば、OKです。      「Pause」、「Stop」ボタンも動作するか試しましょう。   問題無ければローカル検証は終了です。 Ⅱ.パッケージ ここまでは、ローカル(SharePoint)環境での動作検証でした。 では、実際にOffice365(SharePoint Online)上でも動作するか試してみましょう。 でもOffice365に何をアップロードすればいいのでしょう? アップロードするのは、”パッケージ(.wsp)”です。 それでは、パッケージを作成してみましょう。 Visual Studio 2012のメインメニューから「ビルド(B)」→「ソリューションの配置(D)」を選択します。 コレだけですw ガガガーと色んなファイルが生成されていますが、最終的にはパッケージファイル(.wsp)に纏まります。 端的に言えば、zipファイルのようなものでしょうか。 今回のソリューションの配置で、「EAP_Office365_Parts.wsp」がパッケージとして作成されました。 Ⅲ.Office365での動作検証 さて、ローカルでの動作検証も終え、パッケージも作成したので、Office365へパッケージをアップしてみましょう。 1. Office365(SharePoint Online)の「サイトの操作」→「サイトの設定」を選択します。    2. サイト設定の項目がいっぱいあるのですが、その中から「ギャラリー」→「ソリューション」を選択します。    3. ソリューション画面が表示されたら、「ソリューションのアップロード」を選択します。    4. パッケージファイル(EAP_Office365_Parts.wsp)を選択します。   選択が終わったら「OK」ボタンを押します。   これでソリューションを追加します。    5. ソリューションが追加されたら、アクティブ化の画面が表示されます。   追加された状態は「非アクティブ」とされているため、”アクティブ化”が必要です。   「アクティブ化」を選択してアクティブにしましょう。    6. ソリューション一覧が表示されますが、「EAP_Office365_Parts」が新しく追加されています。    7. あとは、「ローカルでの動作検証」の3番から同じ手順でWebパーツを追加して動作検証を行います。   「ueno_test」というサブサイトを作成しているので、ココにSilverlight Webパーツを追加してみます。    8. 動画ファイルもOffice365にアップしておきましょう。   それでは、動かしてみます。      動きました!   単純な機能だから問題ないだろうとは思っていましたが、実際に動いてくれるとうれしいですね。 これでOffice365(SharePoint Online)上での動作検証が完了しました。 […]

SharePointでリスト(List)の疑似的ロック機構(Lock)を作成し連番生成(sequential number auto generator)する。(Silverlight, C#, List)

SharePointでは ユーザからList(リスト)のロック機構がありません。 (SQLでいうとテーブルロック、行ロック等のSQLで重要な機能が使えません) Document Library(ドキュメントライブラリ) のChekOut/CheckIn(チェックアウト/チェックイン)はありますが、やりたいことは違います。 ここで困るのは、どうやって複数ユーザからくる連番を生成を矛盾なく生成(sequential number generator)するか問題になります。 世界中のサイト(MSや個人サイト)を検索しましたが、みんな困っているし、だれも解決していないのですが、原始的な方法がありますので。 その方法を説明します。 方法1:Webサービスで外部でロックできるDatabase Engineで生成する。(これは誰でもできそうなので省略します。) 方法2:SharePointに疑似的リストロック機構を作る。 まず以下で説明した。見積ヘッダー、見積明細でサンプルを説明します。 SharePointで伝票形式(ヘッダー、行)を複数(Multiple)のListで作るときの最適なキー(sequential number auto generator)の持ち方。(Silverlight, C#, List) 以下のような感じでロックリスト・連番リストを作成します。 見積ロックリスト ID SEQNo 1 10001 2 10002 連番リスト ID SEQNo SEQNoMain 1 1001 1 List_Quotation_Lock- Shmea.xml (見積ロックリスト) 18行目のように検索するときに重要な項目は以下のように設定してください。 必須:Required=”TRUE” ユニーク:EnforceUniqueValues=”TRUE” インデックス:Indexed=”TRUE” <?xml version=”1.0″ encoding=”utf-8″?> <List xmlns:ows=”Microsoft SharePoint” Title=”List_Quotation_Lock” FolderCreation=”FALSE” Direction=”$Resources:Direction;” Url=”Lists/List_Quotation_Lock” BaseType=”0″ xmlns=”http://schemas.microsoft.com/sharepoint/”> <MetaData> <ContentTypes> <ContentType ID=”0x0100139d7d207b6f48fc889c801512ddd21f” Name=”ListFieldsContentType”> <FieldRefs> <FieldRef ID=”{fa564e0f-0c70-4ab9-b863-0177e6ddd247}” Name=”Title” /> <FieldRef ID=”{9da4e1bd-46a7-4756-8607-39dd18df2359}” Name=”SEQNo” /> </FieldRefs> </ContentType> <ContentTypeRef ID=”0x01″> <Folder TargetName=”Item” /> </ContentTypeRef> <ContentTypeRef ID=”0x0120″ /> </ContentTypes> <Fields> <Field ID=”{fa564e0f-0c70-4ab9-b863-0177e6ddd247}” Type=”Text” Name=”Title” DisplayName=”$Resources:core,Title;” Required=”TRUE” SourceID=”http://schemas.microsoft.com/sharepoint/v3″ StaticName=”Title” MaxLength=”255″ /> <Field Name=”SEQNo” ID=”{9da4e1bd-46a7-4756-8607-39dd18df2359}” DisplayName=”SEQNo” Type=”Number” Required=”TRUE” EnforceUniqueValues=”TRUE” Indexed=”TRUE”/> </Fields> <Views> <View BaseViewID=”0″ Type=”HTML” MobileView=”TRUE” TabularView=”FALSE”> <Toolbar Type=”Standard” /> <XslLink […]

SharePointで伝票形式(ヘッダー、行)を複数(Multiple)のListで作るときの最適なキー(sequential number auto generator)の持ち方。(Silverlight, C#, List)

SharePointには自動的に連番になる[ID]というのがありますが、異なるサイトにデータ移行するときに新しい連番で採番されてしまします。 ([テンプレート保存]で移行すればIDはそのまま移行できる。) IDをベースとしてほかのリストとにのリレーションしていると、ほかのリストのリレーションを更新しないといけなくなります。 IDをベースとしないアプリケーション作成をお勧めします。以下に例をのせておきます。 例)見積アプリケーションの場合 以下のような ヘッダー・明細構造にしてSEQNoとPersonSEQNoでリレーションをします。そうするとリストデータを他のサイトに移行しても番号がずれる等の問題を防ぐことができます。 次の投稿で重複しない、連番のとりかた(SEQNo)は説明します。 SharePointでリスト(List)の疑似的ロック機構(Lock)を作成し連番生成(sequential number auto generator)する。(Silverlight, C#, List) 見積(ヘッダー)リスト ID SEQNo TITLE その他項目 1 10001 Title10001 Other10001 2 10002 Title10002 Other10002 見積明細リスト ID PersonSEQNo TITLE その他項目 1 10001     2 10001     3 10002     4 10002     List_Quotation – Shmea.xml (見積ヘッダー) 28行目のように検索するときに重要な項目は以下のように設定してください。 必須:Required=”TRUE” ユニーク:EnforceUniqueValues=”TRUE” インデックス:Indexed=”TRUE” <?xml version=”1.0″ encoding=”utf-8″?> <List xmlns:ows=”Microsoft SharePoint” Title=”List_Quotation” FolderCreation=”FALSE” Direction=”$Resources:Direction;” Url=”Lists/List_Quotation” BaseType=”0″ xmlns=”http://schemas.microsoft.com/sharepoint/”> <MetaData> <ContentTypes> <ContentType ID=”0x0100529434ab8e0a4fd48a973ccfcd48a293″ Name=”ListFieldsContentType”> <FieldRefs> <FieldRef ID=”{43bcd793-3e7b-4ec5-8dbd-d35ff4786700}” Name=”SEQNo” /> <FieldRef ID=”{e0e936a2-a2ac-4cac-b617-9332035bca63}” Name=”Memo” /> <FieldRef ID=”{13b6ce57-22a1-4d99-89ab-64006458342b}” Name=”InvoiceID” /> <FieldRef ID=”{d90001da-42fd-43f4-9d81-52f4116ead4c}” Name=”Subject1″ /> <FieldRef ID=”{45dedcec-9c80-4e4c-a929-635976b7a1b9}” Name=”Subject2″ /> <FieldRef ID=”{51fb32b7-a01b-461e-ac33-6d65b0a3ac9d}” Name=”CreateDate” /> <FieldRef ID=”{7e1e3c7a-2d07-45f9-bb3c-e68c9513cca2}” Name=”Other1″ /> <FieldRef ID=”{a9df7ffc-0604-4ced-a9a9-4273b3f14e5a}” Name=”Other2″ /> <FieldRef ID=”{f4777239-7f59-4f81-9769-7ea956f5c8be}” Name=”CustomerName” /> <FieldRef ID=”{9dd95fa6-3811-409b-b762-2e0380d917a2}” […]

Office365でSilverlightを動かしてみる #コーディング編

Office365のSharePoint Online(以降、SPO)では、サンドボックス ソリューションしか動作しないので簡単な アプリを作って実装してみたいと思います。 Silverlightを使ったVideoアプリを作ってみましょう。 たぶん、簡単なはず…w 主な開発環境 ・SharePoint Foundation ・Windows Server 2008 R2 64bit ・Visual Studio 2012 Proffesional ※詳細は、「Office365(Sharepoint)開発環境について」を参考にしてください。 1. Visual Studio 2012を起動して、プロジェクトを作成します。   ここで「ファイル」→「新規作成(N)」→「プロジェクト(P)」を選択します。    2. 今回のコーディングはC#を使いますので、左のメニューから「インストール済」→「テンプレート」→「Visual C#」→   「SharePoint」→「2010」を選択します。   そうすると中央にプロジェクトやパーツメニューが表示されます。   その中から「SharePoint 2010 Silverlight Webパーツ」を選択します。    3. 次にセキュリティレベルの指定画面が表示されます。   ローカルサイトはデフォルトで表示されるので、とく変更する必要はありません。   ソリューションの信頼レベルですが、サンドボックスなので「サンドボックス ソリューションとして配置する(B)」を   選択します。   ※ファームはOffice365では動作しません    4. 次に構成情報の指定画面が表示されます。   基本、そのまま「完了」でOKです。    5. これでひととおりの設定が終わったのでプロジェクトおよびソリューションが構成されて画面が表示されます。    6. 「MainPage.xaml」というファイルがあります。   これがSilverlightの表示部(画面?と言ったほうがいいのか)になります。   デザイン部分とコード部分に分かれて表示されています。   デフォルトでは、枠だけの状態です。   【デザイン部】      枠の左端にカーソルを移動するとオレンジ色になります。   そこでクリックするとGridを分割することができます。   とりあえず、URL部分(Grid.Row=1)、Video部分(Grid.Row=2)、ボタン部分(Grid.Row=3)に分割してみました。   【コード部】      ・青枠の部分は、Gridを分けたときのそれぞれの高さを表記しています。    「*」にすると自動調整するようです。(細かいところは分かりません)   ・赤枠の部分は、Gridを分けたときにタグが自動生成されます。    注)Gridタグ内にある「Grid.Row」を必ず重複しないように設定してください。   そんなこんなで画面にパーツを配置していきます。   左端にある「ツールボックス」を開いて以下の部品を配置します。      Grid.Row=1    ・Label×1 →「URL」    ・TextBox×1   Grid.Row=2    Videoパーツを追加するため部品は配置しません    その代り、Videoパーツをコード上で追加するため、名前をつけておきます。    名前は何でもいいのですが、ここでは「LayoutVideo」とつけておきましょう。   Grid.Row=3    ・Button×3 →「Play」、「Pause」、「Stop」        部品の名前は分かり易いような名前がいいですね。 7. 「MainPage.xaml」の編集が終わったら、C#コード「MainPage.xaml.cs」を編集しましょう。   赤枠の部分を追記していきます。   イベントは「MainPage.xaml」で配置したボタンのプロパティから追加できますし、ボタンをダブルクリックしても   自動生成できますのでお好みでどうぞ。      ※ボタンのプロパティ    【MainPage.xaml.cs】 using System; using System.Collections.Generic; using System.Linq; using System.Net; using System.Windows; using System.Windows.Controls; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using […]

WebTemplateの作り方(Sharepoint Online(Office365))

はじめに SharePointのサイトを配布する方法には、 WebTemplate(ウェブテンプレート) と Site Definition(サイト定義)があります。 SharePoint Online(Office365) ですとWebTemplateしか使えません。 今回はWebTemplate(ウェブテンプレート)の作り方について解説します。   WebTempalte(とSite Definition)とは 以下のように[サイトの操作]-[新しいサイト]をクリックしたときにでてくるウェブテンプレートもしくはサイト定義のことです。 Visual Studioで作成する方法 必要なものをVisualStudioに配置します。(Visaul Studio2012の場合) モジュールにイメージを作成します。 Element.xml <?xml version=”1.0″ encoding=”utf-8″?> <Elements xmlns=”http://schemas.microsoft.com/sharepoint/”> <Module Name=”images”> <File Path=”images\EAPApplication.png” Url=”images/EAPApplication.png” IgnoreIfAlreadyExists=”TRUE”/> </Module> </Elements> モジュールにWebTemplateを作成します。 Element.xml <?xml version=”1.0″ encoding=”utf-8″?> <Elements xmlns=”http://schemas.microsoft.com/sharepoint/”> <WebTemplate Name=”EAPApplication” ImageUrl=”/images/EAPApplication.png” Title=”EAP_Office365 V1.0.0″ BaseTemplateID=”1″ BaseTemplateName=”STS” BaseConfigurationID=”0″ DisplayCategory=”EAP” /> </Elements> ONET.XML <?xml version=”1.0″ encoding=”utf-8″?> <Project Title=”EAP_Office365 V1.0.0″ Revision=”1″ ListDir=”” xmlns:ows=”Microsoft SharePoint” UIVersion=”4″> <NavBars></NavBars> <ListTemplates></ListTemplates> <Configurations> <Configuration ID=”0″ Name=”EAP_Office365 V1.0.0″> <Lists></Lists> <Modules> <Module Name=”DefaultBlank” /> </Modules> <SiteFeatures> <!– BasicWebParts Feature –> <!– <Feature ID=”00BFEA71-1C5E-4A24-B310-BA51C3EB7A57″ />–> <!– SharePoint Server Standard Site Collection Features –> <!– <Feature ID=”b21b090c-c796-4b0f-ac0f-7ef1659c20ae” />–> <!– SharePoint Server Enterprise Site Collection Features –> <!– <Feature ID=”8581a8a7-cf16-4770-ac54-260265ddb0b2″ />–> <!– […]

今から始めるSharePoint Online開発

私は、SharePoint開発が全バージョンを含めて初めてなので、初歩的な記事から書かせていただきます。 これからSharePoint Online開発を始めようとする方、興味のある方、参考にしていただければ幸いです。 間違った記事書いたらゴメンなさい。。。 まず、”SharePoint”ですが、端的に言えば「グループウェア」です。 ドキュメントの共有等ができます。 【SharePont Foundation】、【SharePont Server】、【SharePoint Online】の3つ種類があります。   【SharePoint Foundation】    Microsoftが無償提供しているサーバー製品です。    社内設置型で、自社サーバを用意して環境を構築する必要があります。    以前までは、「Windows SharePoint Services(WSS)」と呼ばれていました。    開発環境として利用することが可能。   【SharePoint Server】    Microsoftが提供しているサーバー製品です。    社内設置型で、自社サーバを用意して環境を構築する必要があります。   【SharePoint Online】    Microsoftによってホストされるクラウドサービス【Office365】を構成するサービスのひとつです。    クラウドサービスなので自社サーバ構築が不要。    ブラウザがあれば利用可能です。    詳しくは、Office365Roomにて紹介しています。    http://www.office365room.com/ 参考URL SharePointとは何か http://office.microsoft.com/ja-jp/sharepoint-foundation-help/HA010378184.aspx エディション別機能比較ガイド(SharePoint Foundation/SharePoint Server/SharePoint Online) http://www.microsoft.com/ja-jp/download/details.aspx?id=27145 SharePointも色々ありますねーと思いつつ、Office365のサービスでもあるSharePoint Onlineに向けた開発について勉強しながら書いていきましょう。

Silverlight Page, ChildWindowの画面をひらいたときにフォーカスを設定する方法(Silverlight, C#)

アプリケーションの画面をひらいたときにフォーカスを指定したい場合がありますが、その場合はSilverlightでは以下のようにします。 ナビゲーションページの場合 TestPage(ナビゲーションページ) using System; using System.Collections.Generic; using System.Linq; using System.Net; using System.Windows; using System.Windows.Controls; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Animation; using System.Windows.Shapes; using System.Windows.Navigation; namespace SilverlightProjectMain { public partial class TestPage : Page { public Testpage() { InitializeComponent(); } // ユーザーがこのページに移動したときに実行されます。 protected override void OnNavigatedTo(NavigationEventArgs e) { this.textboxCustomer.UpdateLayout(); this.textboxCustomer.Focus(); } } } チャイルドウインドウの場合 TestChildWindow(チャイルドウインドウ) using System; using System.Collections.Generic; using System.Linq; using System.Net; using System.Windows; using System.Windows.Controls; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Animation; using System.Windows.Shapes; namespace SilverlightProjectMain { public partial class TestChildWindow : ChildWindow { public TestChildWindow() { InitializeComponent(); this.GotFocus += this.Event_GotFocus; controlFirstFocus = textboxInvoiceID; } protected Control controlFirstFocus=null; private bool IsFirstCall = true; private void […]

SharePoint Dialogの使い方(Client Object Model, Sharepoint Online(Office365), JavaScript)

SharePointの標準のダイアログを表示する方法です。 以下のボタンをおしたときにSharePointの標準のダイアログを呼び出します。 独自のaspxがSharePointダイアログの中に表示されます。 [OK]ボタンをおします。 ボタンを押したときに引数を送れますのでその内容を表示します。 default.aspx <%@ Page language=”C#” MasterPageFile=”~masterurl/default.master” Inherits=”Microsoft.SharePoint.WebPartPages.WebPartPage,Microsoft.SharePoint,Version=14.0.0.0,Culture=neutral,PublicKeyToken=71e9bce111e9429c” %> <%@ Register Tagprefix=”SharePoint” Namespace=”Microsoft.SharePoint.WebControls” Assembly=”Microsoft.SharePoint, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c” %> <%@ Register Tagprefix=”Utilities” Namespace=”Microsoft.SharePoint.Utilities” Assembly=”Microsoft.SharePoint, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c” %> <%@ Register Tagprefix=”asp” Namespace=”System.Web.UI” Assembly=”System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35″ %> <%@ Register Tagprefix=”WebPartPages” Namespace=”Microsoft.SharePoint.WebPartPages” Assembly=”Microsoft.SharePoint, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c” %> <%@ Import Namespace=”Microsoft.SharePoint” %> <%@ Import Namespace=”Microsoft.SharePoint.ApplicationPages” %> <%@ Assembly Name=”Microsoft.Web.CommandUI, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c” %> <asp:Content ID=”phPageTitle” ContentPlaceHolderId=”PlaceHolderPageTitle” runat=”server”> <SharePoint:ProjectProperty ID=”ppTitle” Property=”Title” runat=”server”/> </asp:Content> <asp:Content ID=”phMain” ContentPlaceHolderId=”PlaceHolderMain” runat=”server”> <script type=”text/javascript”> function ShowDialog() { var options = SP.UI.$create_DialogOptions(); options.title = “Test Dialog” options.url = “EAP_Resources/Test/ShowDialog.aspx”; options.autoSize = true; options.width = 500; options.height = 300; options.dialogReturnValueCallback = Function.createDelegate(null, CloseCallback); SP.UI.ModalDialog.showModalDialog(options); } function CloseCallback(result, target) […]

2つ以上のList更新する方法(Client Object Model, Sharepoint Online(Office365), Silverlight, C#)

2つ以上のListの更新をする場合や削除してから追加する場合は少し複雑になりますのでサンプルを作ってみました。 以下の画面から検索ボタン(検索処理)を押したときの処理 以下の画面から保存ボタン(更新処理)、アイテム削除ボタン(削除処理) 削除処理、検索処理、更新処理のクラスです。 Adapter_CQuotation.cs using System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Net; using System.Windows; using System.Windows.Controls; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Animation; using System.Windows.Shapes; using SP = Microsoft.SharePoint.Client; using System.Collections.ObjectModel; using System.Xml.Serialization; using SilverlightProjectMain.Models.SharepointClient.Base; namespace SilverlightProjectMain.Models.SharepointClient { public class Adapter_CQuotation : Adapter_Base0100 { //////////////////////////////////////////////////////////////////////////// /// 削除処理 //////////////////////////////////////////////////////////////////////////// static public void AsyncDelete(Adapter_EventHandler adapter_EventHandler, int nID) { using (var clientContext = new SP.ClientContext(SP.ApplicationContext.Current.Url)) { var list = clientContext.Web.Lists.GetByTitle(“List_Quotation”); //clientContext.Load(list); //削除処理 SP.ListItem listItem = list.GetItemById(nID); listItem.DeleteObject(); SP.ListItemCollection listItemsDetail = null; //明細行取得 var listDetail = clientContext.Web.Lists.GetByTitle(“List_QuotationDetail001”); string strWhere = “<Where><Eq><FieldRef Name=’PersonID’ /><Value Type=’Integer’>” + nID.ToString() + “</Value></Eq></Where>”; listItemsDetail = GetItemsFromCAMLQuery(listDetail, strWhere); clientContext.Load(listItemsDetail); clientContext.ExecuteQueryAsync( new SP.ClientRequestSucceededEventHandler(delegate(object o, SP.ClientRequestSucceededEventArgs successargs) { […]

新規登録時にIDを取得する方法(Client Object Model, Sharepoint Online(Office365), Silverlight, C#)

新規登録時にIDを取得する方法 using System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Net; using System.Windows; using System.Windows.Controls; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Animation; using System.Windows.Shapes; using SP = Microsoft.SharePoint.Client; using SilverlightProjectMain.Models.SharepointClient.Base; namespace SilverlightProjectMain.Models.SharepointClient { public class Adapter_CQuotation : Adapter_Base0100 { //新規追加時にID取りたいのでこのスコープで宣言 static private SP.ListItem _listItem = null; static public void Test() { using (var clientContext = new SP.ClientContext(SP.ApplicationContext.Current.Url)) { var list = clientContext.Web.Lists.GetByTitle(“List_Quotation”); //clientContext.Load(list); _listItem = list.AddItem(new SP.ListItemCreationInformation()); _listItem[“InvoiceID”] = “AAAAAA”; _listItem[“CustomerName”] = “BBBBBB”; _listItem.Update(); //Load 不要 //clientContext.Load(list, olist => olist.Title); clientContext.ExecuteQueryAsync( new SP.ClientRequestSucceededEventHandler(delegate(object o, SP.ClientRequestSucceededEventArgs successargs) { int nID = _listItem.Id; }), new SP.ClientRequestFailedEventHandler(delegate(object o, SP.ClientRequestFailedEventArgs failedArgs) { }) ); } } } }