साथ मैं गतिशील इस तरह एक combobox बनाने हूँ:सी # सेट कॉम्बो आइटम selectedValue
public Control GenerateList(Question question)
{
// Get a list with answer possibilities
List<QuestionAnswer> answers = question.GetAnswers();
// Get a collection of given answers
Collection<QuestionnaireAnswer> givenAnswers = question.GetFilledAnswers();
ComboBox cmb = new ComboBox();
cmb.Name = "cmb";
cmb.DataSource = answers;
cmb.DisplayMember = "Answer";
cmb.ValueMember = "Id";
// Check an answer is given to the question
if (givenAnswers != null && givenAnswers.Count > 0)
{
cmb.SelectedValue = givenAnswers[0].AnswerId;
}
cmb.DropDownStyle = ComboBoxStyle.DropDownList;
cmb.SelectedIndexChanged += new EventHandler(cmb_SelectedIndexChanged);
cmb.Leave += new EventHandler(cmb_Leave);
return cmb;
}
समस्या यह है, जब क्रियान्वित cmb.SelectedValue = givenAnswers[0].AnswerId;
cmb.SelectedValue हमेशा रिक्त है।
जब डीबगिंग और मैं answers
(डेटासोर्स) का पता लगाता हूं तो मुझे लगता है कि आईडी (ValueMember) उत्तर आईडी (अगर कथन में) जैसा सटीक है। दोनों के पास एक ही प्रकार (लंबा) और एक ही मान है, लेकिन चयनित वैल्यू शून्य रहता है।
क्या ऐसा कुछ है जो मुझे नहीं दिखाई देता है?
संपादित करें:
ऐसा लगता है कि बता गया खाली रहता है की तरह। जब मैं cmb.SelectedValue = givenAnswers[0].AnswerId;
को cmb.SelectedIndex = 0;
के साथ प्रतिस्थापित करता हूं तो मुझे एक ArgumentOutOfRangeException मिलता है। यह जबकि उत्तर संग्रह गिनती 2 है। तो डेटास्रोत शून्य नहीं है ... बहुत स्ट्रेज हुह?
समाधान:
SelectedValue, SelectedIndex, SelectedItem गुण जब तक नियंत्रण रूप में जोड़ा जाता सेट नहीं किया जा सकता है। नियंत्रण में नियंत्रण जोड़ने के बाद, चयनित वैल्यू, -इंडेक्स और -इटम गुण सेट किए जा सकते हैं।
प्रश्नअनवेयर एक उप-वर्ग है। बेस क्लास में आईडी और उत्तर गुण होते हैं, जो दोनों गेटटर और सेटर के साथ सार्वजनिक होते हैं। – Martijn