Events von Webcontrols funktionieren erst nach dem ersten Postback richtig



  • Hallo Forum

    ich habe eine ASP.Net page mit verschiedenen Webcontrols. Diese widerum haben Events (z.B. SelectedIndexChanged). Nun habe ich das Phänomen beobachtet, dass beim ersten mal Seite laden und dann auslösen eines der Events dazu führt, dass alle Events dieser Seite ausgeführt werden. Nachdem dies dann geschehen ist kann ich alle weiteren Webcontrols bedienen und es wird dann auch nur noch dieses eine Event ausgelöst. Woran liegt das denn? Werden beim ersten PostBack, der durch das WebControl ausgelöst wird, die Events erst initialisiert oder woran liegt das? Und wie kann ich verhindern dass die Events beim ersten PostBack einfach generell alle ausgeführt werden?

    Danke für eure Hilfe!



  • Das muss bei dir ein anderes Problem sein. Diese vorgehendweise hat ASPNET nicht.



  • Hmm, ich wüsste nicht woher das kommt. Das Problem tritt nur bei meinen ListBoxen auf. Wenn beim ersten Mal ein Event ausgelöst wird (egal von welchem WebControl) werden die Events der ListBoxen ausgeführt, die ich im PageLoad mit Daten fülle. Allerdings nur die, die ich "von Hand" fülle. Denen, denen ich Daten aus der Datenbank anhänge werden da nicht ausgeführt. Wenn ich allerdings nach dem ersten Laden der Seite eine der ListBoxen direkt betätige, dann werden alle ListBoxen mit ihren Events ausgeführt, egal ob sie "von Hand" oder automatisch mit Daten befüllt werden. Ich habe keine Ahnung woran das liegt zumal ich auch kein System dahinter erkennen kann. Ich weiß auch nicht ob da Code viel hilft, aber wer weiss:

    protected void Page_Load(object sender, EventArgs e)
            {
    
                if (!IsPostBack)
                {
    
                    InitializeMeanViewFilter();
    
                    lstMeanViewSubco.Items.Add("All");
                    lstMeanViewSubco.SelectedValue = "All";
    
                } 
    }
    
    protected void InitializeMeanViewFilter()
            {
                SubcoFilterListTableAdapter subcoAdapter = new SubcoFilterListTableAdapter();
                AstriumDataSet.SubcoFilterListDataTable subcoTable = new AstriumDataSet.SubcoFilterListDataTable();
    
                //von Hand gefüllte ListBox
                lstMeanViewPDU.Items.Add("All");
                lstMeanViewPDU.Items.Add("PrePDU");
                lstMeanViewPDU.Items.Add("PDU");
                lstMeanViewPDU.Items.Add("PrePDU+PDU");
                lstMeanViewPDU.Items.Add("No PDU");
                //automatisch gefüllte ListBox
                subcoTable = subcoAdapter.GetDataForSubcoFilter();
                lstMeanViewSubco.DataSource = subcoTable;
                lstMeanViewSubco.DataTextField = "Subco_Company";
                lstMeanViewSubco.DataBind();
    
            }
    

    Code der ASP.Net Seite:

    <asp:ListBox ID="lstMeanViewSubco" runat="server" AutoPostBack="True" 
                                           onselectedindexchanged="lstMeanViewSubco_SelectedIndexChanged" Rows="1" 
                                           Width="90px">
                                           <asp:ListItem Enabled="False" Selected="True">All</asp:ListItem>
                                       </asp:ListBox>
    <asp:ListBox ID="lstMeanViewPDU" runat="server" Rows="1" 
                                           onselectedindexchanged="lstMeanViewPDU_SelectedIndexChanged" 
                                           AutoPostBack="True"></asp:ListBox>
    

Anmelden zum Antworten