मैं जो इस तरह दिखता है एसक्यूएल सर्वर में एक टेबल है से निपटने के लिए:उचित बाध्यकारी डेटा बता गया और उसके घटनाओं
ID Code Name Surname
1 MS Mike Smith
2 JD John Doe
3 UP Unknown Person
और इतने पर ...
अब मैं इस से डेटा बाध्य करने के लिए चाहते हैं कॉम्बोबॉक्स में टेबल को इस तरह से कॉम्बोबॉक्स में मैंने कोड कॉलम से मूल्य प्रदर्शित किया है।
मैं इस तरह से बाध्यकारी कर रहा हूँ:
SqlDataAdapter sqlAdapter = new SqlDataAdapter("SELECT * FROM dbo.Users ORDER BY Code", MainConnection);
sqlAdapter.Fill(dsUsers, "Users");
cbxUsers.DataSource = dsUsers.Tables["Users"];
cmUsers = (CurrencyManager)cbxUsers.BindingContext[dsUsers.Tables["Users"]];
cbxUsers.DisplayMember = "Code";
और यह कोड काम करने के लिए लगता है। मैं कोडों की सूची के माध्यम से स्क्रॉल कर सकते हैं। इसके अलावा मैं हाथ से कोड लिखना शुरू कर सकता हूं और कॉम्बोबॉक्स मेरे लिए कोड स्वतः पूर्ण कर देगा।
हालांकि, मैं वर्तमान में चयनित उपयोगकर्ता कोड के नाम और उपनाम को प्रदर्शित करने के लिए combobox के शीर्ष पर एक लेबल रखना चाहता था।
कि हालांकि की तरह था की मेरी लाइन: "तो, मैं एक घटना है जो बता गया में और उस स्थिति में मैं वर्तमान DataRow मिल जाएगा कोड में परिवर्तन के बाद अप को सक्रिय कर देगा खोजने की जरूरत है ..."
मैं combobox की घटनाओं के माध्यम से ब्राउज़ कर रहा था, उनमें से कई कोशिश की लेकिन सफलता के बिना।
उदाहरण के लिए:
private void cbxUsers_SelectionChangeCommitted(object sender, EventArgs e)
{
if (cmUsers != null)
{
DataRowView drvCurrentRowView = (DataRowView)cmUsers.Current;
DataRow drCurrentRow = drvCurrentRowView.Row;
lblNameSurname.Text = Convert.ToString(drCurrentRow["Name"]) + " " + Convert.ToString(drCurrentRow["Surname"]);
}
}
यह मैं एक अजीब परिणाम देती है। सबसे पहले जब मैं माउस स्क्रॉल के माध्यम से स्क्रॉल करता हूं तो यह मुझे उस पंक्ति को वापस नहीं करता है जिसे मैं प्राप्त करने की उम्मीद कर रहा हूं। उदाहरण के लिए जेडी पर यह मुझे "माइक स्मिथ" दिखाता है, एमएस पर यह मुझे "जॉन डो" दिखाता है और यूपी पर यह मुझे "माइक स्मिथ" दिखाता है! दूसरी समस्या यह है कि जब मैं कॉम्बोबॉक्स में टाइप करना शुरू करता हूं और एंटर दबाता हूं तो यह ईवेंट को ट्रिगर नहीं करता है।
हालांकि, सब कुछ उम्मीद के रूप में जब मैं इस तरह से lblNameSurname.Text करने के लिए डेटा बाँध काम करता है:
lblNameSurname.DataBindings.Add("Text", dsusers.Tables["Users"], "Name");
समस्या यहाँ है कि मैं केवल एक स्तंभ बाध्य कर सकते हैं और मैं दो करना चाहते हैं। मैं इसके लिए दो लेबल का उपयोग नहीं करना चाहता (एक नाम प्रदर्शित करने के लिए और अन्य उपनाम प्रदर्शित करने के लिए)।
तो, मेरी समस्या का समाधान क्या है?
इसके अलावा, मेरे पास कॉम्बोबॉक्स में डेटा चयन से संबंधित एक प्रश्न है। अब, जब मैं combobox में कुछ टाइप करता हूं तो यह मुझे उन अक्षरों को टाइप करने की अनुमति देता है जो सूची में मौजूद नहीं हैं। उदाहरण के लिए, मैं "जे" टाइप करना शुरू करता हूं और "डी" के साथ खत्म करने के बजाय, "मेरे पास" जेडी "होगा, मैं" Jsomerandomtexthere "टाइप करता हूं। Combobox इसकी अनुमति देगा लेकिन इस तरह की आइटम सूची में मौजूद नहीं है। दूसरे शब्दों में, मैं कंबोबॉक्स को उपयोगकर्ता को टाइपिंग कोड से रोकने के लिए चाहता हूं जो कोड की सूची में नहीं है।
आपकी रुचि के लिए धन्यवाद, मैं एक बार फिर से इस मुद्दे को देखूंगा। – Wodzu
आपको सही था। आपने मुझे इसके बारे में एक बार फिर से सोचने के लिए बनाया है और मैंने एक बाध्यकारी स्रोत जोड़ा है (जो मुद्रा प्रबंधक को दिखाता है) घटनाएं। उनके माध्यम से मैं कार्य पूरा करने में सक्षम हूं। – Wodzu