2010-07-21 13 views
7

के लिए चयनित वैल्यू को भी अपडेट करता है मेरे पास एक वेबफॉर्म पेज है जिसमें दो ड्रॉपडाउनलिस्ट नियंत्रण हैं जिनमें दोनों में 60-80 डिग्री से तापमान की एक श्रृंखला होती है, एक दूसरे को शीतलन के लिए गर्म करने के लिए। वे के रूप में .aspx घोषित किये गए हैं:एक ड्रॉपडाउनलिस्ट के लिए चयनित वैल्यू सेट करना अन्य ड्रॉपडाउनलिस्ट

<asp:DropDownList ID="heating" runat="server" /> 
<asp:DropDownList ID="cooling" runat="server" /> 

प्रत्येक सूची के लिए मूल्यों में भर जाती है कोड-पीछे का उपयोग कर:

for(int i = 60; i <= 80; i++) 
{ 
    var listItem = new ListItem(i + " degrees", i.ToString()); 

    heating.Items.Add(listItem); 
    cooling.Items.Add(listItem); 
} 

जब मैं का उपयोग कर प्रत्येक DropDownList के लिए चयनित मान सेट करने का प्रयास का उपयोग कर डेटाबेस से लोड डेटा वाली एक वस्तु में मान:

heating.SelectedValue = myHome.avgHeatingTemp.ToString(); 
cooling.SelectedValue = myHome.avgCoolingTemp.ToString(); 

SelectedValue दोनों सूचियों के लिए myHome.av में मूल्य के लिए myHome.avgHeatingTemp में मूल्य के लिए पहला सेट है, तो gCoolingTemp। मुझे नहीं पता कि यह क्यों हो रहा है या इसे कैसे ठीक किया जाए।

Heres क्या मूल्यों SelectedValues ​​स्थापित करने की प्रक्रिया के प्रत्येक चरण के बाद हर चर के लिए कर रहे हैं:

Initial State 
    heating.SelectedValue: 60 
    cooling.SelectedValue: 60 
    myHome.avgHeatingTemp: 72 
    myHome.avgCoolingTemp: 75 

After setting heating.SelectedValue 
    heating.SelectedValue: 72 
    cooling.SelectedValue: 72 
    myHome.avgHeatingTemp: 72 
    myHome.avgCoolingTemp: 75 

After setting cooling.SelectedValue 
    heating.SelectedValue: 75 
    cooling.SelectedValue: 75 
    myHome.avgHeatingTemp: 72 
    myHome.avgCoolingTemp: 75 

उत्तर

7

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

for(int i = 60; i <= 80; i++) 
{ 
    var listItem1 = new ListItem(i + " degrees", i.ToString()); 
    var listItem2 = new ListItem(i + " degrees", i.ToString()); 

    heating.Items.Add(listItem1); 
    cooling.Items.Add(listItem2); 
} 

यह इसलिए होता है क्योंकि ListItem अपने आप में एक Selected संपत्ति है। जब आप इसे एक के लिए सेट करते हैं, तो आप इसे दूसरे के लिए भी सेट करते हैं।

+0

+1 मुझे इसे मारो। – womp

+0

धन्यवाद, यह काम किया। यह समस्या के बारे में मेरा पहला विचार भी था और मैंने सोचा कि मैंने कोशिश की है और यह काम नहीं किया है ... मैं इसे पर्याप्त कैफीन और कम खर्च करने के कारण वेबफॉर्म कौशल को कम करने के लिए श्रेय दूंगा एमवीसी के साथ काम करने में समय की बढ़ती मात्रा (जिसे मैं बुरी चीज नहीं मानता)। – Hamman359

+0

निश्चित रूप से नहीं। यह स्थिति निश्चित रूप से अनजान है। – EndangeredMassa

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