2009-09-15 4 views
6

Asp.net की बाइंड() विधि का उपयोग करके, मैं ऑब्जेक्ट से कैसे जुड़ूं, इसकी किसी भी संपत्ति में से कोई नहीं?अपने आप को ऑब्जेक्ट से बांधें, इसकी गुणों में से कोई नहीं

+1

अधिक स्पष्ट रूप से वास्तव में आप के लिए बाध्य करना चाहते हैं निर्दिष्ट करें। सूची नियंत्रण के लिए ... ?? – Juri

+0

मैं एक व्यूव्यू नियंत्रण में किसी ऑब्जेक्ट पर बाध्यकारी हूं। फॉर्म व्यू के अंदर मेरे पास UserControl है जो उस प्रकार की संपत्ति को परिभाषित करता है जो कि बाध्यकारी प्रकार है। उदाहरण के लिए, नाम नामक एक वर्ग की कल्पना करें जो दो गुणों, फर्स्टनाम और अंतिम नाम को परिभाषित करता है। नाम वर्ग का एक उदाहरण FormView से जुड़ा हुआ है। मैं बाइंड ("फर्स्टनाम") और बाइंड ("लास्टनाम") को कॉल करके अपने उपयोगकर्ता नियंत्रण में फर्स्टनाम या लास्टनाम को पास नहीं करना चाहता हूं, मैं नाम उपयोगकर्ता को अपने उपयोगकर्ता नियंत्रण में पास करना चाहता हूं। – Ryan

उत्तर

2

मैंने स्व-संदर्भ नामक एक संपत्ति जोड़कर इसके आसपास काम करना समाप्त कर दिया जो बस this लौटाता है। अगर कोई इसे पढ़ता है और एक बेहतर समाधान है, तो मैं इसे सुनना चाहता हूं।

1

मुझे यकीन नहीं है कि आप वास्तव में क्या बांधना चाहते हैं। उदाहरण के लिए ड्रॉपडाउन नियंत्रण कहें, एकमात्र चीज जो मुझे इस समय समझ में आती है, कुछ यूआई नियंत्रण से जुड़ना है।

आमतौर पर मूल्य के लिए कुछ पाठ गुण प्रदर्शित किए जाते हैं और पहचानकर्ता के रूप में कार्य करने के लिए वास्तविक मान के लिए गुण गुण होते हैं। ड्रापडाउन पर

  • DataTextField
  • DataValueField

वहाँ आपके द्वारा निर्दिष्ट DataTextField = "Firstname" और DataValueField = "Id" दिया आप एक वस्तु के गुण "प्रथम" और "आईडी" है कि है।

सूचियों पर आप अपने ASPX कोड पर सीधे Eval समारोह का उपयोग कर सकते हैं या आप सूची टेम्पलेट के अंदर सर्वर साइड नियंत्रण (अर्थात Literals, लेबल) जोड़ सकते हैं और ItemDataBound घटना (पुनरावर्तक उदाहरण के रूप में ले रही है) को लागू। Here's एक अच्छा उदाहरण है जो इसे आगे दिखाता है।

आशा मैं एक छोटे से मदद करने में सक्षम था;)

2

मुझे लगता है कि रयान यहाँ की तरह आप इस

public class Person 
{ 
    public string FirstName { get; set; } 
    public string LastName { get; set; } 
} 

की तरह एक वस्तु के लिए है और अगर क्या मतलब है कि आप GridView में कहीं भी Person वस्तु बाध्य करता है, तो या किसी भी डेटासोर्स को दोहराएं, आप केवल व्यक्ति को बांधते हैं और इसे इसके गुणों में से एक से डिफ़ॉल्ट बाइंड मान मिलता है। समर्थन हम एक चर PersonRyan से प्रकार इतना है मैं <%# Eval("Ryan") %> कॉल करने से चर मूल्य प्राप्त करना चाहते हैं नहीं <%# Eval("Ryan.FirstName") %>

मैं कक्षा के लिए एक विशेषता DefaultBindingProperty डालने की कोशिश की, लेकिन यह काम नहीं कर रहा

[System.ComponentModel.DefaultBindingProperty("FirstName")] 
public class Person 
{ 
    public string FirstName { get; set; } 
    public string LastName { get; set; } 
} 

तो करता है कोई भी जानता है कि इसे ठीक से कैसे किया जाए?

+0

हाँ। मैं वस्तु को बांधना चाहता हूं, इसकी संपत्तियों में से एक नहीं। – Ryan

0

मैंने किसी भी तरह से एक तरीका निकाला। वास्तव में यह है "http://msdn.microsoft.com/en-us/library/ms752347.aspx"

ListBox ItemsSource="{**Binding**}" IsSynchronizedWithCurrentItem="true"/> 

ध्यान दें कि हालांकि हम पर बल दिया है कि मूल्य के लिए पथ एक बाध्यकारी के चार आवश्यक घटकों में से एक है का उपयोग करने के परिदृश्यों जो आप एक पूरे करने के लिए बाध्य करना चाहते हैं ऑब्जेक्ट, उपयोग करने के लिए मूल्य बाध्यकारी स्रोत ऑब्जेक्ट के समान होगा। उन मामलों में, यह पथ निर्दिष्ट नहीं करने के लिए लागू है। निम्न उदाहरण पर विचार करें:

XAML कॉपी

1

आप Container.DataItem बजाय का उपयोग हो सकता है: Item='<%# Container.DataItem %>'

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