2009-05-21 20 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) 
      }; 
} 

上記をビューに戻し、DropDownListを設定します。上記のlinq結果にデフォルトのSelectListItem (0, "Please Select..")を追加して、ビューに返すようにしたいと思います。これは可能ですか?デフォルトのSelectListItemを追加する

答えて

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

あなたはASP.NET MVCを使用しているとして、あなたはHtmlHelperののDropDownField方法のoptionLabelパラメータの値を指定することで、ビューでこれを行うことができます - 例えば:

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

このタイプのコードをUIレイヤに配置する方が、データレイヤに配置するよりもおそらく適切です。これを行う1つの欠点は、選択ボックスに空の文字列値があり、「1つを選択」オプションの「0」ではなく、実際には問題ではないということです。コントローラアクションメソッドは、関連するパラメータに対してnull可能なintを受け入れることができます。

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

+1;シンプルでそれは動作します:) – Dan

+0

これは私が探していた答えでした。 –

0

私が行ったことは、XMLファイルから自分の値をIListに読み込んだことです。次に、位置0のIListに新しいレコードを挿入しました。次に、IListから選択リストを作成します。

のIList < MY_DATA> myXML.DescendantsにおけるTMPからMYDATA =(( "R")。ToListメソッド()

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

mydata.Insert(0、新しいMy_DATA(){NR = "" 、NA)}は "--ClickはSelect--する" =;

SelectListのマイリスト=新しいSelectListの(MYDATA、 "NR"、 "NA");

0

はfirtリストにあなたのデフォルト値を入れます

list.add(デフォルトのリスト項目)

、その後、私は多くの質問を見直し、と私は私が見つかりません後list.addrange(LINQ選択クエリ)

歓声

0

を行います私は探しています。私は単純な落ち込みをするために多くのコード行を必要としません。だから私はあなたと私が使いたいものを簡単にシンプルに共有したいと思っています。(特に、Entity Frameworkを使いたくない場合は..

System.Webを使用しています。Mvc;例については

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

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

で表示追加:

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

これは単なるWebページのframworkを使用している人々のためにあるコントローラアドオンで

(ないカミソリV2とC#でのMVCとWebフォームは)、あなたは

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

注意を行う必要があります。真ん中のパラメータである必要がOptionalLabel。

等価リストデータにSelectListitemを追加し、次のようになります。ちょうどビューでこれをやった

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) 
関連する問題