none
Malfunzionamento Web Part connesse RRS feed

  • Domanda

  • Buongiorno,

    lo scenario è il seguente, ho una web part provider generica che passa un parametro ad una web part consumer per gestire una funzionalità di ricerca. Si presenta un'anomalia in quanto quando inserisco una stringa da ricercare e faccio eseguire la ricerca la prima volta viene passato null alla webpart consumer, mentre effettuando nuovamente la ricerca viene passato il valore corretto.

    C'è da dire che la web part provider viene utilizzata per fornire il parametro filtro su più web part consumer ma solo con una si verifica quest'anomalia. La web part consumer in questione è una web part contenente una serie di Media Web Part.

    Vi ringrazio anticipatamente per la disponibilità.

     

    martedì 23 ottobre 2012 07:52

Risposte

Tutte le risposte

  • Ciao Antonio!
    Ci posti un pò di codice? Così riusciamo ad aiutarti meglio.

    Grazie
    Peppe


    Giuseppe Marchi - SharePoint MVP
    www.peppedotnet.it
    www.dev4side.com
    www.sharepointcommunity.it
    Twitter: @PeppeDotNet

    martedì 23 ottobre 2012 10:42
    Moderatore
  • Web Part Provider

    public class MediaProviderWP : WebPart,IMediaConnector 
    {

     private string _searchValue;

    private Panel _pnlSearch;
            private Label _lblTitleSearch;
            private TextBox _txtTitleSearch;
            private ImageButton _btnSearch;
            private Label _lblError;

     protected override void CreateChildControls()
            {
                try
                {
                    base.CreateChildControls();
                    ChromeType = PartChromeType.None;

                    _pnlSearch = new Panel { ID = "pnlSearch", CssClass = "pnlSearch" };
                    _lblTitleSearch = new Label { ID = "lblSearch", Text = "Search", CssClass = "lblSearch" };
                    _txtTitleSearch = new TextBox { ID = "txtSearch", CssClass = "txtSearch" };
                    _btnSearch = new ImageButton { ID = "btnSearch", CssClass = "btnSearch" };               

                    _btnSearch.Click += new ImageClickEventHandler(btnSearch_Click);
                    _pnlSearch.Controls.Add(_lblTitleSearch);
                    _pnlSearch.Controls.Add(_txtTitleSearch);
                    _pnlSearch.Controls.Add(_btnSearch);
                    Controls.Add(_pnlSearch); 
                }
                catch (Exception ex)
                {
                    _lblError = new Label { ID = "lblError", Text = ex.Message };
                    Controls.Add(_lblError);
                }
            }

            public void btnSearch_Click(object sender, EventArgs e)
            {
                _searchValue = _txtTitleSearch.Text;
            }

            [ConnectionProvider("Search Value")]
            public IMediaConnector ConnectionInterface()
            {
                return this;
            }
            public string SearchValue
            {
                get { return _searchValue; }
            }
        }

    Web Part Consumer

       public class SummaryPagedVideoGalleryWP : WebPart
        {
            [WebBrowsable(true),
            Category("Configuration"),
            Personalizable(PersonalizationScope.Shared),
            WebDisplayName("Page size"),
            WebDescription("Number of records to show in page. If empty the default value is '12'")]
            public string PageSize { get; set; }

            private Label _lblError;
            private Panel _panelVideoContainer;
            private Panel _panelSingleVideo;
            private MediaWebPart _video;
            private Label _titleVideo;
            private string _prevPageUrl;
            private string _nextPageUrl;
            private Label _lblcurrPageItems;

            private IMediaConnector _provider;

            [ConnectionConsumer("Search Value")]
            public void GetConnectionInterfate(IMediaConnector provider)
            {
                _provider = provider;
            }

    il metodo CreateChildControls chiama il metodo dov'è presente questa istruzione

    _provider.SearchValue


    Il problema è che 1 volta su 2 l'oggetto _provider è nullo, basta cliccare nuovamente sul tasto di ricerca e tutto funziona.

    Grazie per l'aiuto

    martedì 23 ottobre 2012 13:14
  • Perchè il metodo _provider.SearchValue lo chiami dalla CreateChildControls?
    Non puoi spostarlo nel load?

    A presto
    Peppe


    Giuseppe Marchi - SharePoint MVP
    www.peppedotnet.it
    www.dev4side.com
    www.sharepointcommunity.it
    Twitter: @PeppeDotNet

    mercoledì 24 ottobre 2012 18:44
    Moderatore
  • L'evento onLoad in caso di Postback viene eseguito dopo l'evento CreateChildControls quindi è inutile poiche non verrebbe mai applicato il filtro.

    Grazie ancora per la disponibilità

    Antonio Principe

    venerdì 26 ottobre 2012 09:03
  • Ciao Antonio

    Mi faresti vedere la query che fai nella web part consumer? Io non credo sia un problema della provider... replicato il tuo codice in un ambiente di test e a me funziona.

    mercoledì 31 ottobre 2012 11:26
  • Ciao Antonio,

    vedo che il tuo thread è ancora aperto... ho fatto un pò di ricerche e prove e credo di aver trovato la soluzione al tuo problema con questo post: http://www.dotnetcurry.com/ShowArticle.aspx?ID=678

    Prova un pò a vedere se ho ragione...

    Saluti

    Mario Saccoia

    lunedì 26 novembre 2012 10:11