Fondamentalement, j'ai une liste déroulante et un contrôle utilisateur ajouté dynamiquement. Le contrôle utilisateur charge une vue de grille en fonction du choix effectué dans la liste déroulante. La liste déroulante ne fait pas partie du contrôle utilisateur.ViewState, UserControl et IsPostback
Maintenant, la question est, comment puis-je simuler (isControlPostback = false) chaque fois que l'utilisateur change la sélection dans la liste déroulante? On dirait que ViewState se souvient du contrôle.
intérieur de mon contrôle utilisateur je:
protected bool IsUserControlPostBack
{
get
{
return this.ViewState["IsUserControlPostBack"] != null;
}
}
protected void Page_Load(object sender, EventArgs e)
{
if (!IsUserControlPostBack)
{
ViewState.Add("IsUserControlPostBack", true);
//load stuff in the grid view and bind it
}
}
Lorsque l'utilisateur modifie la sélection sur la liste déroulante, j'ai une boîte de confirmation javascript, et les messages de page en arrière. L'événement OnSelectedIndexChanged pour la liste déroulante n'est donc pas déclenché. Je voudrais supprimer pour faire quelque chose comme ça chaque fois que l'index sélectionné change: ViewState.Remove ("IsUserControlPostBack");
Je viens de découvrir que l'événement OnLoad du contrôle est exécuté juste après l'événement OnLoad de la page, et AVANT tout autre événement de la liste déroulante Page. Donc, fondamentalement, je charge le contrôle de l'utilisateur avant que Page ne réagisse aux changements déclenchés par la liste déroulante. Ce comportement est essentiellement le problème. – sarsnake