Domanda

Sto scrivendo una parte web che ha bisogno di usare i collegamenti per i valori di lavorazione relative a un oggetto di business chiamato "Programma Entità". Si suppone di prendere in un identificativo fornito da una parte web collegato, effettuare alcuna elaborazione, quindi sputare un 'gettone' per il consumo da una diversa parte web collegato. Il token è solo l'ID in un altro formato.

Ho il menu a discesa correttamente la visualizzazione nel seguente modo:

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

Quando seleziono una web part in "Get Programma ID entità Da", una finestra di dialogo appare per me scegliere un parametro filtrato. Tuttavia la discesa dei parametri è grigio e dice solo: "No Parametri". Nota:. La parte web che sto cercando di connettersi a è anche costume e potrebbe non essere stato completato e testato per fornire un valore tramite una connessione

C'è qualcosa che spiega il motivo per cui io sono in grado di impostare una connessione? Ecco il codice per la mia parte 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));
    	}
    }
}
È stato utile?

Soluzione

Ora risolto modificando questa riga:

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

a questa linea:

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

La parte web che stavo cercando di connettersi al avuto l'insieme di proprietà AllowAllValue true che è stata chiaramente esclusa da ConsumerParameterCapabilities.


Per inciso, ho anche provato:

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

... tuttavia la parte web che sto connessione a ha impostato AllowMultipleValues false! Sembra strano che ConsumerParameterCapabilities impone possibili collegamenti secondo AllowAllValue ma AllowMultipleValues non lo fa.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a sharepoint.stackexchange
scroll top