(नीचे पोस्ट के नीचे करने के लिए समाधान खोजने के लिए स्क्रॉल करें।)DropdownList.selectedIndex हमेशा 0 (हाँ, मैं क्या ज़रूरत है! IsPostBack)
जो एक Datalist शामिल एक asp.net पृष्ठ मिल गया। इस डेटालिस्ट के अंदर, एक टेम्पलेट है जिसमें ड्रॉपडाउनलिस्ट है और प्रत्येक बार डेटालिस्ट किसी आइटम से भरा हुआ है, आइटमक्रेटेड कमांड कहा जाता है। आइटमक्रेटेड कमांड ड्रॉपडाउन सूची को डेटाबेस करने के लिए ज़िम्मेदार है।
मुझे लगता है कि समस्या यहाँ है, कि मैं को ItemCreatedCommand उपयोग कर रहा हूँ पॉप्युलेट - लेकिन विचित्र बातें कि अगर मैं रंग "हरी" चुनते हैं, पेज autopostback जाएगा, और मैं देखेंगे कि लटकती हरे रंग पर अभी भी है, लेकिन जब उपयोग करने के लिए यह SelectedIndex है की कोशिश कर रहा, मैं हमेशा 0 मिलता है ...
protected void DataListProducts_ItemCreatedCommand(object
source, DataListItemEventArgs e)
var itemId = (String)DataListProducts.DataKeys[e.Item.ItemIndex];
var item = itemBLL.GetFullItem(itemId);
var DropDownListColor = (DropDownList)e.Item.FindControl("DropDownListColor");
//Also tried with :
//if(!isPostBack) {
DropDownListColor.DataSource = item.ColorList;
DropDownList.Color.Databind();
// } End !isPostBack)
Label1.test = DropDownListColor.SelectedIndex.toString();
// <- THIS IS ALWAYS 0! *grr*
मैं नीचे कोड देखने के लिए थोड़ा संकुचित है, लेकिन अभी भी आप देख सकते हैं कि मैं कोशिश कर रहा हूं करने के लिए :) :) का कारण मैं यह क्यों कर रहा हूं, और रंगों के लिए डेटासोर्स सीधे i aspx-page घोषित नहीं करता है, यह है कि मुझे परीक्षण (शोकोल्टर) चलाने की आवश्यकता है, लेकिन मैं नहीं करता कोड के साथ एचटीएमएल पेज को अव्यवस्थित करने के लिए चाहते हैं कि मुझे लगता है कि कोड कोड-फ़ाइल में होना चाहिए।
संपादित करें: SelectedIndexChange को बदलने की कोशिश के बाद - मैं कैसे DataList अंदर तत्वों को बदलने के लिए कर रहा हूँ - अब मैं अपने सिर में एक "तार्किक" भ्रम की स्थिति आ रही है? चूंकि, जहां तक मुझे पता है - I में की जांच करने का कोई तरीका नहीं है, यह डाइटलिस्ट में आइटम विशेष ड्रॉपडाउनसूची से संबंधित है ... या?
या तो बुलबुला घटना के लिए:) लेकिन ऐसा करते हैं सवाल :)
समाधान पर अपने विचार पोस्ट करें, मैं कुछ तरीके आज़मा सकते हैं और क्या मैं के साथ अंत देखने के लिए जा रहा हूँ ItemCommand, या घटना संभाल, प्रेषकों माता-पिता मिल (जो एक datalistItem है और वहाँ में तत्वों में हेरफेर।
protected void DropDownListColor_SelectedIndexChanged(object sender, EventArgs e)
{
DropDownList dropDownListColor = (DropDownList)sender;
DataListItem dataListItem = (DataListItem)dropDownListColor.Parent;
var item = items[dataListItem.ItemIndex];
var color = item.ItemColor[dropDownListColor.SelectedIndex];
var LabelPrice = (Label)dataListItem.FindControl("LabelPrice");
LabelPrice.Text = color.Price;
}
आप के लिए कारण के बारे में अधिक स्पष्ट कर सकते हैं जोड़ना नहीं इसे पेज में डालना? मुझे यकीन नहीं है कि मैं सही ढंग से समझता हूं। आप कहते हैं कि आप एएसपीएक्स/एचटीएमएल को अव्यवस्थित नहीं करना चाहते हैं, लेकिन मुझे कोई कारण नहीं दिखता कि ड्रॉपडाउन को बाध्यकारी क्यों करना थोड़ा अलग होगा? –
ठीक है, ईमानदार होने के लिए, मुझे लगता है कि मैं "एचटीएमएल को अव्यवस्थित नहीं" छोड़ने जा रहा हूं, क्योंकि मैं घंटों तक घूम रहा हूं, और ऐसा लगता है कि मुझे जो चाहिए वह कोई आसान कार्यान्वयन नहीं है। लेकिन कारण कोड और डिजाइन का सख्त पृथक्करण रखना था। (अब मुझे एएसपीएक्स में एक आई-चेक जोड़ना होगा) –