2017-10-19 17 views
0

以前に選択されたが現在ドロップダウンリストのソースから削除されている値をドロップダウンリストに表示することを許可します。空白を表示する代わりに。ドロップダウンリストはグリッド列にあります。DropDownListが選択されている場合は空白値を表示する値がない

グリッド:

... 
columns.ForeignKey(p => p.CurrentCategory, @Model.LookupCategory, "CategoryName", "CategoryName").Width(160); 
... 

テンプレートエディタ

@using System.Collections 

@(
Html.Kendo().DropDownListFor(m => m)  
     .BindTo((SelectList)ViewData[ViewData.TemplateInfo.GetFullHtmlFieldName("") + "_Data"]) 
     .ValuePrimitive(true)   
     .AutoWidth(true) 
) 

そこでさらに詳細に説明する:CurrentCategory列はテキスト列(不ID列)であり、ユーザーができLookupCategoryで見つかった項目のリストから選択します。ただし、アイテムがLookupCategoryから削除されても、ユーザーがCurrentCategoryの値をすでに選択していたインスタンスでは値は表示されます。

現在の行は、それが空白として表示されているLookupCategoryリストにないCurrentCategory値が含まれている場合。

おそらく私は代わりにコンボボックスを使用する必要がありますか?

答えて

1

LookupCategoryと削除されたアイテムの和集合を含む別のプロパティAllCategoryをビューモデルに追加することができます。 このプロパティはグリッドによってメニュー選択をバインドするために使用され、LookupCategoryプロパティがドロップダウンソースとして使用されます。

外部キー列テンプレートを使用して2つを区別する方法を以下に示します。

columns.ForeignKey(p => p.CurrentCategory, Model.AllCategory, "CategoryName", "CategoryName") 
     .EditorViewData(new {lookupCategory = Model.LookupCategory}) 
.Width(160); 


@using System.Collections 

@(
Html.Kendo().DropDownListFor(m => m)  
     .BindTo((SelectList) ViewData["lookupCategory"])   
     .ValuePrimitive(true)   
     .AutoWidth(true) 
) 
+0

おかげで、これは動作します。 ViewDataの使用を避け、モデルから直接移入する方法はありませんか? – Reafidy

+1

私はそうは思わない –

関連する問題