Désactivé déroulante « Paramètre Filtré » en partie Web personnalisée avec des connexions
-
16-10-2019 - |
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));
}
}
}
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.