2016-03-24 12 views
0

私は剣道のグリッドグリッドを持っています。MVC剣道グリッドマルチセレクションコラム

私は列の1つを値リストにします。例えば

私のデータオブジェクト:

public TestObject() 
{ 
    public int TestID {get; set;} 
    public string MyTest {get; set;} 
    public string MyCategory {get; set;} 
    public string Description {get; set;} 
} 

剣道グリッド:

@(Html.Kendo().Grid<MyProject.BusinessObjects.TestObject>() 
     .Name("myGrid") 
     .Columns(col => 
     { 
      col.Bound(x => x.TestID); 
      col.Bound(x => x.MyTest); 
      col.Bound(x => x.MyCategory); 
      col.Bound(x => x.Description); 
      col.Command(x => { x.Edit(); x.Destroy(); }); 
     }) 
     .Selectable() 
     .Scrollable() 
     .ToolBar(x => x.Create()) 
     .Sortable() 
     .Editable(e => e.Mode(GridEditMode.PopUp)) 
     .Pageable(p => p 
      .Refresh(true) 
      .PageSizes(true) 
      .ButtonCount(5)) 
     .DataSource(d => d 
      .Ajax() 
      .Read(r => r.Action("GetData", "MyController")) 
      .PageSize(20) 
      .Model(m => 
      { 
       m.Id(x => x.TestID);      
      })  
      .Update("UpdateData", "MyController") 
      .Create("CreateData", "MyController") 
      .Destroy("DeleteData", "MyController") 
     ) 
    ) 

今、ユーザーが、私はMyCategoryが有効な値のリストを表示したいレコードを追加または編集に移行します。 (基本的にMyCategoryはFKですが、DBではそのように強制されません)

どのように剣道グリッドでこれを達成できますか?私は剣道のオンラインの例に従おうとしていましたが、ViewStateオブジェクトを作成してグリッドがその特定のオブジェクトとどのようにやりとりするかについて、接続が不明です。
(剣道グリッド編集のカスタムエディタの例)

答えて

0

DB内にfkする必要はありません。

columns.ForeignKey(p => p.MyCategory, (System.Collections.IEnumerable)ViewData["MyCategory"], "Id", "MyCategoryText"); 

とコントローラインデックスページでは、ビューデータを設定する必要があります。 DBからデータを取得することも、値をハードコードすることもできます。

public ActionResult Index() 
    {    
     ViewData["MyCategory"] = GetMyCategoryList(); 
     return View(); 
    } 

public List<SelectListItem> GetMyCategoryList() 
    { 
     List<SelectListItem> lstMyCategory = new List<SelectListItem>(); 
     var data = new[]{ 
      new SelectListItem{ Id=1,MyCategoryText="Federal"}, 
      new SelectListItem{ Id=2,MyCategoryText="General"}, 
      new SelectListItem{ Id=3,MyCategoryText="Cash"},     
     }; 
     lstMyCategory = data.ToList(); 
     return lstMyCategory; 
    } 
+0

これはほとんど私がしたいことを達成します。ユーザーがルージュカテゴリを保存できないようにデータを適用します。しかし、追加/編集からカテゴリフィールドを剣道の例のような値のドロップダウンにしたいと思います。 – PrivateJoker

関連する問題