/ / बाइंडिंग डिक्शनरी टू डाटाग्रिड्यू - सी #, डेटा-बाइंडिंग, डाटाग्रिड्यू

बाइंडिंग डिक्शनरी टू डाटाग्रिडव्यू - सी #, डेटा बाइंडिंग, डाटाग्रिडव्यू

मैं एक शब्दकोश को डेटाग्रिडव्यू में बाँधना चाहता था। दुर्भाग्य से शब्दकोश आवश्यक इंटरफ़ेस को लागू नहीं करता है, इसलिए इसके बजाय एक सूची बनाई गई>।

अनिवार्य रूप से मैं चाहता हूं कि यह डेटाग्रेडव्यूकॉम्बोक्सॉक्लेम्स के साथ डेटाग्रेडव्यू के लिए बाध्य हो। स्तंभ 1 के साथ कुंजी और स्तंभ 2 मान को पकड़े हुए।

मैंने "विविधताओं का भार उठाने की कोशिश की है, लेकिन मैं यह अधिकार प्राप्त कर सकता हूं।" मैंने स्तंभों पर, अलग-अलग कक्षों में और स्वयं ही डेटाग्रिडव्यू से जुड़ने का प्रयास किया है। क्या कोई जानता है कि यह कैसे करना है?

संपादित करें: यह स्पष्ट करने के लिए कि वस्तु के लिए बाध्य नहीं है कि समस्या है। यह सूची ठीक करने के लिए बाध्यकारी है, उदाहरण के लिए, यदि मेरे पास सूची में 4 आइटम हैं, तो 4 पंक्तियों को जोड़ा जाता है, हालांकि मान रिक्त हैं। यह उदाहरण कोड है:

additionalMetadata1.dataGridView1.DataSource = animal.AdditionalMetaData;

foreach (DataGridViewRow row in additionalMetadata1.dataGridView1.Rows)
{
DataGridViewCustomComboCell cell = row.Cells[0] as DataGridViewCustomComboCell;
cell.DataSource = animal.AdditionalMetaData;

((DataGridViewCustomComboColumn)additionalMetadata1.dataGridView1.Columns[0]).DisplayMember = "Key";

((DataGridViewCustomComboColumn)additionalMetadata1.dataGridView1.Columns[0]).ValueMember = "Key";

((DataGridViewCustomComboColumn)additionalMetadata1.dataGridView1.Columns[0]).DataPropertyName = "Key";
}

धन्यवाद।

उत्तर:

उत्तर № 1 के लिए 4

आप निम्नलिखित Linq के साथ अपने शब्दकोश का उपयोग कर सकते हैं:

 dataGridView.DataSource =  (from d in dictionary
orderby d.Value
select new
{
d.Key,
d.Value
}).ToList();

यह एक अनाम ऑब्जेक्ट बनाएगा जो आपकी कुंजी और मान को गुणों के रूप में रखेगा। ध्यान रखें कि डिक्शनरी किसी विशेष क्रम में डिफ़ॉल्ट रूप से नहीं है।