2009-10-21 17 views

Respuesta

8

para elegir entre Page.DataBind() frente Control.DataBind(), aquí está el Microsoft guidance:

"Ambos métodos funcionan de manera similar La principal diferencia es que todas las fuentes de datos están obligados a . su servidor controla después del método Page.DataBind se llama . Sin datos se hace con el control hasta que llame explícitamente ya sea el método DataBind del control de servidor web o hasta que se invoque el método Page.DataBind a nivel de página Normalmente, se llama a Page.DataBind (o DataBind) desde el evento Page_Load. "

Habrá casos en los que desee especificar el enlace de datos de control individualmente, dependiendo del escenario de la página actual. Para un nivel detallado de control sobre qué controles están vinculados y cuándo los controles están vinculados, opto por los métodos de nivel de control DataBind().

7

En una página ASP.NET, puede enlazar directamente a las propiedades públicas/protegidas de la clase de código subyacente de su página. Por ejemplo:

<form id="form1" runat="server"><%#HtmlUtility.HtmlEncode(MyProperty.ToString())%></form> 

En este caso, no existe un control específico para llamar .DataBind() en - la página en sí es el control. Da la casualidad de que llamar a Page.DataBind() también llamará a DataBind() en todos los controles secundarios, por lo que si ya está haciendo una Page.DataBind(), no hay necesidad de enlazar los datos de forma individual.

11

Page.DataBindesControl.DataBind. Ni la clase Page ni la clase TemplateControl prevalecen sobre Control.DataBind.

Control.DataBind hace poco más que llamar al OnDataBinding para el control, luego llama al DataBind para cada control secundario.

+0

Es por eso que pregunté :) - solo en caso de que hubiera algún caso especial del que no tenía conocimiento. –

+0

@Downvoter: ¿por qué? Fue algo inexacto? –

+2

Y está lo nuevo que aprendí hoy: no me di cuenta System.Web.UI.Page derivado de System.Web.UI.Control. Gracias. –

0

Ésta no es una respuesta directa a sutilezas entre las dos llamadas, pero sobre DataBind() vs Page.DataBind() Me gustaría compartir una experiencia interesante que también puede realmente guiará para elegir entre los dos:

Acabo de pasar un día completo para entender por qué las llamadas a Ajax y los eventos en una aplicación de almacenamiento enorme se rompieron (ItemCommand no se presentó en las devoluciones de llamada y devoluciones, referencias perdidas, etc.).

La razón fue que tenía un ASCX que hizo una llamada a Page.DataBind() en lugar de DataBind() en sí mismo.

Podría parecer obvio cuando lo encontró, pero cuando se trata de un comportamiento extraño en una aplicación> 500000 líneas y mucha complejidad en master/pages/controls, no lo es. ¡Tenga cuidado con Page.DataBind() si lo llama en el lugar equivocado!

Cuestiones relacionadas