2010-09-01 13 views
16

Tengo una página maestra con un elemento de formulario y el atributo de botón predeterminado establecido en un ImageButton del lado del servidor. En una de mis páginas deseo "anular" el atributo del botón predeterminado de la página maestra estableciendo el botón Default de las formas en el evento Page_Load.ASP.NET Página maestra DefaultButton anular

es decir En la página mater:

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

En el caso de la página Page_Load que "override" el atributo de página maestra:

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

It errores con:

El DefaultButton de 'form1' debe ser el ID de un control de tipo IButtonControl

estoy usando los botones de imagen que implementa IButtonControl

¿Alguna idea de lo que podría estar haciendo mal o una forma diferente de abordar el problema?

Gracias

+0

¿Qué tipo es ibRecalc? ¿Implementa la interfaz especificada? – Tahbaza

+0

@Tahbaza: ibRecalc es un control ASP.NET ImageButton, es decir, implementa IButtonControl –

Respuesta

41

Use UniqueId. Dado que puede tener múltiples controles de servidor con el mismo ID de servidor, es decir, en un GridView, el marco debe coincidir con el ID único.

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

perfecto, gracias. –

1

Usted podría tratar de usar la propiedad "DefaultButton" de un panel ...

Coloque el botón o la página entera o div en asp: Panel

// iniciar el panel

asp: Panel ID = runat "pnlOpsCallSummay" = "servidor" DefaultButton = "btnSearch"

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

// Controles de su requerimiento

..........

asp: Button ID = runat = texto "btnSearch" "servidor" = "Buscar"

cerrar la panel

No hay necesidad de anular el botón de página maestra

+0

Esto es interesante, entonces podrá tener botones predeterminados para múltiples paneles dentro de una página. Bonito. –

0

Si se mueve el panel interior de la plantilla de la entrada: -

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

Entonces funcionará sin código. Puede establecer loginbuttontype = "Imagen" o Enlace o botón de acuerdo a sus necesidades.

Cuestiones relacionadas