2010-05-20 7 views
8

तो दो तरह से (द्वि-दिशात्मक) एएसपी में डेटा बाइंडिंग के लिए, हम ऐसा करने के पीछे बाँध ...ASP.NET डेटा दो तरह, द्वि-दिशात्मक कोड से

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

SomeField पर स्थित है विवरण दृश्य का डेटासोर्स जो टेक्स्टबॉक्स के लिए कंटेनर के रूप में कार्य करता है।

वैकल्पिक रूप से मैं से कोड-पीछे ऐसा कर सकता है (पाठ बॉक्स के OnDataBinding घटना का उपयोग कर):

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

हालांकि, EVAL केवल पढ़ने के लिए है ... मैं कैसे कोड से बाइंड (दो तरह) निर्दिष्ट कर सकते हैं -पीछे?

उत्तर

3

मैंने अपने "एज-केस" के लिए एक कार्य-आसपास खोजने में कामयाब रहा है।

मैं एलएलबीएलजेन उपप्रकारों का उपयोग कर रहा हूं और इसलिए उपयोगकर्ता द्वारा चुने गए रेडियोधटन फ़िल्टर के आधार पर विवरणदृश्य के डेटा स्रोत को स्विच करने की आवश्यकता है।

मैं <% # बाइंड (... यह काम नहीं किया का उपयोग करने में एएसपी उप प्रकार क्षेत्र "एलान के तौर पर" करने के लिए बाध्य करने की कोशिश की।

मैं "हैक" करने के लिए एक कोड-पीछे को हल करने के लिए किया था, जहां मैं सशर्त details_view पूर्व प्रस्तुत करना पद्धति का उपयोग करके DetailsView में नियंत्रण प्रदर्शित करते हैं।

प्रत्येक क्षेत्र के लिए मैं तो सशर्त सेटअप यह OnDataBinding में वन-वे (केवल पढ़ने के लिए) बाँध है ...

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

अंत में करने के लिए धक्का देने के लिए डेटा प्राप्त करें डेटा स्रोत में, मैं हैक DetailsView OnItemInserting/अद्यतन कर रहा है घटनाएँ (सशर्त रूप में अच्छी तरह) ...

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

मैं इस हैक मुझे लगता है कि मैं एक शॉवर की जरूरत के बाद इतना गंदा लग रहा है ...

मैं अभी भी आशा है कि कोई क्लीनर दृष्टिकोण प्रदान कर सकता है :-)

+1

"गंदे हैक" के लिए +1, अब मैं एक हैकर की तरह महसूस करता हूं :) –

0

क्या आपने एमएसडीएन, Walkthrough: Editing and Inserting Data in Web Pages with the DetailsView Web Server Control पर यह पृष्ठ देखा था?

+0

इवल (एक तरफा) विधि काम करता है। मैं बांधना चाहता हूं (दो-तरफा) काम करने के लिए। इसके अलावा मैं दोहराना नहीं कर रहा हूं, लेकिन एक विवरणदृश्य। – Konrad

+0

मुझे लगता है कि मैं शायद आपकी समस्या को गलत समझ रहा हूं। वास्तव में ऐसी कोई चीज नहीं है जो दो-तरफा बाध्यकारी है। आप या तो .aspx पृष्ठ या कोड-बैक में नियंत्रण का मान सेट कर सकते हैं। मूल्य वापस पाने के लिए (यानी उपयोगकर्ता इनपुट), आपको नियंत्रण की टेक्स्ट प्रॉपर्टी तक पहुंच प्राप्त करनी होगी। "कुछ फ़ील्ड" क्या है। कोड-बैक क्लास पर एक संपत्ति? –

+0

कुछ फ़ील्ड यदि विवरणव्यू के डेटासोर्स पर स्थित एक तालिका कॉलम जो टेक्स्टबॉक्स के कंटेनर के रूप में कार्य करता है। मुझे टेक्स्टबॉक्स पुश डेटा डेटाबेस में रखने में रूचि है। Thats क्यों मुझे बांध का उपयोग करने की जरूरत है। यह वास्तव में आसान है। सिवाय इसके कि यह कोडबेंड से आसानी से उपलब्ध नहीं प्रतीत होता है। <% # बाइंड का उपयोग करना (हाँ, लेकिन कोड में जितना आसान नहीं है ... – Konrad

संबंधित मुद्दे