SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Visual Studio 2010によるSharePoint 2010開発の基本

サンドボックスソリューション開発とSharePoint Onlineへの展開

Visual Studio 2010によるSharePoint 2010開発の基本(7)

サンプル:Webパーツを作成してSharePont Onlineで展開する

 それでは、Visual Studio 2010を使用してサンドボックスソリューションを作成してみましょう。そして、作成したソリューションパッケージをSharePoint Onlineに展開し、動作を確認してみましょう。

サンプル内容

 SharePoint Onlineのチームサイトに既定で用意されている「投稿」リストから全アイテムを取得して表示し、アイテムの新規作成も行うことのできるWebパーツを作成してみます(図2)。

図2 サンプルの実行例
図2 サンプルの実行例

サンプルの作成

 以下の手順で、サンプルを作成します。

[1]空のSharePointプロジェクトを作成する

 管理者権限でVisual Studio 2010を起動します。[新しいプロジェクト]ダイアログボックスで[インストールされたテンプレート]から[Visual C#]-[SharePoint]-[2010]を選択し、プロジェクトテンプレートの一覧から[空のSharePointプロジェクト]を選択します。任意のプロジェクト名を入力し[OK]ボタンをクリックします(図3)。

図3 [新しいプロジェクト]ダイアログボックス
図3 [新しいプロジェクト]ダイアログボックス

 [SharePointカスタマイズウィザード]が起動し、[デバッグのサイトとセキュリティレベルの指定]ダイアログボックスが表示されます。[デバッグに使用するローカルサイト]には、開発時に使用するSharePointサイトのURLを入力します。信頼レベルとして[サンドボックスソリューションとして配置する]を選択し、[完了]ボタンをクリックします(図4)。

図4 [デバッグのサイトとセキュリティレベルの指定]ダイアログボックス
図4 [デバッグのサイトとセキュリティレベルの指定]ダイアログボックス

[2]Webパーツをプロジェクトに追加する

 ソリューションエクスプローラーで、一番上に表示されているプロジェクトを右クリックし、[追加]の[新しい項目]をクリックします。

 表示された[新しい項目の追加]ダイアログボックスで、[Webパーツ]を選択します。[視覚的Webパーツ]ではないことに注意してください。そして、任意の名前を入力し(ここでは「WebPart1」のまま)、[追加]ボタンをクリックします(図5)。

図5 [新しい項目の追加]ダイアログボックス
図5 [新しい項目の追加]ダイアログボックス

[3]Webパーツを実装する

 WebPart1.csを開き、まず次のリスト1のように修正します。

リスト1 usingディレクティブの追加(WebPart1.cs)
// (1)追加したusingディレクティブ
using System.Collections.Generic;

 Listジェネリッククラスを使用しますので、System.Collections.Generic名前空間を追加します。次にリスト2のように、表示用コントロールへのアクセスのための2つの静的変数を追加し、自動生成されたCreateChildControlsメソッド内にコードを追加します。

リスト2 CreateChildControlsメソッドの修正(WebPart1.cs)
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のように実装します。

リスト3 Refreshメソッドの実装(WebPart1.cs)
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コントロールのクリック時のイベントハンドラーを実装します。

リスト4 ボタンのクリック時のイベントハンドラーの実装(WebPart1.cs)
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)では、新規の「投稿」リストアイテムを作成し、「投稿」リストに追加しています。

 以上で、サンプルは完成です。

次のページ
まとめ

この記事は参考になりましたか?

Visual Studio 2010によるSharePoint 2010開発の基本連載記事一覧

もっと読む

この記事の著者

山田 祥寛(ヤマダ ヨシヒロ)

静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるLaravel実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

WINGSプロジェクト 広瀬 嘉久(株式会社ジェイテックジャパン)(ヒロセ ヨシヒサ)

WINGSプロジェクトについて>有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。 2026年時点での登録メンバは約50名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい。著書記事多数。 RSS X: @WingsPro_info(公式)、@WingsPro_info/wings(メンバーリスト) Facebook

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/6189 2011/10/14 14:00

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー