2013-04-09 11 views
5
class User() { 
    public List<Customer> Customers; 
} 

class Customer() { 
    public long Id; 
    public string Name; 
} 

से बहु-चयन सूची प्रदर्शित करने के लिए मैं पॉप्युलेट चयनित आइटमसूची <MyObject>

User MyUser = new User(); 
MyUser.Customers = db.Customers.Where(...).ToList(); 

मैं इस तरह से

ViewBag.Customers = db.Customers.OrderBy(c => c.Name).ToList(); 

मेरे विचार में मैं चाहता हूँ में सभी आइटमों की सूची पारित इसे चुनने के रूप में सभी (ViewBag.Customers) तत्वों और (MyUser.Customers) के साथ एक बहु-चयन HTML तत्व की तरह प्रदर्शित करने के लिए। मैं

@model MySCL.Models.User 

@Html.ListBoxFor(m => m.Customers, new MultiSelectList(ViewBag.Customers, "Id", "Name"), new {Multiple = "multiple", size = "5" }) 

साथ की कोशिश की लेकिन यह किसी भी आइटम का चयन बिना ही पूरी सूची प्रदर्शित करते हैं। क्या यह करने का सबसे अच्छा अभ्यास है? क्या कोई और बेहतर तरीका है? ग्राहक की एक सूची के बजाय यदि मेरे पास स्ट्रिंग की सूची थी तो मैं इसे कैसे कर सकता हूं?

+1

रिक एंडरसन की चाल पता http://www.asp.net/mvc/tutorials/javascript/working-with-the-dropdownlist-box-and-jquery/using-the-dropdownlist-helper-with -aspnet-mvc – Komengem

उत्तर

1

MultiSelectList constructor भी मदों की एक IEnumerable सूची लेता है, का चयन किया जाना इसलिए यदि आप करने के लिए अपने कोड बदलने के लिए: सूची फिर चयनित सभी ग्राहक के आइटम के साथ शुरू कर देना चाहिए

new MultiSelectList(ViewBag.Customers, "Id", "Name", Model.Customers) 

+0

मैं अपनी सूची में सभी आइटम (ViewBag.Customers जिसमें सभी ग्राहक शामिल हैं) से शुरू करना चाहता हूं और (MyUser.Customers जो ViewBag.Customers का सबसेट है) चयनित के रूप में। – whiteproud

+0

फिर चौथा पैरामीटर मॉडल बन जाता है। ग्राहक। –

1

मैंने 4 वें पैरामीटर को int या स्ट्रिंग की सूची के रूप में ऑब्जेक्ट की एकमात्र कुंजी के साथ पारित करके हल किया है, न कि ऑब्जेक्ट्स की सूची।

new MultiSelectList(ViewBag.Customers, "Id", "Name", Model.Customers.Select(c => c.Id)) 
संबंधित मुद्दे