in effetti non è semplice da riassumere...
la pagina ha una multiview: la defaultview presenta un elenco di preventivi cliccando ognuno dei quali si viene ri-indirizzati alla pagina stessa ma con un parametro in querystring (vecchio asp style).
Torno quindi alla pagina con un parametro in querystring (ispostback=false), si viene posizionati in una view diversa con il dettaglio di un preventivo (la sua ultima versione) e vengono caricati i listitem di una dropdownlist con le diverse versioni del preventivo.
Ad ogni selectedindexchanged di questa ddl veine fatto un postback con rilettura dei dati del preventivo relativi alla versione selezionata, quindi la view si aggiorna con i dati della versione scelta.
Ecco, con Chrome questo succede sempre (ispostback sempre true), con Firefoz funziona a volte alterne: in debug vedo che la prima volta lo fa (ispostback=true) e carica i dati della versione selezionata, la seconda invece lo fa ricaricando la pagina (ispostback = false) e infatti mi ripropone l'ultima versione del preventivo anzichè quella selezionata.

Ho 1800 righe di codice in markup e 2700 in codebehind, provo a sintetizzare
codice:
<%@ Page Title="" Language="vb" AutoEventWireup="false" MasterPageFile="~/_Admin/_admin.Master" CodeBehind="preventivi.aspx.vb" Inherits="WEBORDINI.preventivi" ValidateRequest="false" %>

<asp:Content ID="Content1" ContentPlaceHolderID="head" runat="server"></asp:Content>

<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">
   <asp:HiddenField ID="HFIDprev" runat="server" />
   <asp:HiddenField ID="HFnprev" runat="server" />

    <asp:MultiView ID="MultiView1" runat="server" ActiveViewIndex="3">
        
        <asp:View runat="server" ID="inserimento">
            <asp:DropDownList ID="versioni"  ClientIDMode="Static" CssClass="form-control maxw250" runat="server" OnSelectedIndexChanged="versioni_SelectedIndexChanged" AutoPostBack ="true"></asp:DropDownList>

            <div class="col-xs-12 col-md-6">
                <asp:TextBox ID="cliente" ClientIDMode="static" runat="server" TextMode="MultiLine" placeholder="Dati del cliente *" Rows="5" ValidationGroup="mcins"></asp:TextBox>
            </div>
            <div class="col-xs-12 col-md-6">
                <div class="col-xs-6 col-md-4" style="height: 30px; padding: 6px 0px 0px 10px;">Validità offerta:</div>
                <div class="col-xs-6 col-md-8">
                    <asp:TextBox ID="val_offerta" runat="server" MaxLength="20" CssClass="bgc"></asp:TextBox>
                </div>
                ....
            </div>
            ...
            <div class="col-xs-12">
                <asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional">
                    <ContentTemplate>

                            <table id="schemaprezzi" class="macbtab">
                                <tr>
                                    ... varie righe e vari campi che si aggiornano a vicenda all'interno dell'update panel
                                   <td><asp:TextBox ID="X0_note" runat="server" MaxLength="15"></asp:TextBox></td>
                                </tr>
                            </table>
                        </div>

                    </ContentTemplate>
                </asp:UpdatePanel>
            </div>


            <div class="row" style="text-align: center;">
                <asp:Button ID="btnok" runat="server" Text="Conferma i dati" ClientIDMode="Static" OnClick="btnok_Click" CausesValidation="true" ValidationGroup="mcins"  />
                ...
            </div>

        </asp:View>

        <asp:View runat="server" ID="conferma"> ......    </asp:View>

        <asp:View runat="server" ID="firma"> .........    </asp:View>

        <asp:View ID="elenco" runat="server">
            <h1>Elenco Preventivi"></h1>
            <asp:Repeater ID="rordini" runat="server" EnableViewState="true">
                <HeaderTemplate>
                    <table class="table mactab gridtable">
                       <tr> .....</tr>
                </HeaderTemplate>
                <ItemTemplate>
                    <tr class="borderrow">
                        <td><asp:Label ID="r_ID" runat="server" Text='<%# Eval("ID") %>' Visible="false"></asp:Label></td>
                        <td>
                            <asp:Label ID="r_numprev" runat="server" Text='<%#  Eval("c_numprev")%>'></asp:Label></td>
                        <td>
                            <asp:LinkButton ID="lb_data" Text='<%# String.Format("{0:dd/MM/yy HH:mm}", Eval("c_data")) %>' CommandName="seleziona" ToolTip="Vedi" runat="server" Style="color: #333 !important; font-weight: bold;"></asp:LinkButton>
                        </td>
                        <td>
                            <asp:Label ID="r_cliente" runat="server" Text='<%# Eval("c_cliente") %>'></asp:Label>
                        </td>
                        <td>
                            'vari imagebutton per vedere (commandname="seleziona")  /duplicare/eliminare il preventivo elencato
                        </td>
                    </tr>

                </ItemTemplate>
                <FooterTemplate>
                    </table>
                </FooterTemplate>
            </asp:Repeater>
        </asp:View>


    </asp:MultiView>
</asp:Content>






codebehind

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    If Not IsPostBack Then
        If "" & Request("IDprev") <> "" Then
            Dim IDprev As String = Request("IDprev")
            HFIDprev.Value = IDprev
            
            'seleziono il preventivo e compilo tutti i campi della view 
            'in base all'id del preventivo ricevuto in querystring
            recuperadati(IDprev)
            
            'popolo dll versioni: il valore HFnprev.value è appena stato aggiornato dalla recuperadati!
            popoladdlrelease(Int(HFnprev.Value))
            
            'e switcho sulla view corretta
            MultiView1.SetActiveView(MultiView1.Views(0))
        Else
            'crea elenco preventivi della view(3)
            ...
        End If

    End If
End sub

'itemcommand di una riga dell'elenco preventivi nella view(3)
Protected Sub rordini_ItemCommand(source As Object, e As RepeaterCommandEventArgs) Handles rordini.ItemCommand
    Dim rI As RepeaterItem = rordini.Items(e.Item.ItemIndex)
    Dim Idprev As Integer = Int(DirectCast(rI.FindControl("r_ID"), Label).Text)
    Dim numprev As Integer = Int(DirectCast(rI.FindControl("r_numprev"), Label).Text)

    If e.CommandName.ToLower().Equals("seleziona") Then
        Response.Redirect("preventivi.aspx?&idprev=" & Idprev)
    End If
    ....
end sub

'preparo i listitem della ddl
Protected Sub popoladdlrelease(ByVal nprev As Integer)
    Dim cn = New System.Data.SqlClient.SqlConnection(...)
    Using cn
        cn.Open()
        Dim strsql = "SELECT ID,c_Data FROM preventivi WHERE c_numprev =" & nprev & " ORDER BY c_data desc"
        Dim cmd As New SqlCommand(strsql, cn)
        Dim rs As SqlDataReader = cmd.ExecuteReader()
        If rs.HasRows Then
            Dim dtt As New DataTable
            dtt.Load(rs)
            If dtt.Rows.Count > 1 Then
                versioni.Items.Clear()
                For Each row In dtt.Rows
                    versioni.Items.Add(New ListItem(String.Format("{0:dd/MM/yy HH:mm}", row.item("c_data")), row.item("ID")))
                Next
                versioni.SelectedValue = HFIDprev.Value
            End If

        End If
    End Using
End Sub

'selezione di una voce dalla dropdown delle versioni  
Protected Sub versioni_SelectedIndexChanged(sender As Object, e As EventArgs)
    Dim ddl As DropDownList = sender
    Dim idvers As Integer = ddl.SelectedValue
    recuperadati(idvers)
    If ddl.SelectedIndex > 0 Then
        'è una versione precedente e non devo permettere le modifiche
        'lavoro lato client per enabled/disabled dei campi, qui nascondo solo il bottone salva
        btnok.Visible = False
    Else
        btnok.Visible = True
    End If
End Sub