2012-07-07 8 views
13

मैं डालने के लिए है के बाद शीर्ष पर "चुनें" के बाद बता गया dataset.i से बाध्य है this की कोशिश की लेकिन यह working.Throws त्रुटि नहीं है "डाटासेट किसी भी नहीं है कास्ट के लिए परिभाषा "मुझे लगता है कि मैं इसे ठीक से उपयोग नहीं कर रहा हूं। टिप्पणी कोड वह हिस्सा है जिसकी मैंने कोशिश की लेकिन काम नहीं कर रहा था।डालने आइटम ग # में एक डेटासेट से यह बाध्यकारी

cmbCategory.DataSource = dsCat.Tables[0]; 
cmbCategory.DisplayMember = "CategoryName"; 
cmbCategory.ValueMember = "ID"; 
// cmbCategory.Items.Add("Select"); 
// cmbCategory.SelectedText = "Select"; 
// cmbCategory.DataSource =(new object[] { "Select" }).Concat(this.liveReportingDalc.GetCategoriesByType(CategoryType.RegistrationType).Cast<object>()); 

उत्तर

20

आपको उस ऑब्जेक्ट को सम्मिलित करना होगा जो आप कोम्बोबॉक्स के बजाए डाटाबेसिंग कर रहे हैं। आप सीधे combobox में सम्मिलित नहीं कर सकते हैं।

आप इस का उपयोग कर सकते हैं:

DataTable dt = new DataTable(); 

dt.Columns.Add("ID", typeof(int)); 
dt.Columns.Add("CategoryName"); 

cmbCategory.DisplayMember = "CategoryName"; 
cmbCategory.ValueMember = "ID"; 
cmbCategory.DataSource = dt; 

DataRow dr = dt.NewRow(); 
dr["CategoryName"] = "Select"; 
dr["ID"] = 0; 

dt.Rows.InsertAt(dr, 0); 
cmbCategory.SelectedIndex = 0; 

यह बहुत सीधे आगे उदाहरण है।

+0

मैंने आपके सुझाए गए तरीके की कोशिश की लेकिन मुझे त्रुटि मिल रही है जो कहती है कि 'कोड' नामक एक कॉलम पहले से ही इस डेटाटेबल से संबंधित है। – sam

6

आप एक ComboBox करने के लिए आइटम एक डेटा स्रोत के लिए यह बाध्यकारी के बाद नहीं जोड़ सकते। एक बाध्य डेटा स्रोत के साथ ComboBox से आइटम जोड़ने या निकालने के लिए, आपको इसे डेटा स्रोत के माध्यम से करना होगा।

आप अपनी तालिका में DataRow डाल सकते हैं और इसे स्वचालित रूप से आपके ComboBox में जोड़ा जाएगा। निम्न का प्रयास करें:

DataRow dr = dsCat.Tables[0].NewRow(); 
dr["CategoryName"] = "Select"; 
dr["ID"] = 123;// Some ID 
dsCat.Tables[0].Rows.Add(dr); 
+0

dsCat.Tables से जोड़ें विधि [0]। जोड़ें (डॉ); काम नहीं कर रहा। – abramlimpin

+0

@abramlimpin आपको तालिका की पंक्तियों पर संपत्ति को कॉल करना होगा। मैंने उस अद्यतन के साथ कोड संपादित किया है – user

0
// cmbCategory.DataSource =(new object[] { "Select" }).Concat(this.liveReportingDalc.GetCategoriesByType(CategoryType.RegistrationType).Cast<object>()); 

आप ऐसा करने में सक्षम हो सकते हैं, लेकिन आपका वाक्यविन्यास किसी भी तरह गलत है।

हो सकता है कि आप इसे तब तक विभाजित कर सकें जब तक कि आप इसे समझ न लें और फिर इसे ऑनलाइन फ़ंक्शन में संपीड़ित करें।

List <object> catData = new List <object> { "Select" }; 

DataSet catByType = this.liveReportingDalc.GetCategoriesByType(CategoryType.RegistrationType); 

foreach(DataRow oRow in catByType.Tables[0].Rows) 
{ catData.Add(oRow.ItemArray[0]); } 

लेकिन इसके लिए आप डेटा GetCategoriesByType समारोह से वापस आ रहा की अपनी समझ को मजबूत करने की जरूरत है काम करने के लिए। क्या वस्तुएं "चयन करें" जैसी टेक्स्ट होंगी?

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