Grundsätzlich habe ich eine Dropdown-Liste und ein dynamisch hinzugefügtes Benutzersteuerelement. Das Benutzersteuerelement lädt eine Rasteransicht abhängig von der Auswahl, die in der Dropdown-Liste getroffen wurde. Die Dropdown-Liste ist nicht Teil des Benutzersteuerelements.ViewState, UserControl und IsPostback
Jetzt ist die Frage, wie simuliere ich (isControlPostback = false) jedes Mal, wenn der Benutzer die Auswahl in der Dropdown-Liste ändert? Anscheinend erinnert sich ViewState an das Steuerelement.
In meinem Benutzerkontrolle ich habe:
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
}
}
Wenn der Benutzer die Auswahl auf der Dropdown-Liste ändert sich, ich habe ein Javascript bestätigen Feld und die Seiten Beiträge zurück. So OnSelectedIndexChanged Ereignis für die Dropdown-Liste wird nicht ausgelöst. Ich möchte entfernen, um so etwas jedes Mal zu tun, wenn sich der ausgewählte Index ändert: ViewState.Remove ("IsUserControlPostBack");
Ich habe gerade herausgefunden, dass das OnLoad-Ereignis des Steuerelements direkt nach dem OnLoad-Ereignis der Seite ausgeführt wird, und VOR anderen Ereignissen in der Dropdown-Liste. Im Grunde lade ich das Benutzersteuerelement, bevor Page reagiert auf Änderungen, die von der Dropdown-Liste ausgelöst werden. Dieses Verhalten ist im Wesentlichen das Problem. – sarsnake