Domanda

Ho un UserControl che funge da contenitore per tenere più usercontrols all'interno di esso.

Ho bisogno di eseguire alcuni controlli di accesso una volta che tutti i controlli figlio hanno databound.

Speravo che potrei associare ad un evento usercontrol.databound ma non sembra essere uno.

Quali altre opzioni devo fare qualcosa sul UserControl genitore una volta che gli altri hanno usercontrols databound. Presumo che ho per ottenere i controlli figlio di notificare il genitore hanno databound e il genitore avrà bisogno di tenere traccia che hanno databound, e che non hanno e quando tutti hanno databound può peform la sua azione.

È stato utile?

Soluzione

Non è necessario per ottenere i controlli figlio di notificare il genitore. Guardate il ASP.Net Pagina: Life Cycle . Hai bisogno di mettere il codice nel controllo utente container in caso PreRender. Esegue dopo gli eventi di postback.

Altri suggerimenti

In base a pagina ASP.NET Life Cycle Eventi articolo ho usato questo:

protected void Page_PreRenderComplete(object sender, EventArgs e)
{
  if (!IsPostBack) //only at 1st load
    UpdateSelection();
}

protected void UpdateSelection()
{
  UpdateSelection(listItems.SelectedValue);
}

protected void listItems_SelectedIndexChanged(object sender, EventArgs e)
{
  UpdateSelection();
}

Nel mio caso, UpdateSelection stava caricando i dati XML da un file selezionato in un elenco a discesa (che a inizio sta puntando l'indice 0) e aveva bisogno di alcuni CheckBoxLists sulla pagina aver prima ottenuto i loro oggetti da altri file XML in modo che permetterebbe il codice per verificare gli elementi su di loro in base ai dati XML

Da allora in poi UpdateSelection è appena chiamato alla DropDownList SelectedIndexChanged evento (quelli fanno postback fa a PreRenderComplete ignoro loro di evitare di fare UpdateSelection due volte)

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