2011-01-13 10 views
1

私は複合キーを持つグリッドを持っています:OrderId、ItemID。 グリッドを更新するとき - public ActionResult UpdateItemGridAjax(int OrderID, string ItemID)グリッドから両方の値を取得します。Telerik ASP.NET MVC2グリッド複合キーを使用した削除機能

私は私が最初のものだけを取得行を削除:

public ActionResult DeleteItemGridAjax(int OrderID, string ItemID) 

なぜそれが起こるとどのように私は削除された行のアイテムID値を取得することができますか?

グリッドの定義:

<%= 
       Html.Telerik().Grid<ItemsInOrderPOCO>() 

        .Name("ItemsInOrderGrid") 
            .DataKeys(dataKeys => 
            { 
             dataKeys.Add(e => e.OrderID); 
             dataKeys.Add(e => e.ItemID); 
            }) 

        .ToolBar(commands => commands.Insert()) 
        .DataBinding(dataBinding => 
         { 
         dataBinding.Ajax() //Ajax binding 

       .Select("SelectItemGridAjax", "Orders", new { OrderID = Model.myOrder.OrderID }) 
       .Insert("InsertItemGridAjax", "Orders", new { OrderID = Model.myOrder.OrderID }) 

       .Update("UpdateItemGridAjax", "Orders") 

       .Delete("DeleteItemGridAjax", "Orders"); 
         }) 
        .Columns(c => 
         { 
          c.Bound(o => o.ItemID); 
          c.Bound(o => o.OrderID).Column.Visible = false; 
          c.Bound(o => o.ItemDescription); 
          c.Bound(o => o.NumOfItems); 
          c.Bound(o => o.CostOfItem); 
          c.Bound(o => o.TotalCost); 
          c.Bound(o => o.SupplyDate); 
          c.Command(commands => 
           { 
            commands.Edit(); 
            commands.Delete(); 
           }).Width(180).Title("Upadte"); 
         }) 

答えて

3

第二の鍵は、アイテムID、むしろIDとして返されます。あなたが期待するものを得るためのより良いチャンスを与える

 .DataKeys(dataKeys => 
      { 
       dataKeys.Add(e => e.OrderID).RouteKey("OrderID"); 
       dataKeys.Add(e => e.ActivityID).RouteKey("ActivityID"); 
      }) 

:コードでそれを定義する方法があります。

+0

自分自身へのコメント。私はこのコードが削除で動作しないと少なくとも1回は見てきましたが、私はまだActivityIDの代わりにOrderIDとidを取得しています。 – Dani

関連する問題