2010-04-09 12 views
13

onDataBinding मैं एक बुनियादी DropDownList एक ObjectDataSource करने के लिए बाध्य है के दौरान अलग-अलग DropDownList आइटम (रंग, आदि) फ़ॉर्मेट करने के लिए:कैसे घटना

<asp:DropDownList ID="DropDownList1" runat="server" 
AutoPostBack="True" DataSourceID="objDataSource1" 
DataTextField="FieldName" DataValueField="FieldID" /> 

DataTable जिसमें से यह DataTextField और DataValueField मान भी प्राप्त करता है कुछ अन्य रिटर्न रिकॉर्ड के बारे में दिलचस्प जानकारी। सादगी के लिए Active = Y/N कहें।

मैं डेटासोर्स परिणामों में उस सक्रिय फ़ील्ड के आधार पर DropDownList आइटम की पृष्ठभूमि-रंग संपत्ति सेट करना चाहता हूं। इसके अलावा, मैं इसे "उसी पास में" करना चाहता हूं जैसे ड्रॉपडाउनलिस्ट डेटा से जुड़ा हुआ है। तो मेरा अनुमान है कि इसे ऑनडाटाबाउंड के दौरान होना है।

बातें मैं पहले से ही पता/करने की कोशिश की:

  1. मैं बाद में वापस और पाश DropDownList आइटम के माध्यम से जा सकते हैं। लेकिन यह छोरों को एम्बेड और DataTable पंक्तियों को फिर से दौरा शामिल होगा और यह सिर्फ अक्षम लगता GridViewRowEventArg रों ई पहुंच कर

    int row; 
    for (row = 0; row < DropDownList1.Items.Count - 1; row++) 
    { 
        [[if this row = that data row]] 
        DropDownList1.Items[row].[[DoStuffHere, etc.]] 
    } 
    
  2. हम पहले से ही GridView OnRowDataBound घटना के साथ इस तरह सामान करते हैं,। मुझे लगता है कि जो लापता प्रतीत होता है वह OnDropDownListItemBound घटना है, इसलिए बोलने के लिए।

आशा है कि मैं स्पष्ट और संक्षिप्त हूं। ऐसा लगता है कि यह आसान होना चाहिए ...

उत्तर

23

आप इसे ऑनडाटा बाइंडिंग के दौरान नहीं कर सकते क्योंकि डेटा वास्तव में अभी तक बाध्य नहीं हुआ है। आपका सबसे अच्छा शॉट (1) है, यानी, वस्तुओं के माध्यम से ऑनडाटाबाउंड और लूप का उपयोग करें।

protected void DropDownList1_DataBound(object sender, EventArgs e) 
{ 
    foreach(ListItem myItem in DropDownList1.Items) 
    { 
     //Do some things to determine the color of the item 
     //Set the item background-color like so: 
     myItem.Attributes.Add("style","background-color:#111111"); 
    } 
} 
+0

बाध्यकारी बनाम बाउंड सुधार के लिए धन्यवाद। इसे संपादित करना मुझे लगता है कि मेरा प्रश्न यह बनी हुई है कि प्रत्येक व्यक्तिगत आइटम को बाध्य करने के लिए कोई तरीका है या नहीं, जितना आप ग्रिडव्यू की व्यक्तिगत पंक्तियों के साथ कर सकते हैं। यदि ऐसी कोई चीज़ स्वयं प्रस्तुत नहीं करती है, तो मुझे लूपिन ' – LesterDove

+0

@LesterDove मिल जाएगा, जहां तक ​​मैं एमएसडीएन से बता सकता हूं, ड्रॉपडाउनलिस्ट नियंत्रण या ListItemCollection क्लास के लिए आइटमडेटाबाउंड जैसी कोई चीज़ नहीं है, जो कि आइटम है ड्रॉपडाउन सूची द्वारा। –

+1

धन्यवाद। यह मामला है, मैं पूरी तरह से नियंत्रण को बाध्य करने से बचूंगा और इसे प्रोग्रामेटिक रूप से पॉप्युलेट कर दूंगा ताकि मैं फ्लाई पर उन सशर्त tweaks कर सकूं। – LesterDove

1

मैं इस कोड का उपयोग कर रहा है और यह मेरे साथ ठीक काम कर रहा है:

DropDownList1.Items(0).Attributes.CssStyle.Add("color", "Blue"); 
DropDownList1.Items(0).Attributes.CssStyle.Add("background-color", "#eae9e9"); 
संबंधित मुद्दे