2013-03-28 16 views
6

Ho due pulsanti, anteprima e salvataggio. Con l'aiuto del pulsante di anteprima, l'utente può visualizzare i dati in base al formato e quindi può salvare.Come evitare Page_Load() sul clic del pulsante?

Ma quando si fa clic sull'anteprima, una casella di testo collegata a ajaxcontrol (Calendario) diventa vuota e l'utente deve compilare la data prima di salvarla. Come gestirlo? All'anteprima del clic ottengo i dettagli per mostrare i dati nel layout.

<asp:TextBox ID="txtDate" ReadOnly="true" runat="server"></asp:TextBox> 
        <div style="float: right;"> 
         <asp:ImageButton ID="imgcalender1" runat="server" ImageUrl="~/images/calendar.png" 
          ImageAlign="Bottom" /> 
         <asp:CalendarExtender ID="ajCal" TargetControlID="txtpublishDate" PopupButtonID="imgcalender1" 
          runat="server"> 
         </asp:CalendarExtender> 
         <asp:RequiredFieldValidator ID="RequiredFieldValidator2" ValidationGroup="group1" runat="server" ControlToValidate="txtDate" 
          ForeColor="Red" Font-Bold="true" ErrorMessage="*"></asp:RequiredFieldValidator> 
        </div> 

<asp:Button ID="btnPreview" runat="server" Text="Preview" OnClick="btnPreview_Click" /> 
        <asp:Button ID="btnsubmit" runat="server" ValidationGroup="group1" Text="Save" OnClick="btnsubmit_Click" /> 

risposta

8

Da quello che sto capendo il pulsante di anteprima sta causando un postback e non voglio che, provate questo nel pulsante di anteprima:

<asp:button runat="server".... OnClientClick="return false;" /> 

simile questo funziona anche:

YourButton.Attributes.Add("onclick", return false"); 

Modifica:

sembra che la risposta alla domanda dell'utente sia stata semplice modifica in HTML mar k up del pulsante di anteprima

CausesValidation="False" 
+0

Questo non work.I modificato la mia domanda. Effettivamente cliccando sul pulsante di anteprima vado sul lato server per ottenere i dettagli di tutto il controllo e quindi mostrarlo layout diverso. –

+4

prova CausesValidation = "False", attributo sul tuo pulsante di anteprima e fammi sapere se funziona –

+0

Grazie !!! risolve il problema. Soluzione semplice :-) –

1

Provate ad aggiungere questo alle proprietà dei pulsanti nella pagina di aspx.

OnClientClick="return false;" 
12

Usa Page.IsPostBack() nel codice aspx (lato server). Come questo:

private void Page_Load() 
{ 
    if (!IsPostBack) 
    { 
     // the code that only needs to run once goes here 
    } 
} 

Questo codice verrà eseguito solo il tempo prima la pagina viene caricata ed evita di fare un passo sui cambiamenti inserite dall'utente al modulo.

3

si può mettere il codice in

Page_Init() 
{ 
    //put your code here 
} 

invece di

Page_Load() 
{ 
    //code 
} 
1

Ho avuto lo stesso problema e la soluzione di cui sopra di "CausesValidation =" false "" e anche l'aggiunta di "UseSubmitBehavior =" False "" NON ha funzionato - ha ancora chiamato il metodo "Page_Load".

Ciò che ha funzionato per me è stato aggiungere la seguente riga in primo piano nel metodo Page_Load.

if (IsPostBack) return; 

sto citano il presente se aiuta qualcuno (volevo dire di commentare sopra, ma StackOverflow non mi ha permesso di commentare perché io sono un nuovo utente - da qui una nuova risposta).

-1
form1.Action = Request.RawUrl; 

Scrivi questo codice al caricamento della pagina, allora la pagina non è inviare nuovamente scatto del tasto