2011-12-12 4 views
9

मैं एक एएसपी के चयनित आइटम प्राप्त करने का प्रयास कर रहा हूं: Listbox नियंत्रण और उन्हें अल्पविराम सीमांकित स्ट्रिंग में डाल दें। ऐसा करने का एक आसान तरीका होना चाहिए:एएसपी: ListBox चयनित आइटम प्राप्त करें - एक लाइनर?

foreach (ListItem listItem in lbAppGroup.Items) 
{ 
    if (listItem.Selected == true) 
    { 
     Trace.Warn("Selected Item", listItem.Value); 
    } 
} 

क्या यह एक पंक्ति में लाने का कोई तरीका है? मेरे छद्म कोड की तरह यहां:

string values = myListBox.SelectedItems; 

मैं एएसपी.नेट और सी # 3.5 का उपयोग कर रहा हूं।

किसी भी मदद के लिए धन्यवाद !!

उत्तर

14

का प्रयोग LINQ:

string values = String.Join(", ", lbAppGroup.Items.Cast<ListItem>() 
                .Where(i => i.Selected) 
                .Select(i => i.Value)); 
+0

हैलो, यह बहुत अच्छा है। मैं इसे काम करने की कोशिश कर रहा हूं और मुझे यह समस्या मिलती है: 'System.Web.UI.WebControls.ListItemCollection' में 'कहां' की परिभाषा नहीं है और कोई एक्सटेंशन विधि 'कहां' प्रकार के पहले तर्क को स्वीकार नहीं करती है ' System.Web.UI.WebControls.ListItemCollection 'पाया जा सकता है (क्या आप एक प्रयोग निर्देश या असेंबली संदर्भ खो रहे हैं?) मेरे पास मेरे उपयोग कथन में LINQ है। – Jared

+0

@ user993514 मैं 'ListItem' पर कलाकार को भूल गया, कोशिश करें। – James

+0

बिल्कुल सही LINQ दिन बचाता है। आपकी सहायता के लिए बहुत - बहुत धन्यवाद। – Jared

4

मुझे नहीं लगता कि में बनाया गया कुछ भी नहीं है, लेकिन आप कुछ इस तरह कर सकता है:

:

<asp:ListBox runat="server" ID="listBox" SelectionMode="Multiple"> 
    <asp:ListItem Selected="True" Text="text1" Value="value1"></asp:ListItem> 
    <asp:ListItem Selected="false" Text="text2" Value="value2"></asp:ListItem> 
    <asp:ListItem Selected="True" Text="text3" Value="value3"></asp:ListItem> 
    <asp:ListItem Selected="True" Text="text4" Value="value4"></asp:ListItem> 
</asp:ListBox> 

    IEnumerable<string> selectedValues = from item in listBox.Items.Cast<ListItem>() 
              where item.Selected 
              select item.Text; 

     string s = string.Join(",", selectedValues); 
1

असल में वहाँ कुछ में बनाया गया है ListBox.getSelectedItems

http://msdn.microsoft.com/en-us/library/aa297606(v=vs.60).aspx

+1

क्या यह विन फॉर्म के लिए है? मुझे एएसपी.NET – Jared

+0

में ऐसा प्रतीत नहीं होता है यह एक एएसपी.NET प्रश्न है। –

+0

हां, मेरी गलती। मेरा विकास पीसी यहां नहीं है इसलिए मैंने लिंक को बहुत जल्दी जोड़ा। हालांकि ListBox.GetSelectedIndices है। मैंने सोचा कि यह प्राप्त किया गया था चयनित ... – Pleun

2
var selectedQuery = listBox.Items.Cast<ListItem>().Where(item => item.Selected); 
string selectedItems = String.Join(",", selectedQuery).TrimEnd(); 
+0

'.TrimEnd()' यहां अनावश्यक लगता है। यदि आप स्ट्रिंग से व्हाइटस्पेस को हटाना चाहते हैं, तो आपको प्रत्येक आइटम पर पहली पंक्ति में उस ऑपरेशन को IMHO करना चाहिए। –

+0

पहली क्वेरी एक स्ट्रिंग को पुनर्प्राप्त नहीं करता है –