2012-12-20 12 views
6

पर एक वर्ग सेट करने के लिए प्रस्तुत करें मेरे पास एक चेकबॉक्स लॉस्ट (फ्रेमवर्क संस्करण 4) है, RepeatLayout UnOrderedList पर सेट है। मैं कुछ क्लाइंट साइड कोडिंग और स्टाइल को सरल बनाने के लिए प्रत्येक LI पर एक कक्षा उत्पन्न करना चाहता हूं, हालांकि, मुझे यह नहीं मिल रहा है।कस्टम रेंडरबॉक्स आइटम को LI

मैं इस प्रकार RenderItem विधि ओवरराइड:

protected override void RenderItem(ListItemType itemType, int repeatIndex, RepeatInfo repeatInfo, HtmlTextWriter writer) 
{ 
    ListItem item = Items[repeatIndex]; 
    String id = ClientID + "_" + repeatIndex.ToString(); 
    String name = UniqueID + "$" + repeatIndex.ToString(); 

    writer.Write(@"<li class='{0}'>", "tcsdrp_day" + (item.Selected ? " selected" : "")); 
    writer.Write(@"<input id='{0}' type='checkbox' name='{1}' value='{2}'>", new object[] { id, name, item.Value }); 
    writer.Write(@"<label for='{0}'>{1}</label>", new object[] { id, item.Text }); 
    writer.Write(@"</li>"); 
} 

हालांकि, मैं, उत्पन्न खाली फूल का भार मिल इतनी स्पष्ट रूप से वे फोन करने वाले में कहीं और गाया जा रहा है, या, और मैं के लिए नहीं कर सकते हैं मेरा जीवन कहां काम करता है।

सूची के लिए कक्षा को जोड़कर अब इसके आसपास मिल गया, लेकिन यह एक अतिरिक्त स्पैन बनाता है जिसे मैं आदर्श रूप से खोना चाहता हूं।

क्या ऐसा करने का कोई अच्छा तरीका है?

संपादित करें: यह एक कट डाउन डेमो है; अंतिम संस्करण में मूल डेटा आइटम गुणों के आधार पर अलग-अलग कक्षाएं उत्पन्न करने के लिए तर्क होगा, यदि कोई सोच रहा है कि मुझे कक्षा को जोड़ने की आवश्यकता क्यों है।

संपादित करें 2: मैं अब RenderItem बदलकर मार्कअप सरल बनाने लेबल रैपिंग-इनपुट शैली का उपयोग करने की मेरी तत्काल समस्या को हल मिल गया है:

writer.Write(@"<label class='{0}'>", labelclass); 
writer.Write(@"<input id='{0}' type='checkbox' name='{1}' value='{2}'{3}>", new object[] { id, name, item.Value, item.Selected ? " checked" : "" }); 
writer.Write(item.Text); 
writer.Write(@"</label>"); 

मैं अभी भी अगर जानना चाहते हैं हालांकि आइटम प्रतिपादन को पूरी तरह से अनुकूलित करने का कोई तरीका है।

उत्तर

1

पूर्वप्रस्तुत घटना में, आइटम-संग्रह के माध्यम से पुनरावृति, और वर्गों आवंटित के रूप में आप की जरूरत है:

For Each l As ListItem In Items 
    If l.Value = "1" Then 
    l.Attributes.Add("class", "myClass") 
    End If 
Next l 
संबंधित मुद्दे