2012-06-21 8 views
6

私のMVC3アプリケーションには、ドロップダウンリストがあります。そこにはすべての結果を表示する必要がありますが、一部の結果を無効にして、選択できないようにする必要があります。どうやってやるの?DropDownListコールバックまたはif文

これは私が今持っているものです。 が無効になっているプレーヤーを表示しないだけです。は、に設定されています。に設定されています。

@Html.DropDownListFor(m => m.Position1, Model.SelectedTeam.TeamPlayers 
        .Where(c => c.Player.Disabled == false) 
        .OrderBy(t => t.Player.Lastname) 
        .ToSelectList(m => m.FullName, m => m.PlayerId)) 

ので、出力はこのようなことはなく、単にそれらを完全に隠してしまうことにも障害者の選手を表示する別の方法がありますが、:

<select> 
    <option>Player 1</option> 
    <option disabled="disabled">Player 2</option> 
    <option>Player 3</option> 
    <option>Player 4</option> 
    <option disabled="disabled">Player 5</option> 
    <option>Player 6</option> 
</select> 

はDropDownListForであることは可能ですか?

+3

//Somewhere in the controller ... var list = yourViewModel.SelectedTeam.TeamPlayers.OrderBy(p => p.LastName).Select(new SelectListItem { Text = item.LastName, Value = item.Disabled ? "disabled" : item.PlayerId.ToString() }).ToList(); //pass it however you want, in the model or by ViewBag ViewBag.MyDropDownList = new SelectList(list, "Value", "Text"); 

そして:さんは、無効な値がそれ以外の場合は、有効なIDだ、value == "disabled"を持つことになりましょうか? – Kane

+0

Linqクエリをビューに入れないでください –

答えて

2

OK、これを行うのは難しいことです。 :)おそらく他の誰かが良いアイデアを持っています。

まず、選択リストの有効なエントリと無効なエントリを区別する必要があります。これを行うには、optionvalueまたはtextのいずれかを使用してください。ビューあなたは常に拡張メソッドを使用して、独自のを書くことができ

@Html.DropDownListFor(model => model.Position1, ViewBag.MyDropDownList as SelectList); 
$(document).ready(function() 
{ 
    $(#"Position1 option[value=\"disabled\"]").prop("disabled",true); 
}); 
+0

nice、これで作業しました:) – w00

関連する問題