I controlli di estensione non possono essere registrati dopo il prereder. Si verifica su GridView DataBind ()

StackOverflow https://stackoverflow.com/questions/5397165

Domanda

Sulla nostra app Web ASP.NET 4.0 C# ottengo l'errore sopra nella riga dell'oggetto durante il debug.

Non sto davvero facendo nulla di funky con controlli dinamici sulla pagina, poiché alcuni risultati di ricerca indicati avrebbero potuto essere la fonte del problema.

La pagina ha 2 ajax:CalendarExtenders e funziona bene per un po '.

Sebbene sia probabilmente correlato, posso vedere quanto veramente, ma questo è ciò su cui stavo attualmente lavorando quando è emerso l'errore.

Abbiamo un controllo sulla pagina che solleva un evento su una funzione AutoRefresh. [È un controllo della mappa].

La mia pagina si abbona a quell'evento e dopo averlo fatto da databind asp:GridView. Dobbiamo vincolare i dati nella griglia ogni volta per garantire che la griglia e il controllo della mappa siano sincronizzati. [È una pagina di tracciamento del veicolo

L'errore si verifica sul comando Databind.

Ho rimosso gli estensori solo per elaborare lo stesso errore.

Databind è semplice ma sono sicuro che l'errore risiede altrove. Lo includerò comunque.

this.SearchGrid.DataSource = resultsWithMetrics;

        this.SearchGrid.AllowPaging = true;
        this.SearchGrid.PageIndex = this.SearchGridPager.CurrentPage;
        this.SearchGrid.AllowPaging = this.SearchGridPager.PageSize > 0;
        this.SearchGrid.PageSize = this.SearchGridPager.PageSize > 0 ? this.SearchGridPager.PageSize : this.SearchGrid.PageSize;

        this.SearchGrid.DataBind();

Forse semplicemente non capisce il ciclo di vita della pagina che mi ha inciampato, comunque sarebbe felice di un aiuto.

È stato utile?

Soluzione

Usa il seguente codice nel controllo UserControl o Page. Funzionerà se si utilizza un controllo AJAX.

protected override void OnInit(EventArgs e)
    {
        base.OnInit(e);
        if (this.DesignMode == true)
        {
            this.EnsureChildControls();
        }
        this.Page.RegisterRequiresControlState(this);
    } 

Altri suggerimenti

Il problema era che su riga databind i controlli di estensione sono stati aggiunti a ciascuna riga ed sono stati questi estensori a causare il problema.

L'evento che ha attivato il rimpasto proveniva da un controllo utente che utilizzava callback per comunicare al server e successivamente sollevare l'evento che probabilmente è arrivato troppo tardi comunque nel ciclo di vita della pagina.

Senza capire appieno cosa stesse succedendo tutto odorato un po 'e ho cambiato un po' la struttura dell'app.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top