我正在编写一个需要使用连接的网络部分来处理与称为“程序实体”的业务对象有关的值。它应该采用由连接的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 根据 AllowAllValueAllowMultipleValues 才不是。

许可以下: CC-BY-SA归因
scroll top