SharePoint MultipleLookupField コントロールの使い方:ステップバイステップガイド

SharePoint を使用していると、あるリストの複数のアイテムを別のリストのアイテムと関連付ける必要があるシナリオに直面することがあります。この目的を達成するために便利なコントロールが MultipleLookupField です。この記事では、MultipleLookupField コントロールの使用方法を段階的に説明し、Web パーツ内で複数の参照値を表示および管理する方法について理解を深められるようサポートします。

問題:二つのリストを接続する

主な課題は、SharePoint のコンテキストで実行される Web ページに MultipleLookupField コントロールを統合することです。タスクとドキュメントなど、二つの SharePoint フィールドコレクションをリンクしたい場合があります。これを行うには、基本的な設定を行うとともに、コントロールを効果的に操作する方法を理解する必要があります。

MultipleLookupField の開始

ステップ 1: SharePoint 環境を作成する

  1. チームサイトを設定する: SharePoint で新しいチームサイトを作成します。
  2. タスクを追加する: タスクリストに移動し、いくつかのタスクを作成します。
  3. ドキュメントを作成する: 共有ドキュメントライブラリにドキュメントをアップロードします。
  4. ルックアップ列を作成する:
    • 共有ドキュメントライブラリで「関連」という名前の新しい列を作成します。
    • この列をタスクリストの「タイトル」フィールドを参照するルックアップフィールドとして設定します。
    • この列に対して複数の値を許可することを確認します。

ステップ 2: Web パーツを作成する

MultipleLookupField を活用するには、Web パーツを作成する必要があります。ここではプロセスを通じてガイドする簡略化された例を示します。

Web パーツの基本構造

Label l;
MultipleLookupField mlf;

protected override void CreateChildControls()
{
    base.CreateChildControls();
    SPList list = SPContext.Current.Web.Lists["Shared Documents"];
    if (list != null && list.Items.Count > 0)
    {
        LiteralControl lit = new LiteralControl("タスクを " + list.Items[0].Name + " に関連付ける");
        this.Controls.Add(lit);

        mlf = new MultipleLookupField();
        mlf.ControlMode = SPControlMode.Edit;
        mlf.FieldName = "Related";
        mlf.ItemId = list.Items[0].ID;
        mlf.ListId = list.ID;
        mlf.ID = "Related";
        this.Controls.Add(mlf);

        Button b = new Button();
        b.Text = "変更";
        b.Click += new EventHandler(bClick);
        this.Controls.Add(b);

        l = new Label();
        this.Controls.Add(l);
    }
}

void bClick(object sender, EventArgs e)
{
    l.Text = "";
    foreach (SPFieldLookupValue val in (SPFieldLookupValueCollection)mlf.Value)
    {
        l.Text += val.LookupValue.ToString() + " ";
    }

    SPListItem listitem = mlf.List.Items[0];
    listitem["Related"] = mlf.Value;
    listitem.Update();
    mlf.Value = listitem["Related"];
}

protected override void OnInit(EventArgs e)
{
    base.OnInit(e);
    EnsureChildControls();
}

ステップ 3: Web パーツを展開する

  1. ビルドして展開する: コードをコンパイルし、SharePoint 環境に Web パーツを展開します。
  2. サイトに Web パーツを追加する: チームサイトのホームページに移動し、新しい Web パーツのインスタンスを追加します。

クリックハンドラを理解する

クリックイベントハンドラ bClick は、UI を更新するために重要です。

  • 値を取得する: MultipleLookupField から選択されたすべての値を取得し、それらを表示することで始まります。
  • リストアイテムを更新する: 選択されたタスクでドキュメントリストの「関連」フィールドを更新し、UI とリストアイテムの同期を確保します。

追加のメモ

  • 提供された例はかなり基本的なものです。包括的なエラーハンドリングが欠けており、製品利用には適していない点に注意してください。使いやすさ向上のために拡張することを検討してください。
  • mlf.Value = listitem["Related"]; の行をコメントアウトすると、UI が基になるデータと正しく同期しない可能性があるため、この行は適切な機能のために必要です。

結論

上記の手順に従うことで、MultipleLookupField コントロールを SharePoint サイトに統合することができます。これにより、異なるリストからの関連アイテムを効率的に管理でき、全体的な SharePoint 経験を向上させることができます。少しの練習と洗練を施すことで、これらの基本原則をあなたの特定のニーズに合った強力なソリューションへと変えることができるでしょう。

質問がある場合や、SharePoint における MultipleLookupField コントロールの使用経験を共有したい場合は、お気軽にお問い合わせください!