接続付きのカスタムWebパーツのドロップダウンを無効にした「フィルター付きパラメーター」
-
16-10-2019 - |
質問
「プログラムエンティティ」と呼ばれるビジネスオブジェクトに関連する値を処理するために接続を使用する必要があるWebパーツを書いています。接続されたWebパーツが提供するIDを取り入れ、いくらかの処理を実行し、別の接続されたWebパーツによって消費するために「トークン」を吐き出します。トークンは、別の形式のIDです。
ドロップダウンメニューが次のように正しく表示されています。
Connections -> Send Program Entity Token To -> ... -> Get Program Entity ID From -> ...
「Get Program Entity ID From」でWebパーツを選択すると、フィルタリングされたパラメーターを選択するダイアログが表示されます。ただし、パラメーターのドロップダウンは灰色になり、「パラメーターなし」と書かれています。注:私が接続しようとしているWebパーツもカスタムであり、接続を介して値を提供するために完全に完了してテストされていない可能性があります。
接続を設定できない理由を説明するものはありますか?これが私のWebパーツのコードです:
public class ProgramEntityTokenConverter : WebPart, ITransformableFilterValues
{
public bool AllowAllValue
{
get { return true; }
}
public bool AllowEmptyValue
{
get { return false; }
}
public bool AllowMultipleValues
{
get { return false; }
}
public string ParameterName
{
get { return "ProgramEntityToken"; }
}
public ReadOnlyCollection<string> ParameterValues
{
get { return new ReadOnlyCollection<string>(ConvertProgramEntityIDs()); }
}
[ConnectionProvider("Program Entity Token", "ProgramEntityToken", AllowsMultipleConnections = false)]
public ITransformableFilterValues SetConnectionInterface()
{
return this;
}
private IList<string> ConvertProgramEntityIDs()
{
return null; // TODO
}
[ConnectionConsumer("Program Entity ID", "ProgramEntityID", AllowsMultipleConnections = false)]
public void SetFilter(IFilterValues filterValues)
{
if (filterValues != null)
{
EnsureChildControls();
List<ConsumerParameter> parameters = new List<ConsumerParameter>();
parameters.Add(new ConsumerParameter("ProgramEntityID", ConsumerParameterCapabilities.SupportsSingleValue));
filterValues.SetConsumerParameters(new ReadOnlyCollection<ConsumerParameter>(parameters));
}
}
}
解決
この行を変更することで修正されました:
parameters.Add(new ConsumerParameter("ProgramEntityID",
ConsumerParameterCapabilities.SupportsSingleValue));
この行へ:
parameters.Add(new ConsumerParameter("ProgramEntityID",
ConsumerParameterCapabilities.SupportsSingleValue |
ConsumerParameterCapabilities.SupportsAllValue));
私が接続しようとしていたウェブパートは AllowAllValue
明らかに除外されたTrueに設定されたプロパティ ConsumerParameterCapabilities
.
余談ですが、私も試みました:
parameters.Add(new ConsumerParameter("ProgramEntityID",
ConsumerParameterCapabilities.SupportsMultipleValues |
ConsumerParameterCapabilities.SupportsAllValue));
...しかし、私が接続しているWebパーツは持っています AllowMultipleValues
偽に設定!奇妙に思えます ConsumerParameterCapabilities
に従って可能な接続を強制します AllowAllValue
しかし AllowMultipleValues
ではない。
所属していません sharepoint.stackexchange