2009-05-14 5 views
1

Netto-Webseite, hat es zwei Suchfelder mit separaten Senden-Schaltflächen.Bestimmen Sie zur Laufzeit, die Schaltfläche zum Senden

Ich möchte den Benutzer erlauben, einige Daten in eines der Felder einzugeben und dann die Eingabetaste zu drücken und es mit der entsprechenden Schaltfläche abschicken. Momentan wird die Eingabetaste für die erste Übermittlungsschaltfläche gesendet, aber ich möchte, dass sich diese ändert, wenn sich Daten in der zweiten Textbox befinden.

Wie kann ich das tun? mein Code

Derzeit ist:

<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

wissen Sie Jquery, weil diese wäre so einfach zu tun in jquery.if so Ill dir die Lösung geben..just ask – TStamper

Antwort

2

Werfen Sie einen Blick auf die DefaultButton Eigenschaft. Sie können jedes dieser Label-/Schaltflächenpaare in einem Bereich umbrechen und die Eigenschaft auf btnEmployeeSearch bzw. btnCustomerSearch festlegen.

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

Können Sie es in zwei Teile gespalten getrennte <form> s? Sie würden nur eines der eingereichten Textfelder erhalten (ohne JavaScript-Tricks), aber vielleicht spielt das in Ihrer Anwendung keine Rolle?

2

ich denke, es könnte besser sein, beide Tasten die gleiche serverseitige Funktion auslösen haben, dann können Sie überprüfen, welche Taste von dort programmatisch angeklickt wurde und dann andere Methoden aufrufen.

+0

Oder lieber habe dann die gleiche Funktion auslösen und überprüfen, ob das zweite Textfeld leer war oder nicht. – Travis

1

Sie können jeden Abschnitt in einem Panel wickeln und es verwenden, default Eigenschaft ist für jedes Textfeld angeben, legt die Schaltfläche:

<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

Hier ist eine Erweiterung von asp: Panel, das eine Seite ermöglicht um mehrere Standardtasten
basierend auf dem aktuellen Fokus zu haben.
Es überschreibt Panel OnLoad-Methode und DefaultButton-Eigenschaft.
Sie könnten Ihre Felder und Schaltflächen in getrennten benutzerdefinierte Panels wickeln und initiieren ihre Default in Page_Load() oder on_load()

Hier ist der Custom Control:

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; 
      } 
     } 

    } 
Verwandte Themen