Soru Ne zaman Page.DataBind () Control.DataBind () karşı kullanılmalıdır?


ASP.NET'te, denetimleri tek tek bağlayabilirsiniz (ör. GridView1.DataBind()) ya da arayabilirsin Page.DataBind() Sayfadaki tüm denetimleri bağlamak.

İki çağrı arasında özel bir fark var mı? Birinin diğeri üzerinde tercih edilmesi gereken zamanlar var mı?


18
2017-10-21 20:28


Menşei




Cevaplar:


Page.DataBind () ile Control.DataBind () arasında seçim yapmak için, Microsoft burasıdır. rehberlik :

"Her iki yöntem de benzer şekilde çalışır.   fark, tüm veri kaynaklarının   sunucu kontrollerine bağlı   Page.DataBind yöntemi sonra   aradı. Hiçbir veri işlenmemiş   Açıkça aranana kadar kontrol et   Web'in DataBind yöntemi   sunucu kontrolü veya siz   sayfa düzeyinde Page.DataBind yöntemi.   Genellikle, Page.DataBind (veya DataBind)   Page_Load olayı denir. "

Geçerli sayfa senaryosuna bağlı olarak, kontrol veritabanını bireysel olarak belirtmek istediğiniz durumlar olacaktır. Kontrollerin bağlı olduğu ve kontroller bağlandığında ayrıntılı kontrol seviyesi için kontrol seviyesi DataBind () yöntemlerini tercih ederim.


8
2017-10-21 20:37





Page.DataBind  olduğu  Control.DataBind. Ne de Page sınıf ne TemplateControl sınıf geçersiz kılmalar Control.DataBind.

Control.DataBind çağrıdan biraz daha fazlasını yapar OnDataBinding kontrol için o zaman DataBind her çocuk kontrolü için.


11
2017-10-21 20:38



Bu yüzden sordum :) - farkında olmadığım bazı özel durumlar söz konusu olduğunda. - Jason Berkan
@Downvoter: neden? Bir şey yanlış mıydı? - John Saunders
Ve bugün öğrendim yeni şey var - System.Web.UI.Page System.Web.UI.Control türetilmiş farketmedim. Teşekkürler. - Jason Berkan


Bir ASP.NET sayfasında, sayfanızın kod arkasındaki sınıfının genel / korumalı özelliklerine doğrudan bağlayabilirsiniz. Örneğin:

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

Bu durumda, aramak için belirli bir kontrol yoktur. DataBind () on - sayfanın kendisi kontroldür. Bu nedenle, Page.DataBind () çağrısı, tüm alt denetimlere DataBind () de çağırır, bu nedenle zaten bir Page.DataBind () yapıyorsanız, verileri tek tek denetimlere bağlamanıza gerek yoktur.


7
2017-10-21 20:30





Bu, iki çağrı arasındaki alt sistemlere doğrudan bir cevap değildir, ancak DataBind () vs Page.DataBind () Ayrıca, ikisi arasında seçim yapmak için size yol gösterebilecek ilginç bir deneyim paylaşmak isterim:

Ajax'ın neden çağıran ve büyük bir web uygulamasındaki olayların neden kırıldığını anlamak için tam bir gün harcadım (ItemCommand, geri aramalarda ve geri gönderimlerde kaldırılmadı, referanslar kayboldu, vb.).

Nedeni, DataBind () yerine kendi başına Page.DataBind () için bir çağrı yapan bir ASCX vardı.

Bunu bulduğunuzda belirgin görünebilir, ancak 500000 satırlık uygulamada garip davranışlarla ve ana / sayfa / denetimlerde çok fazla karmaşıklıkla uğraşırken, öyle değil. Yani yanlış bir yerde çağırırsanız Page.DataBind () dikkat!


0
2018-05-05 16:10