Domanda

Ho una casella di ricerca che non ha un pulsante di invio, devo essere in grado di premere invio e quindi eseguire un metodo, come posso fare?

È stato utile?

Soluzione

potresti anche fare qualcosa di semplice come questo con CSS:

<asp:Panel DefaultButton="myButton" runat="server">
    <asp:TextBox ID="myTextBox" runat="server" />
    <asp:Button ID="myButton" runat="server" onclick="myButton_Click" style="display: none; "  />
</asp:Panel>

Il pannello potrebbe essere o non essere necessario a seconda della tua implementazione e dei controlli circostanti, ma questo funziona e fa un postback per me.

Altri suggerimenti

Puoi aggiungere un pulsante nascosto alla pagina e collegare il tuo metodo all'evento click di quel pulsante. Quindi aggiungi un po 'di javascript per attivare l'azione di postback di quel pulsante quando premi invio all'interno della casella di testo.

this.myTextBox.Attributes.Add(
    "onkeydown", 
    "return keyDownHandler(13, 'javascript:" 
     + this.Page.ClientScript.GetPostBackEventReference(this.myButton, string.Empty).Replace("'", "%27") 
     + "', event);");

(È inoltre possibile sostituire il codice 13 con Windows.Forms.Keys .Inserisci, se preferisci una versione più semplice da leggere.)

Dove keyDownHandler è una funzione JavaScript come questa:

function keyDownHandler(iKeyCode, sFunc, e) { 
    if (e == null) { 
        e = window.event; 
    } 
    if (e.keyCode == iKeyCode) { 
        eval(unescape(sFunc)); return false; 
    } 
}

Nota, questo si basa sull'implementazione di DotNetNuke ' Utilità web ClientAPI .

Utilizza l'evento TextChanged e imposta la proprietà AutoPostBack su true.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top