locked
Webパーツの接続について RRS feed

  • 質問

  • SharePointDesigner3.0標準のドキュメントライブラリとVS2010で作成したボタンwebパーツとの
    接続がうまくいかず困っています。

    実現したい内容としては
    ①ドキュメントライブラリでドキュメントを選択
    ②ボタンを押下して、選択行の情報を取得
    というものです。

    ドキュメントライブラリをprovider、ボタンをconsumerとして実装しています。
    ドキュメントライブラリは標準のものを使用しているため、特に手を入れていません。


    using System;
    using System.ComponentModel;
    using System.Data;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;

    namespace WebPartDeploy.DataCooperation
    {
        [ToolboxItemAttribute(false)]
        public class DataCooperation : WebPart
        {
            protected IWebPartRow _provider;
            private DataRowView _dtaRowView;
            protected Button btn;

            protected override void CreateChildControls()
            {
                btn = new Button();
                btn.Text = "ボタン";
                btn.Click += new EventHandler(btn_Click);
                this.Controls.Add(btn);
            }

            void btn_Click(object sender, EventArgs e)
            {
       //ボタン押下時の処理
            }

            [ConnectionConsumer("row")]
            public void WebPartRowConnectionPoint(IWebPartRow provider)
            {
                _provider = provider;
            }

            protected override void OnPreRender(EventArgs e)
            {
                if (_provider != null)
                {
                    _provider.GetRowData(new RowCallback(GetRowData));
                }
            }

            private void GetRowData(object rowData)
            {
                _dtaRowView = (DataRowView)rowData;
            }
        }
    }


    ボタン押下時に選択行情報を取得したいのですが、ボタンクリックイベント後に
    WebPartRowConnectionPointが呼び出されるため、送信データを取得することができません。
    対処方法がありましたらご教授ください。

    2012年5月2日 12:14

回答

  • >①ドキュメントライブラリでドキュメントを選択
    この時点で、providerからGetRowDataが呼び出されますので、
    選択されたrowDataの情報を別な所に退避しておきましょう。

    例えば、hidden項目にrowDataの情報を格納しておき、
    Btn_Clickメソッドでそこから退避していた情報を取得すれば
    目的が達せられると思います。

    • 回答の候補に設定 山本春海 2012年5月21日 4:32
    • 回答としてマーク 山本春海 2012年5月25日 5:13
    2012年5月11日 16:56