2010-05-20 40 views
8

iki yönlü (çift yönlü) veritabanında ASP için bunu yapıyoruz, bunu yapıyoruz ...ASP.NET verileri, arkasındaki koddan iki yönlü, çift yönlü bağlantı sağlar.

<asp:textbox id="txtField" runat="server" 
    text='<%# Bind("SomeField") %>'> 
</asp:textbox> 

SomeField, TextView için kapsayıcı görevi gören DetailsView DataSource üzerinde bulunur.

Alternatif olarak bunu kod arkasından (textbox'ın OnDataBinding olayını kullanarak) yapabilirim:

protected void SomeField_OnDataBinding(object sender, EventArgs e) 
{ 
    ((TextBox)sender).Text = Eval("SomeField").ToString(); 
} 

Ancak, EVAL salt okunur ... Koddan Bind (iki yönlü) nasıl belirleyebilirim -behind?

cevap

3

"Kenar durumum" için bir iş bulmayı başardım.

LLBLGen alt türlerini kullanıyorum ve bu nedenle, kullanıcı tarafından seçilen bir radyo düğmesi filtresine dayanarak ayrıntılar görünümünün veri kaynağını değiştirmesi gerekiyor. ASP Bu işe yaramadı <% # Bind (... kullanarak

ben "bildirimli" alt tipi alanına bağlamak çalıştı. Ben burada "kesmek" kod-arkasında çözümlemek zorunda

Ben şartlı details_view önceden görüntülemesini yöntemi kullanılarak DetailsView denetimleri görüntüler. her alan için

sonra şartlı kurulum o

e.g. ((TextBox)sender).Text = Eval("FilePrefix").ToString(); 

Sonda gelen etmek ... OnDataBinding tek yönlü (salt okunur) bağlamak var verileri itmek veri kaynağı haline, ben hala umut

... DetailsView OnItemInserting/Güncelleme olaylar (şartlı yanı) ...

e.Values["FilePrefix"] = txtFilePrefix.Text; 

ben bir duş gerek bu kesmek sonra çok kirli hissediyorum kesmek birisi daha temiz bir yaklaşım sağlayabilir :-)

+1

+1 "kirli kesmek" için, şimdi hacker gibi hissediyorum :) –

0
+0

Eval (tek yönlü) yöntemi çalışır. Bind (iki yönlü) çalışmasını istiyorum. Ayrıca bir tekrarlayıcı kullanmıyorum, ancak bir ayrıntı görünümü. – Konrad

+0

Sanırım probleminizi muhtemelen yanlış anlıyorum. İki yönlü bağlanma diye bir şey yoktur. Denetimin değerini, .aspx sayfasında veya arkadaki kodda ayarlayabilirsiniz. Değeri geri almak için (ör. Kullanıcı girişi), kontrolün Text özelliğine erişmeniz gerekir. "SomeField" nedir. Kod arkasındaki sınıfta bir özellik mi? –

+0

TextView için DataSource üzerinde yer alan bir tablo sütunu, metin kutusu için kap olarak hizmet veren Somefield. Metin kutusunun verileri veritabanına aktarmasını sağlamakla ilgileniyorum. Bu yüzden Bind kullanmam gerek. Bu gerçekten basit. Bunun dışında, codebehind'den kolayca erişilebilir gibi görünmemektedir. <% # Bind kullanarak (evet, ancak kod olarak kolay değil ... – Konrad