6

onet.xml で Web パーツ接続を指定する必要があります。したがって、このサイト定義を使用してサイトが作成されると、前述の Web パーツは既に接続されており、使用する準備ができています。その特定の Web パーツに対して、onet.xml でどのプロパティを指定する必要があるか。

4

3 に答える 3

3

私も昨年、これで壁にぶち当たりました!古い .dwp 形式の場合とは異なり、新しい .webpart 形式の Web パーツでは接続を指定できなくなったようです。kpinhack も示唆するように、サイト定義にカスタム機能を含めることになりました。Web パーツを接続するためのコードを以下に示します。このメソッドは、異なる種類の 2 つの Web パーツを接続するように設計されています。同じページで同じ種類の複数の Web パーツをサポートしていません。しかし、私はあなたが一般的な考えをつかむと確信しています.

private void ConnectWebParts(SPWeb web, string pageName, Type providerType, Type consumerType)
{
  SPFile file = web.GetFile(pageName);
  SPList list = null;
  if (file.InDocumentLibrary)
  {
    list = file.Item.ParentList;
    if (list.ForceCheckout) file.CheckOut();
  }

  SPLimitedWebPartManager webPartManager = 
    web.GetLimitedWebPartManager(
      pageName,
      System.Web.UI.WebControls.WebParts.PersonalizationScope.Shared);

  WebPart provider = null;
  foreach (WebPart wp in webPartManager.WebParts)
  {
    if (wp.GetType() == providerType)
    {
      provider = wp;
      break;
    }
  }

  foreach (WebPart consumer in webPartManager.WebParts)
  {
    if (consumer.GetType() != consumerType) continue;

    ProviderConnectionPointCollection providerConnections = webPartManager.GetProviderConnectionPoints(provider);
    ProviderConnectionPoint providerConnection = providerConnections[0];

    ConsumerConnectionPointCollection consumerConnections = webPartManager.GetConsumerConnectionPoints(consumer);
    ConsumerConnectionPoint consumerConnection = consumerConnections[0];

    SPWebPartConnection con = webPartManager.SPConnectWebParts(provider, providerConnection, consumer, consumerConnection);
    webPartManager.SPWebPartConnections.Add(con);
  }

  if (list != null)
  {
    if (list.ForceCheckout)
    {
      file.CheckIn("Added Web Part Connections");
    }

    if (list.EnableVersioning && list.EnableMinorVersions)
    {
      file.Publish("Added Web Part Connections");
    }
  }
}
于 2009-06-26T20:46:58.297 に答える
0

<AllUsersWebPart>タグを使用してWebパーツを宣言してから、囲まれた<WebPart>要素内で接続を宣言する必要があります。

于 2009-06-26T21:08:44.790 に答える
0

'OnActivated'-Eventhandlerを実装することにより、SiteProvisioning-FeatureでWebパーツを構成します。そうすれば、Webサイトの作成時にコードが実行され、エラーを好きなように処理できます(つまり、Webサイトの作成時にWebパーツが利用できない場合-何らかの理由で)

これがお役に立てば幸いです。

于 2009-06-26T12:33:43.480 に答える