2009-10-21 10 views

Antwort

8

Für zwischen Page.DataBind Auswahl() im Vergleich zu Control.DataBind(), hier ist die Microsoft guidance:

„Beiden Methoden ähnlich funktionieren Der Haupt Unterschied besteht darin, dass alle Datenquellen gebunden sind. ihre Server steuern nach der Page.DataBind Methode aufgerufen wird. Keine Daten an die Steuerelement gerendert werden, bis Sie explizit die DataBind Methode der Web Serversteuer entweder anrufen oder bis Sie berufen sich auf die Seitenebene Page.DataBind Methode Normalerweise wird PageDataBind (oder DataBind) vom Page_Load-Ereignis aufgerufen. "

Es gibt Fälle, in denen Sie die Steuerdatenbindung je nach dem aktuellen Seitenszenario einzeln festlegen möchten. Für eine detaillierte Kontrolle darüber, welche Steuerelemente gebunden sind und wann Steuerelemente gebunden sind, entscheide ich mich für die DataBind() - Methoden auf Steuerelementebene.

7

In einer ASP.NET-Seite können Sie direkt an öffentliche/geschützte Eigenschaften der CodeBehind-Klasse Ihrer Seite binden. Zum Beispiel:

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

In diesem Fall gibt es keine spezifische Kontrolle nennen .DataBind() auf - die Seite selbst die Kontrolle. Es passiert einfach, dass das Aufrufen von Page.DataBind() DataBind() auch für alle untergeordneten Steuerelemente aufruft. Wenn Sie also bereits eine Page.DataBind() -Methode ausführen, ist es nicht erforderlich, die Steuerelemente einzeln zu binden.

11

Page.DataBindistControl.DataBind. Weder die Klasse Page noch die Klasse TemplateControl überschreibt Control.DataBind.

Control.DataBind tut wenig mehr als Anruf OnDataBinding für die Steuerung, dann ruft es DataBind für jedes untergeordnete Steuerelement auf.

+0

Deshalb habe ich gefragt :) - nur für den Fall, dass es einen speziellen Fall war mir nicht bewusst war. –

+0

@Downvoter: warum? War etwas ungenaues? –

+2

Und da ist die neue Sache, die ich heute gelernt habe - ich habe nicht realisiert, dass System.Web.UI.Page von System.Web.UI.Control abgeleitet ist. Vielen Dank. –

0

Dies zu Subtilitäten zwischen den beiden Anrufen keine direkte Antwort, aber über DataBind() vs Page.DataBind() Ich möchte eine interessante Erfahrung teilen, die auch wirklich führen kann man zwischen den beiden wählen:

Ich habe gerade einen ganzen Tag damit verbracht, herauszufinden, warum Ajax-Aufrufe und -Ereignisse in einer riesigen Webapplikation unterbrochen wurden (ItemCommand wurde nicht bei Callbacks und Postbacks, verlorenen Referenzen usw. ausgelöst).

Der Grund war, dass ich einen ASCX hatte, der einen Aufruf von Page.DataBind() statt DataBind() an sich selbst machte.

Es könnte offensichtlich erscheinen, wenn Sie es gefunden haben, aber wenn Sie mit seltsamen Verhalten in einer> 500000 Zeilen-Anwendung und viel Komplexität in Master/Seiten/Steuerelemente beschäftigen, ist es nicht. Also Vorsicht vor Page.DataBind(), wenn Sie es an der falschen Stelle anrufen!

Verwandte Themen