2010-09-01 11 views
16

Ich habe eine Masterseite mit einem Formularelement und das defaultbutton -Attribut, das auf ein serverseitiges ImageButton festgelegt wird. Auf einer meiner Seiten möchte ich das masterpage defaultbutton -Attribut "überschreiben", indem ich das Forms DefaultButton im Page_Load -Ereignis einstelle.ASP.NET-Masterseite DefaultButton-Überschreibung

dh Auf mater Seite:

<form id="form1" runat="server" defaultbutton="btnSearch">....</from> 

auf der Seite Page_Load Fall, dass "überschreiben" die Master-Seite Attribut:

this.Form.DefaultButton = this.ibRecalc.ID; 

Es Fehler mit:

Die Default von 'form1' muss die ID eines Controls vom Typ IButtonControl

sein

Ich bin mit Bild Tasten, die IButtonControl

implementiert Irgendwelche Ideen von dem, was ich könnte falsch oder eine andere Art und Weise tun, um das Problem zu nähern?

Danke

+0

Welcher Typ ist ibRecalc? Implementiert es die angegebene Schnittstelle? – Tahbaza

+0

@Tahbaza: ibRecalc ist ein ASP.NET ImageButton-Steuerelement, d. H. Es implementiert IButtonControl –

Antwort

41

Verwenden Sie UniqueId. Da Sie mehrere Serversteuerelemente mit der gleichen Server-ID verwenden können, dh in einer GridView, muss das Framework die eindeutige ID haben, damit es übereinstimmt.

this.Form.DefaultButton = this.ibRecalc.UniqueID; 
+0

perfekt - danke. –

1

Sie könnten versuchen, die "Default" Eigenschaft eines Panel mit ...

Platzieren Sie Ihre Taste oder ganze Seite oder div in asp: Panel

// Start Panel

asp: Panel ID = "pnlOpsCallSummay" runat = "server" Default = "btnSearch"

............

// Steuerung Ihrer Anforderung

..........

asp: Button ID = "btnSearch" runat = "server" Text = "Suchen"

schließen die

pannel

Keine Notwendigkeit von Überschreiben der Masterseite Taste

+0

Dies ist interessant, Sie können dann Standardtasten für mehrere Panels innerhalb einer Seite haben. Nett. –

0

Wenn Sie das Panel innerhalb der Vorlage Login bewegen: -

<asp:login id="Login2" runat="server" loginbuttontype="Image"> 
<layouttemplate> 
    <asp:`enter code here`panel id="Panel1" runat="\ 
    server"defaultbutton="LoginImageButton"> 
    </asp:Panel> 
</LayoutTemplate> 
</asp:Login> 

Dann wird es ohne Code funktionieren. Sie können loginbuttontype = "Image" oder Link oder Schaltfläche entsprechend Ihrer Anforderung einstellen.