2009-05-14 3 views
1

, il a deux champs de recherche avec des boutons d'envoi séparés.Déterminez à l'exécution quel bouton d'envoi pour utiliser la page Web

Je voudrais autoriser l'utilisateur à entrer certaines données dans l'un des champs, puis appuyer sur la touche Entrée et l'envoyer en utilisant le bouton approprié. À l'heure actuelle, la touche Entrée est utilisée pour le premier bouton d'envoi, mais je souhaite que cela change si des données sont présentes dans la deuxième zone de texte.

Comment est-ce que je peux faire ceci?

Actuellement mon code est:

<label for="ctl00_cpMain_txtEmployeeSearch">Employee Name:</label><asp:TextBox id="txtEmployeeSearch" runat="server" CssClass="TextBox" /> 
    <asp:Button ID="btnEmployeeSeach" runat="server" Text="Search" onclick="btnEmployeeSeach_Click" CssClass="button" /> 


    <label for="ctl00_cpMain_txtCustomerSearch">Customer Name:</label><asp:TextBox id="txtCustomerSearch" runat="server" CssClass="TextBox" /> 
    <asp:Button ID="btnCustomerSeach" runat="server" Text="Search" onclick="btnCustomerSeach_Click" CssClass="button" /> 
+0

savez-vous jquery, parce que cela serait tellement simple à faire dans jquery.if donc je vais vous donner la solution ... il suffit de demander – TStamper

Répondre

2

Regardez la propriété DefaultButton. Vous pouvez envelopper chacune de ces paires étiquette/bouton dans un panneau et définir la propriété sur btnEmployeeSearch et btnCustomerSearch, respectivement.

http://forums.asp.net/t/985791.aspx

<asp:Panel DefaultButton="btnEmployeeSearch" runat="server" id="Panel"> 
    <label for="ctl00_cpMain_txtEmployeeSearch">Employee Name:</label><asp:TextBox id="txtEmployeeSearch" runat="server" CssClass="TextBox" /> 
    <asp:Button ID="btnEmployeeSeach" runat="server" Text="Search" onclick="btnEmployeeSeach_Click" CssClass="button" /> 
</asp:Panel> 
0

Pouvez-vous diviser en deux <form> séparés s? Vous obtiendrez seulement l'un des champs de texte soumis (sans tricherie JavaScript) mais peut-être que cela n'a pas d'importance dans votre application?

2

Je pense qu'il pourrait être préférable d'avoir les deux boutons déclenchent la même fonction côté serveur, vous pouvez vérifier quel bouton a été cliqué programme et appeler d'autres méthodes à partir de là.

+0

ou plutôt de déclencher alors la même fonction et de vérifier si la deuxième zone de texte était vide ou non. – Travis

1

Vous pouvez envelopper chaque section dans un panneau et de l'utiliser est la propriété defaultButton pour spécifier le bouton d'envoi pour chaque zone de texte:

<asp:Panel runat="server" DefaultButton="btnEmployeeSeach"> 
    <label for="ctl00_cpMain_txtEmployeeSearch">Employee Name:</label><asp:TextBox id="txtEmployeeSearch" runat="server" CssClass="TextBox" /> 
    <asp:Button ID="btnEmployeeSeach" runat="server" Text="Search" onclick="btnEmployeeSeach_Click" CssClass="button" /> 
</asp:Panel>  
<asp:Panel runat="server" DefaultButton="btnCustomerSeach"> 
    <label for="ctl00_cpMain_txtCustomerSearch">Customer Name:</label><asp:TextBox id="txtCustomerSearch" runat="server" CssClass="TextBox" /> 
    <asp:Button ID="btnCustomerSeach" runat="server" Text="Search" onclick="btnCustomerSeach_Click" CssClass="button" /> 
</asp:Panel> 

How to Set a Default Button

0

Voici une extension de asp: Panel qui permet à une page avoir plusieurs boutons par défaut
en fonction du focus actuel.
Il remplace la méthode OnLoad du Panel et la propriété DefaultButton.
Vous pouvez envelopper vos champs et boutons pour panneaux personnalisés séparés et lancer leur DefaultButton dans Page_Load() ou on_load()

Voici le contrôle personnalisé:

public class DefaultButtonPanel:Panel 
    { 
     protected override void OnLoad(EventArgs e) 
     { 
      if(!string.IsNullOrEmpty(DefaultButton)) 
      { 
       LinkButton btn = FindControl(DefaultButton) as LinkButton; 
       if(btn != null) 
       { 
        Button defaultButton = new Button {ID = DefaultButton.Replace(Page.IdSeparator.ToString(), "_") + "_Default", Text = " "}; 
        defaultButton.Style.Add("display", "none"); 
        PostBackOptions p = new PostBackOptions(btn, "", null, false, true, true, true, true, btn.ValidationGroup); 
        defaultButton.OnClientClick = Page.ClientScript.GetPostBackEventReference(p) + "; return false;"; 
        Controls.Add(defaultButton); 
        DefaultButton = defaultButton.ID; 
       } 
      } 
      base.OnLoad(e); 
     } 
     /// <summary> 
     /// Set the default button in a Panel. 
     /// The UniqueID of the button, must be relative to the Panel's naming container UniqueID. 
     /// 
     /// For example: 
     /// Panel UniqueID is "Body$Content$pnlLogin" 
     /// Button's UniqueID is "Body$Content$ucLogin$btnLogin" 
     /// (because it's inside a control called "ucLogin") 
     /// Set Panel.DefaultButton to "ucLogin$btnLogin". 
     /// </summary> 
     /// <param name="panel"></param> 
     /// <param name="button"></param> 
     public override string DefaultButton 
     { 
      get 
      { 
       return base.DefaultButton; 
      } 
      set 
      { 
       string uniqueId = value; 
       string panelIdPrefix = this.NamingContainer.UniqueID + Page.IdSeparator; 
       if (uniqueId.StartsWith(panelIdPrefix)) 
       { 
        uniqueId = uniqueId.Substring(panelIdPrefix.Length); 
       } 
       base.DefaultButton = uniqueId; 
      } 
     } 

    } 
Questions connexes