2009-05-21 28 views
15
public IEnumerable<SelectListItem> GetList(int? ID) 
{ 
     return from s in db.List 
      orderby s.Descript 
      select new SelectListItem 
      { 
       Text = s.Descript, 
       Value = s.ID.ToString(), 
       Selected = (s.ID == ID) 
      }; 
} 

Tôi trả lại phần trên để xem và điền DropDownList. Tôi muốn thêm một mặc định SelectListItem (0, "Please Select..") vào kết quả LINQ ở trên trước khi nó được trả về chế độ xem. Điều này có thể không?Thêm một mặc định SelectListItem

Trả lời

29
return new[] { new SelectListItem { Text = ... } }.Concat(
     from s in db.List 
     orderby s.Descript 
     select new SelectListItem 
     { 
      Text = s.Descript, 
      Value = s.ID.ToString(), 
      Selected = (s.ID == ID) 
     }); 
4
var list = from s in db.List 
      orderby s.Descript 
      select new SelectListItem 
      { 
       Text = s.Descript, 
       Value = s.ID.ToString(), 
       Selected = (s.ID == ID) 
      }; 

list.Insert(0, new SelectListItem { Text = "Please Select...", Value = string.Empty }); 
return list; 
21

Như bạn đang sử dụng ASP.NET MVC, bạn có thể làm điều này trong giao diện bằng cách xác định một giá trị cho tham số optionLabel của phương pháp DropDownField của HtmlHelper - ví dụ:

htmlHelper.DropDownList("customerId", selectList, "Select One"); 

Việc đặt loại mã này trong lớp giao diện người dùng của bạn có lẽ phù hợp hơn là có mã trong lớp dữ liệu. Một nhược điểm để làm điều này là hộp chọn của bạn sẽ có giá trị chuỗi rỗng, không phải là "0" cho tùy chọn 'Chọn một', nhưng đó không thực sự là vấn đề vì bạn có thể coi đây là giá trị rỗng nếu hành động điều khiển của bạn phương thức có thể chấp nhận một int vô giá cho tham số có liên quan - ví dụ

public ActionResult DoSomething(int? customerId) 
{ 
    if(customerId != null) 
    { 
    // do something with the value 
    } 
} 
+0

+1 chỉ đã làm điều này trong một cái nhìn; đơn giản và nó hoạt động :) – Dan

+0

Đây là câu trả lời tôi đang tìm kiếm. –

0

Đây là những gì tôi đã làm, tôi đọc các giá trị của mình từ một tệp XML thành một IList. Sau đó tôi chèn một bản ghi mới vào IList tại vị trí 0. Sau đó tạo một danh sách lựa chọn từ IList.

IList < MY_DATA> mydata = (từ tmp trong myXML.Descendants ("R"). ToList()

     select new MY_DATA 
         { 
         NR = tmp.Attribute("NR").Value, 
         NA = tmp.Attribute("NA").Value 
         }).ToList<MY_DATA>(); 

mydata.Insert (0, My_DATA mới() {NR = "" , NA = "--Click để Chọn liên"});

SelectList mylist = new SelectList (mydata, "NR", "NA");

0

firt đặt giá trị mặc định của bạn trong danh sách

list.add (mục danh sách của bạn mặc định)

và sau đó làm list.addrange (LINQ chọn query)

cổ vũ

0

Sau khi tôi xem xét nhiều câu hỏi, và tôi không tìm thấy những gì tôi Tôi đang tìm kiếm. Tôi không cần nhiều dòng mã để chỉ có một drowpdown đơn giản. vì vậy tôi muốn chia sẻ với bạn những gì tôi sử dụng và nó dễ dàng và đơn giản .. (đặc biệt nếu bạn không muốn sử dụng và Entity Framework ..

using System.Web.Mvc;

SelectList(IEnumerable items, string dataValueField, string dataTextField); 

Ví dụ:

trong khiển add:

SelectList slTitle = new SelectList(Query.SelectAllTitle(), "TitleID", "TitleName"); 
ViewBag.TitleSelectList = slTitle; 

trong Xem add:

@Html.DropDownList("TitleSelectList", "--please select--") 
0

này chỉ dành cho những người đang sử dụng trang web framwork (không phải MVC và biểu mẫu web) với Dao cạo V2 và C#, bạn cần làm

@Html.DropDownList("category", "Please select", listData) 

Lưu ý: OptionalLabel cần phải là thông số trung bình.

tương đương sẽ là thêm một SelectListitem dữ liệu danh sách của bạn:

var list=db.Query("select id, name from dbtable"); 
    List<SelectListItem> listData = new List<SelectListItem>(); 
    listData.Add(new SelectListItem 
    { 
     Text = "Please select", 
     Value = "", 
    }); 

    foreach(var item in list) { 
     listData.Add(new SelectListItem { 
      Text = item.Name, 
      Value = item.id, 
      Selected = isSelected 
     }); 
    } 

    @Html.DropDownList("play" , listData) 
Các vấn đề liên quan