サンプル:Webパーツを作成してSharePont Onlineで展開する
それでは、Visual Studio 2010を使用してサンドボックスソリューションを作成してみましょう。そして、作成したソリューションパッケージをSharePoint Onlineに展開し、動作を確認してみましょう。
サンプル内容
SharePoint Onlineのチームサイトに既定で用意されている「投稿」リストから全アイテムを取得して表示し、アイテムの新規作成も行うことのできるWebパーツを作成してみます(図2)。
サンプルの作成
以下の手順で、サンプルを作成します。
[1]空のSharePointプロジェクトを作成する
管理者権限でVisual Studio 2010を起動します。[新しいプロジェクト]ダイアログボックスで[インストールされたテンプレート]から[Visual C#]-[SharePoint]-[2010]を選択し、プロジェクトテンプレートの一覧から[空のSharePointプロジェクト]を選択します。任意のプロジェクト名を入力し[OK]ボタンをクリックします(図3)。
[SharePointカスタマイズウィザード]が起動し、[デバッグのサイトとセキュリティレベルの指定]ダイアログボックスが表示されます。[デバッグに使用するローカルサイト]には、開発時に使用するSharePointサイトのURLを入力します。信頼レベルとして[サンドボックスソリューションとして配置する]を選択し、[完了]ボタンをクリックします(図4)。
[2]Webパーツをプロジェクトに追加する
ソリューションエクスプローラーで、一番上に表示されているプロジェクトを右クリックし、[追加]の[新しい項目]をクリックします。
表示された[新しい項目の追加]ダイアログボックスで、[Webパーツ]を選択します。[視覚的Webパーツ]ではないことに注意してください。そして、任意の名前を入力し(ここでは「WebPart1」のまま)、[追加]ボタンをクリックします(図5)。
[3]Webパーツを実装する
WebPart1.csを開き、まず次のリスト1のように修正します。
// (1)追加したusingディレクティブ using System.Collections.Generic;
Listジェネリッククラスを使用しますので、System.Collections.Generic名前空間を追加します。次にリスト2のように、表示用コントロールへのアクセスのための2つの静的変数を追加し、自動生成されたCreateChildControlsメソッド内にコードを追加します。
private GridView GridView1;
private TextBox TextBox1;
protected override void CreateChildControls()
{
// (2)表示用コントロールの作成
GridView1 = new GridView();
Controls.Add(GridView1);
TextBox1 = new TextBox();
Controls.Add(TextBox1);
Button Button1 = new Button();
Button1.Text = "追加";
Button1.Click += new EventHandler(Button1_Click);
Controls.Add(Button1);
Refresh();
}
(2)では、表示用のコントロールとして、GridViewコントロール、TextBoxコントロール、Buttonコントロールを生成し追加しています。Buttonコントロールには、クリック時のイベントハンドラーを設定しています。最後に呼んでいるRefreshメソッドはコントロールの描画のためのもので、次のリスト3のように実装します。
private void Refresh()
{
// (3)「投稿」リストの取得
SPWeb web = SPContext.Current.Web;
SPList list = web.Lists["投稿"];
// (4)「投稿」リストアイテムの取得
List<string> titles = new List<string>();
foreach (SPListItem item in list.Items)
{
titles.Add(item.Title);
}
// (5)GridViewコントロールにバインド
GridView1.DataSource = titles;
GridView1.DataBind();
TextBox1.Text = "";
}
(3)では、SharePointライブラリのSPWebクラスやSPListクラスを使用して、「投稿」リストオブジェクトを取得しています。
(4)では、「投稿」リスト内の全リストアイテムを列挙し、タイトルのみのリストを作成しています。
(5)では、作成したタイトルリストをGridViewコントロールにバインドします。
最後に、次のリスト4のように、Buttonコントロールのクリック時のイベントハンドラーを実装します。
protected void Button1_Click(object sender, EventArgs e)
{
SPWeb web = SPContext.Current.Web;
SPList list = web.Lists["投稿"];
// (6)リストアイテムの追加
SPListItem item = list.AddItem();
item["Title"] = TextBox1.Text;
item["Body"] = TextBox1.Text;
item.Update();
Refresh();
}
(6)では、新規の「投稿」リストアイテムを作成し、「投稿」リストに追加しています。
以上で、サンプルは完成です。


![図3 [新しいプロジェクト]ダイアログボックス](http://cz-cdn.shoeisha.jp/static/images/article/6189/6189_03_s.gif)
![図4 [デバッグのサイトとセキュリティレベルの指定]ダイアログボックス](http://cz-cdn.shoeisha.jp/static/images/article/6189/6189_04_s.gif)
![図5 [新しい項目の追加]ダイアログボックス](http://cz-cdn.shoeisha.jp/static/images/article/6189/6189_05_s.gif)