Отключен раскрывающийся список “Отфильтрованный параметр” в пользовательской веб-части с подключениями

sharepoint.stackexchange https://sharepoint.stackexchange.com/questions/901

Вопрос

Я пишу веб-часть, которая должна использовать соединения для обработки значений, относящихся к бизнес-объекту, называемому "Программный объект".Предполагается, что он принимает идентификатор, предоставленный подключенной веб-частью, выполняет некоторую обработку, затем выдает "токен" для использования другой подключенной веб-частью.Токен - это просто идентификатор в другом формате.

У меня выпадающее меню корректно отображается следующим образом:

Connections -> Send Program Entity Token To -> ...
            -> Get Program Entity ID From -> ...

Когда я выбираю веб-часть в разделе "Получить идентификатор объекта программы из", появляется диалоговое окно для выбора отфильтрованного параметра.Однако выпадающий список параметров выделен серым цветом и просто говорит "Нет параметров".Примечание:веб-часть, к которой я пытаюсь подключиться, также является пользовательской и, возможно, не была полностью завершена и протестирована на предмет предоставления значения через соединение.

Есть ли что-нибудь, что объясняет, почему я не могу установить соединение?Вот код для моей веб-части:

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 не делает этого.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с sharepoint.stackexchange
scroll top