禁用的“过滤参数”在自定义Web部件中与连接的下拉零件下拉零件
-
16-10-2019 - |
题
我正在编写一个需要使用连接的网络部分来处理与称为“程序实体”的业务对象有关的值。它应该采用由连接的Web部件提供的ID,执行一些处理,然后吐出“令牌”,以供其他连接的Web部件消费。令牌只是另一种格式的ID。
我的下拉菜单正确显示如下:
Connections -> Send Program Entity Token To -> ... -> Get Program Entity ID From -> ...
当我在“从中获取程序实体ID”中选择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));
...但是我要连接的网络部分 AllowMultipleValues
设置为false!似乎很奇怪 ConsumerParameterCapabilities
根据 AllowAllValue
但 AllowMultipleValues
才不是。