Question

J'écris une partie web qui a besoin d'utiliser des connexions pour les valeurs de traitement relatives à un objet métier appelé « Entité de programme ». Il est censé prendre une carte d'identité fournie par une partie Web connecté, effectuer un certain traitement, puis cracher un « jeton » pour la consommation par une partie Web connecté différent. Le jeton est juste l'ID dans un autre format.

Je le menu déroulant affichant correctement comme suit:

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

Lorsque je sélectionne une partie Web dans « Get programme ID Entité de », une boîte de dialogue apparaît pour moi de choisir un paramètre Filtré. Cependant le menu déroulant des paramètres est grisé et dit simplement « Non Paramètres ». Note:. La partie web, je suis en train de vous connecter est aussi la coutume et peut ne pas avoir été dûment rempli et testé pour fournir une valeur via une connexion

Y at-il quelque chose qui explique pourquoi je suis incapable de mettre en place une connexion? Voici le code pour ma part 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));
    	}
    }
}
Était-ce utile?

La solution

fixe en changeant cette ligne:

parameters.Add(new ConsumerParameter("ProgramEntityID", 
    ConsumerParameterCapabilities.SupportsSingleValue));

à cette ligne:

parameters.Add(new ConsumerParameter("ProgramEntityID", 
    ConsumerParameterCapabilities.SupportsSingleValue | 
    ConsumerParameterCapabilities.SupportsAllValue));

La partie web que je tente de se connecter a l'ensemble de la propriété AllowAllValue true qui a été clairement exclue par ConsumerParameterCapabilities.


En aparté, j'ai essayé aussi:

parameters.Add(new ConsumerParameter("ProgramEntityID", 
    ConsumerParameterCapabilities.SupportsMultipleValues | 
    ConsumerParameterCapabilities.SupportsAllValue));

... mais la partie web, je me connecte à AllowMultipleValues a la valeur false! Il semble étrange que ConsumerParameterCapabilities applique les connexions possibles selon AllowAllValue mais AllowMultipleValues ne fonctionne pas.

Licencié sous: CC-BY-SA avec attribution
Non affilié à sharepoint.stackexchange
scroll top